mysql中的增删改查

数据库

创建

                            createdatabase mydb1;

Create database mydb2 character set gbk;

Create database mydb3 character set gbk COLLATE gbk_chinese_ci;

                    

              查询

查看当前数据库服务器中的所有数据库

show databases;

查看前面创建的mydb2数据库的定义信息

Show  create  database mydb2;

删除前面创建的mydb3数据库

Drop database mydb3;

                    

              修改

                             查看服务器中的数据库,并把mydb2的字符集修改为utf8;

 alter database mydb2character set utf8;

              删除     

drop database mydb3;

                                         

              *其他:

查看当前使用的数据库

select database();

                            切换数据库

use mydb2;


常用数据类型:

                     int:整型    

                     double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;

                     char:固定长度字符串类型; char(10)       

                     varchar:可变长度字符串类型;varchar(10)

                     text:字符串类型;

                     blob:字节类型;

                     date:日期类型,格式为:yyyy-MM-dd;

                     time:时间类型,格式为:hh:mm:ss

                     timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss  会自动赋值

                     datetime:日期时间类型 yyyy-MM-dd hh:mm:ss

 insert

语法: INSERT INTO 表名(列名1,列名2 ...)VALUES(列值1,列值2...);

update

 语法:UPDATE 表名 SET 列名1=列值1,列名2=列值2 。。。 WHERE 列名=值

delete

语法: DELETE FROM 表名 【WHERE 列名=值】

 DQL操作

DQL数据查询语言(重要)

数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。

查询返回的结果集是一张虚拟表。

查询关键字:SELECT

语法: SELECT 列名1,列名2,…  FROM表名

【WHERE --> GROUP BY -->HAVING--> ORDER BY】

语法:

SELECT selection_list /*要查询的列名称*/

  FROM table_list /*要查询的表名称*/

  WHERE condition /*行条件*/

  GROUP BY grouping_columns /*对结果分组*/

  HAVING condition /*分组后的行条件*/

  ORDER BY sorting_columns /*对结果分组*/

  LIMIT offset_start, row_count /*结果限定*/

条件查询

Ø  条件查询介绍

条件查询就是在查询时给出WHERE子句,在WHERE子句中可以使用如下运算符及关键字:

l  =、!=、<>、<、<=、>、>=;

l  BETWEEN…AND;    

l  IN(set);

l  IS NULL; IS NOT NULL

l  AND;         

l  OR;

NOT;

模糊查询

当想查询姓名中包含a字母的学生时就需要使用模糊查询了。模糊查询需要使用关键字LIKE。

通配符:

_ 任意一个字符

     %:任意0~n个字符

字段控制查询

Ø  去除重复记录
去除重复记录(两行或两行以上记录中系列的上的数据都相同),例如emp表中sal字段就存在相同的记录。当只查询emp表的sal字段时,那么会出现重复记录,那么想去除重复记录,需要使用DISTINCT:

 聚合函数  sum avg max min count

聚合函数是用来做纵向运算的函数:

l  COUNT():统计指定列不为NULL的记录行数;

l  MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;

l  MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;

l  SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;

AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0

Ø  SUM和AVG

当需要纵向求和时使用sum()函数。

l  查询所有雇员月薪和:

SELECT SUM(sal) FROM emp;

l  查询所有雇员月薪和,以及所有雇员佣金和:

SELECT SUM(sal), SUM(comm) FROMemp;

l  查询所有雇员月薪+佣金和:

SELECT SUM(sal+IFNULL(comm,0))FROM emp;

l  统计所有员工平均工资:

SELECT AVG(sal) FROM emp;

Ø  MAX和MIN

l  查询最高工资和最低工资:

SELECT MAX(sal), MIN(sal) FROMemp;

分组查询

当需要分组查询时需要使用GROUP BY子句,例如查询每个部门的工资和,这说明要使用部门来分组。比如查询男生的人数和女生的人数,需要按照性别分组。

Ø  分组查询

l  查询每个部门的部门编号和每个部门的工资和:

SELECT deptno, SUM(sal)

FROM emp

GROUP BY deptno;

l  查询每个部门的部门编号以及每个部门的人数:

SELECT deptno,COUNT(*)

FROM emp

GROUP BY deptno;

l  查询每个部门的部门编号以及每个部门工资大于1500的人数:

SELECT deptno,COUNT(*)

FROM emp

WHERE sal>1500

GROUP BY deptno;

Ø  HAVING子句

l  查询工资总和大于9000的部门编号以及工资和:

SELECT deptno, SUM(sal)

FROM emp

GROUP BY deptno

HAVING SUM(sal) > 9000;

       注:having与where的区别:

              1.having是在分组后对数据进行过滤.

               where是在分组前对数据进行过滤   

2.having后面可以使用聚合函数(统计函数)

        where后面不可以使用聚合函数。

WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组;而HAVING是对分组后数据的约束。

l  查询工资大于1500的,并且工资总和大于6000的部门编号以及工资和,,并且按照工资总额由高到低排序。

SELECT deptno,SUM(sal)

FROM emp

WHERE sal > 1500

GROUP BY deptno

HAVING SUM(sal) > 6000 ;

LIMIT  方言

LIMIT用来限定查询结果的起始行,以及总行数。

Ø  查询5行记录,起始行从0开始

SELECT * FROM emp LIMIT 0, 5;

注意,起始行从0开始,即第一行开始

Ø  查询10行记录,起始行从3开始

SELECT* FROM emp LIMIT 3, 10;

Ø  分页查询

如果一页记录为10条,希望查看第3页记录应该怎么查呢?

l  第一页记录起始行为0,一共查询10行;

l  第二页记录起始行为10,一共查询10行;

l  第三页记录起始行为20,一共查询10行;

Ø  查询代码的书写顺序和执行顺序

       查询语句书写顺序:select – from- where- group by- having- order by-limit

       查询语句执行顺序:from - where -group by - having - select - orderby-limit

 数据的完整性

作用:保证插入到数据库中的数据是正确的。

确保数据的完整性 = 在创建表时给表中添加约束

完整性的分类:

Ø  实体完整性

Ø  域完整性

引用完整性

猜你喜欢

转载自blog.csdn.net/qq_40408317/article/details/80079200