0


MySQL-数据操作语言

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 '用户名'@'主机名';

标签: mysql 数据库

本文转载自: https://blog.csdn.net/qq_43683281/article/details/140430802
版权归原作者 鸭子一定成为大牛 所有, 如有侵权,请联系我们删除。

“MySQL-数据操作语言”的评论:

还没有评论