🔥博客主页: 【小扳_-CSDN博客】**
❤感谢大家点赞👍收藏⭐评论✍**
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,'女');
操作结果为:
-- 批量增添指定字段数据 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 时,取值 fvalue case 表达式 when value1 then result1 [when value2 then result2] [else result] end
版权归原作者 小扳 所有, 如有侵权,请联系我们删除。