目录
五,DML(数据操作语言)--Data Manipulation Language
六,DQL (数据查询语言)--Data Query Language
七,DCL(数据控制语言)--Data Control Language
学习大纲:

1. SQL语句可以单行或多行书写,以分号结尾。
2.SQL语句可以使用空格/缩进来增强语句的可读性。
3. MySQL数据库的SQL语句不区分大小写, 关键字建议使用大写。(统一规范)
4.注释:
●单行注释: -- 注释内容或 # 注释内容(MySQL特有)
●多行注释: /* 注释内容*/




查询所有的表之前,前提是要先进入这个数据库中。(use 数据库名)

注意: [..]为可选参数,最后一个字段后面没有逗号
尝试用上面的伪代码讲下面的表结构创建出来。

注:不要随意在系统库里面进行操作。

MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。

精度:所有位数
标度:小数位数

char的性能较好,(varchar)。有一个计算的过程。(计算字符串的长度)

根据需求创建表(设计合理的数据类型、长度)
设计一张员工信息表,要求如下:
1.编号(纯数字)
2.员工工号 (字符串类型,长度不超过10位)
3. 员工姓名(字符串类型,长度不超过10位)
4.性别(男/女,存储一一个汉字)
5.年龄(正常人年龄,不可能存储负数)
6. 身份证号(二代身份证号均为18位,身份证中有X这样的字符)
7.入职时间 (取值年月日即可)
![]()
为emp表增加一个新的字段”昵称"为nickname,类型为varchar(20)

将emp表的nickname字段修改为username,类型为varchar(30)

![]()
将emp表的字段username删除

![]()
将emp表的表名修改为employee




将原有的数据全部删除,重新创建一张新表,表中无任何数据。


日常开发效率低,使用不直观。

用于对数据库中表的数据记录进行增删改操作

![]()
![]()

注意:
●插入数据时,指定的字段顺序需要与值的顺序是一一对应的。.
●字符串和日期型数据应该包含在引号中。
●插入的数据大小,应该在字段的规定范围内。


![]()
注意:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。



如果不带where条件,代表修改整张表。 ![]()
![]()
注意:
DELETE语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。
DELETE语句不能删除某一个字段的值(可以使 用UPDATE)。

用来查询数据库中表的记录。


![]()
- create table emp(
- id int comment '编号',
- workno varchar(10) comment '工号',
- name varchar(10) comment '姓名',
- gender char(1) comment '性别',
- age tinyint unsigned comment '年龄',
- idcard char(10) comment '身份证号',
- workaddress varchar(50) comment '工作地址',
- entrydata date comment '入职时间'
- ) comment '员工表';
-
- insert into emp(id, workno, name, gender, age, idcard, workaddress, entrydata)
- values (1,'1','y11','m',29,'1234','北京','2008-01-01'),
- (2,'2','y12','m',30,'2234','北京','2008-03-01'),
- (3,'3','y13','w',19,'3234','北京','2008-05-01'),
- (4,'4','y14','m',56,'4234','北京','2008-07-01'),
- (5,'5','y15','w',25,'5234','北京','2008-08-01'),
- (6,'6','y16','m',35,'6234','北京','2009-01-01'),
- (7,'7','y17','w',38,'7234','北京','2002-01-01'),
- (8,'8','y18','m',45,'8234','北京','2005-06-01'),
- (9,'9','y19','w',29,'9234','北京','2008-01-01'),
- (10,'10','y10','m',21,'0234','北京','2007-03-01');


案例:

1,

2,

尽量不写*,不直观,会影响效率。
3,

as可写可不写。
4,


不能用别名去查重。
![]()


案例:
1, 
2,
4,


不能混合使用关键字。

6,
7,


between后面接最小值,and后面接最大值。
9,
10,

11,查询身份证号第一位是9的员工信息



1)将一列数据作为一个整体,进行纵向计算。
2)常见聚合函数:

3)语法:
![]()
案例:
注意: null值不参与所有聚合函数运算。
1,


2,自动保留四位小数
3,
5,
![]()
where与having区别
执行时机不同: where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
判断条件不同: where不能对聚合函数进行判断,而having可以。
案例:

1,

3,
注意
●执行顺序: where >聚合函数> having。
●分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。

![]()
排序方式
ASC:升序(默认值)
DESC:降序
注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。
案例:

1,
3,

![]()
注意
●起始索引从0开始,起始索引= (查询页码-1) *每页显示记录数。
●分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
●如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10。
案例:

1,
2,



验证!!!!
用来管理数据库用户,控制数据库访问权限。
主要是管理两个方面。
1,哪些用户可以访问该数据库服务器。(用户管理)
2,该用户可以访问哪些数据库。(权限控制)

案例:

注意:
●主机名可以使用%通配。
●这类SQL语句开发人员操作的比较少,主要是DBA ( Database Administrator 数据库管理员)使用。



还想知道更多,就去查官方文件。


无任何权限,仅仅是能登录数据库,连接数据库而已。


用命令行查看时,要先退出,再进去查看。不然的话,权限仍然未变。
注意:
●多个权限之间,使用逗号分隔
●授权时,数据库名和表名可以使用*进行通配,代表所有。