0


MySQL 篇-深入了解 DML、DQL 语言(二)

🔥博客主页: 【小扳_-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

标签: mysql 数据库 sql

本文转载自: https://blog.csdn.net/Tingfeng__/article/details/136332261
版权归原作者 小扳 所有, 如有侵权,请联系我们删除。

“MySQL 篇-深入了解 DML、DQL 语言(二)”的评论:

还没有评论