DML-介绍
DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增删改操作。
三个主要的关键词
添加数据 insert
修改数据 update
删除数据 delete
DML-添加数据
1、给指定字段添加数据
insert into 表名 (字段名1,字段名2,....) values (值1,值2);
2、给全部字段添加数据
insert into 表名 (值1,值2,值3)
3、批量添加数据
insert into 表名 (字段名1,字段名2,....) values (值1,值2,....),(值1,值2)...
注意事项:
- 插入数据时,指定字段顺序需要与值的顺序是一一对应的。
- 字符串和日期型数据应该包含在引导中。
- 插入的数据大小,应该在字段的规定范围内。
DML-修改数据
update 表名 set 字段名1 = 值1 , 字段名2 = 值2, ... [where 条件];
注意:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。
情况一:
情况二:
DML-删除数据
delete from 表名 [where 条件]
注意:
- delete语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。
- delete语句不能删除某个字段的值(可以使用update替代)
情况一:
情况二:
DQL-查询数据
DQL-介绍:
DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。
查询关键字:select
语法:
select
字段列表
from
表名列表
where
条件列表
group by
分组列表
having
分组后条件列表
order by
排序字段列表
limit
分页参数
基础查询
1、查询多个字段
select * from 表名; // 查询所有字段
2、查询指定字段
select 字段1,字段2,字段3,.... 表名
3、设置别名
select 字段1 [as 别名1] ,字段2[as 别名2] ... from 表名;
4、去除重复记录
select distinct 字段列表 from 表名
条件查询
语法:select 字段列表 from 表名 where 条件列表;
条件:
DQL-聚合函数
什么是聚合函数?
回答:将一列数据作为一个整体,进行纵向计算。或理解为对一组数据进行计算并返回单一值的函数。
核心知识点:
1、一列数据为一个整体,意思就是:表中的一个字段的一组数据。
2、通过聚合函数计算后,会得到一个单一的值。
3、null值是不会参数所有的聚合函数运算的。
常见的聚合函数
语法
count()聚合函数
select 聚合函数(字段列表) from 表名
注意:下面可以看见,查询身份证的数量时,因为有null的存在,所以数据量变少了,因为null值是不参与计算的
注意:count函数只允许接受单个字段或使用 * 来表示所有行
max聚合函数
select max(字段) from 表名; 【max函数只能接受一个字段】
min函数
select min(字段) from 表名 【min函数只能接受一个字段】
avg函数
select avg(字段) from 表名
sum函数
select sum(字段) from 表名
DQL-分组查询
语法格式:
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];
where 与 having的区别
1、执行时机不同:where 是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤;
2、判断条件不同:where不能对聚合函数进行判断,而having可以。
示例1:性别分组
示例2:查询出男,女分别有多少人
示例3:查询出男,女的平均年龄
示例4:查询年龄大于45,且同一工作地址人数大于20的地址信息
注意:
1、执行顺序为:where > 聚合函数 > having
2、分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
例如:在mysql8.0版本的中,直接就报错了,此时是ONLY_FULL_GROUP_BY SQL模式
那么你可以先临时禁用该模式,让其不报错:
SET SESSION sql_mode = (SELECT REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''));
然后继续执行:可以看见下面的结果,name将毫无意义
DQL-排序查询
语法格式:
select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2
示例1:按照年龄升序排序
注意:如果是升序排序 asc,是mysql的默认排序方式,所以在编写语句时,可以省略asc
示例2:根据入职时间,进行降序排序
示例3:根据年龄进行降序排序,如果年龄相同,再按照入职时间进行降序排序
注意:如果是多字段排序,当第一个字段值相同时,才会根据第二字段进行排序
DQL-分页查询
语句格式:
select 字段列表 from 表名 limit 起始索引,查询记录数;
注意事项:
1、起始索引从0开始。 起始索引 = (查询页码 - 1 ) * 每页显示记录数。
2、分页查询是数据库的方言,不同的数据库有不同的实现方式,MySQL中是limit。
3、如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10。
示例1:查询第一页员工数据,每页展示10条数据
示例2:查询第二页员工数据,每页展示10条数据
DQL-执行顺序
完整的DQL语句:
select
字段列表
from
表名列表
where
条件列表
group
分组字段列表
having
分组后条件列表
order by
排序字段列表
limit
分页参数
执行顺序:
1、from
2、where
3、group by
4、select 字段列表
5、order by
6、limit
DCL-数据控制语言
作用:用来管理数据库用户,控制数据库的访问权限。
DCL-查询用户
use mysql;
select * from user;
DCL-创建用户
create user '用户名'@'主机名' identified by '密码';
注意:刚创建好的用户是没有分配权限的。
DCL-修改用户密码
alter user '用户名'@'主机名' identified with 加密方式 by '新密码';
注意:mysql_native_password 是加密方式
DCL-删除用户
drop user '用户名'@'主机名';
注意:
1、主机名可以使用%通配。
2、这类sql开发人员操作的比较少,主要是数据库管理员使用。
DCL-权限控制
mysql中定义了很多种权限,但是常用的就是以下几种:
DCL-查询权限
show grants for '用户名'@'主机名';
DCL-授予权限
grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
DCL-撤销权限
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';
版权归原作者 鸭子一定成为大牛 所有, 如有侵权,请联系我们删除。