🔥博客主页: 【小扳_-CSDN博客】
❤感谢大家点赞👍收藏⭐评论✍
文章目录
1.0 DML、DQL 语言说明
2.0 使用 DML 实现对数据管理和操作
2.1 DML - 增添数据 insert
2.2 DML - 修改数据 update
2.3 DML - 删除数据 delete
3.0 使用 DQL 实现对数据管理和操作
3.1 DQL - 基本查询
3.2 DQL - 条件查询
3.3 DQL - 分组查询
3.4 DQL - 排序查询
3.5 DQL - 分页查询
4.0 补充相关的函数
1.0 DML、DQL 语言说明
DML (Data Manipulation Language) 是用于管理数据库中数据的语言,用于对数据库中的数据进行增加、删除、修改。常见的 DML 操作包括 INSERT、UPDATE、DELETE 。
DQL (Data Query Language) 是用于查询数据库中数据的语言,用于从数据库中检索所需的数据。常见的 DQL 操作是 SELECT,用于从数据库中检索数据并返回结果集。
简单来说,DML、DQL 是对表中的数据进行操作,其中 DML 对表中的数据操作有:增添、删除、修改操作,而 DQL 对表中的数据操作有:查询操作。 两者结合使用可以实现对数据库的完整管理和操作。
2.0 使用 DML 实现对数据管理和操作
常见的 DML 操作包括 INSERT、UPDATE、DELETE 。
2.1 DML - 增添数据 insert
一、添加表中数据的 SQL 语句:
-- 指定字段添加数据: insert into 表名 (字段名1,字段名2) values (值1,值2);-- 全部字段添加数据: insert into 表名 values (值1,值2,...);-- 批量添加数据 (指定字段): insert into 表名 (字段名1,字段名2) values (值1,值2),(值1,值2);-- 批量添加数据 (全部字段): insert into 表名 values (值1,值2,...),(值1,值2,...);
二、实际需求操作:
1)
-- 指定字段增添数据 insert into tb_user (id,username,name) values (2,'张三','李四');
操作结果为:
2)
-- 全部字段增添数据 insert into tb_user values (3,'呆呆','王五',18,'女');
操作结果为:
3)
-- 批量增添指定字段数据 insert into tb_user (id,username,name) values (5,'白白','天天'),(6,'红红','火火');
操作结果为:
4)
-- 批量增添全部字段数据 insert into tb_user values (9,'恍恍','忽忽',20,'男'),(10,'吱吱','喳喳',30,'男');
操作结果为:
三、注意事项:
1)插入数据时,指定的字段顺序需要与值的顺序是一一对应的。
2)字符串和日期数据应该包含在引号中。
3)插入的数据大小,应该在字段的规定范围内。
2.2 DML - 修改数据 update
一、修改表中数据的 SQL 语句:
-- 修改数据: update 表名 set 字段名1 = 值1,字段名2 = 值2,...[where 条件];
二、实际需求操作:
1)
-- 修改表中的指定的数据: update tb_user set name = '恐龙' where id = 2;
该操作结果为:
2)
-- 修改表中的全部数据: update tb_user set gender = '女';
该操作结果为:
三、注意事项:
修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。
2.3 DML - 删除数据 delete
一、删除表中数据的 SQL 语句:
-- 删除数据: delete from 表名 [where 条件];
二、实际需要操作:
1)
-- 删除表中的指定数据: delete from tb_user where id = 2;
该操作结果为:
2)
-- 删除表中全部数据; delete from tb_user;
该操作结果为:
三、注意事项:
- delete 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。
- delete 语句不能单独删除某一个字段的值(如果要操作,可以使用 update , 将该字段的值置为 null )。
3.0 使用 DQL 实现对数据管理和操作
对表中的数据进行查询操作,主要的操作方式有:基本查询、条件查询、分组查询、排序查询、分页查询。
3.1 DQL - 基本查询
一、对表中数据进行基本查询的 SQL 语句:
-- 查询多个字段: select 字段名1,字段名2,字段名3 from 表名;-- 查询所有字段(通配符): select * from 表名;-- 设置别名: select 字段1 [as 别名1], 字段2 [as 别名2] from 表名;-- 去除重复记录: select distinct 字段列表 from 表名;
二、实际需求操作:
1)
-- 基本查询:查询表中全部数据 select id, username, name, age, gender from tb_user; -- 也可以用 * 来替代 id, username, name, age, gender select * from tb_user;
该操作结果为:
2)
-- 设置别名 select name as 姓名,gender as 性别 from tb_user;
该操作结果为:
3)
-- 去除重复记录 select distinct gender from tb_user;
该操作结果为:
三、注意事项:
* 号代表查询所有字段,在实际开发中尽量少用(不直观、影响效率)。
3.2 DQL - 条件查询
一、对表中数据进行条件查询的 SQL 语句:
-- 条件查询: select 字段列表 from 表名 where 条件列表;
比较运算符:
>:大于
>=:大于等于
<:小于
<=:小于等于
=:等于
<> 或者 !=:不等于
between...and...:在某个范围之内(含最小、最大值)
in(...):在 in 之后的列表中的值,多选一
like 占位符:模糊匹配(_匹配单个字符,% 匹配任意个字符)
is null:是 null
逻辑运算符:
and 或 &&:并且(多个条件同时成立)
or 或 || :或者(多个条件任意一个成立)
not 或 ! :非,不是
二、实际需求操作:
-- 条件查询:查询表中指定的数据 select id, username, name, age, gender from tb_user where id = 2; -- 同样可以用 * 来替代 id, username, name, age, gender select * from tb_user where id = 2;-- 查询 age 为 null 的数据 select * from tb_user where age is null;-- 查询姓李的数据 select * from tb_user where name like '李%';-- 查询姓名为两个字的数据 select * from tb_user where name like '__';-- 查询id为:2,3的数据 select * from tb_user where id in (2,3);-- 查询姓名为李四且年龄为null的数据 select * from tb_user where age is null and name = '李四';
具体操作结果就不过多赘述了。
3.3 DQL - 分组查询
一、对表中数据进行分组查询的 SQL 语句:
-- 分组查询: select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];
补充聚合函数说明:
聚合函数介绍:将一列数据作为一个整体,进行纵向计算。
语法:select 聚合函数(字段列表) from 表名;
主要的聚合函数:
- count:统计数量
- max:最大值
- min:最小值
- avg:平均数
- sum:求和
二、实际需求操作:
1)
-- 根据性别分组,分别统计男、女人数总量 select gender '性别' , count(gender) '数量' from tb_user group by gender;
该操作结果为:
2)
-- 对分完组之后的表进行过滤 having select gender '性别' , count(gender) '数量' from tb_user group by gender having count(gender) > 2;
该操作结果为:
三、注意事项:
分组之后,查询的字段一般为聚合函数与分组字段,查询其他字段无任何意义。
执行顺序:where > 聚合函数 > having 。
where 与 having 区别:
(1)执行时机不同:where 是分组之前进行过滤,不满足 where 条件,不参与分组;而 having 是分组之后对结果进行过滤。
(2)判断条件不同:where 不能对聚合函数进行判断,而 having 可以。
3.4 DQL - 排序查询
一、对表中数据进行排序的 SQL 语句:
-- 排序查询: select 字段列表 from 表名 [where 条件列表] [group by 分组字段] order by 字段1 排序方式1,字段2 排序方式2...;
排序方式:
升序为:asc(默认值)
降序为:desc
二、实际需求操作:
1)
-- 按照 id 进行降序排序 select * from tb_user order by id desc;
该操作结果为:
2)
-- 按照年龄进行降序排序,若年龄相同则按照id降序排序 select * from tb_user order by name desc, id desc;
该操作结果为:
三、注意事项:
如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。
3.5 DQL - 分页查询
一、对表中数据进行分页查询的 SQL 语句:
-- 分页查询 select 字段列表 from 表名 limit 起始索引,查询记录数;
默认起始索引为 0 ,即从 0 开始,公式:起始索引 = (页码 - 1)* 记录数 。
二、实际需求操作:
-- 查询第2页数据,则该起始索引为 3 select * from tb_user limit 3,3;
该操作结果为:
三、注意事项:
(1) 起始索引从 0 开始,起始索引 = (查询页码 - 1) * 每页显示记录数。
(2) 分页查询时数据库的方言,不同的数据库有不同都实现,MySQL 中是 limit 。
(3) 如果查询的是第一页,起始索引可以省略,直接简写为 limit 10 。
4.0 补充相关的函数
if (表达式,tvalue,fvalue):当表达式为 true 时,取值 tvalue;当表达式为 false 时,取值 fvaluecase 表达式 when value1 then result1 [when value2 then result2] [else result] end