欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > 菜鸟之路Day30一一MySQL之DMLDQL

菜鸟之路Day30一一MySQL之DMLDQL

2025/5/13 10:31:00 来源:https://blog.csdn.net/2302_77782043/article/details/147815578  浏览:    关键词:菜鸟之路Day30一一MySQL之DMLDQL

菜鸟之路Day30一一MySQL之DML&DQL

作者:blue

时间:2025.5.8

文章目录

  • 菜鸟之路Day30一一MySQL之DML&DQL
  • 一.DML
    • 0.概述
    • 1.插入语句(insert)
    • 2.更新语句(update)
    • 3.删除语句(delete)
  • 二.DQL
    • 1.基本查询
    • 2.条件查询
    • 3.聚合函数
    • 4.分组查询
    • 5.排序查询
    • 6.分页查询

一.DML

0.概述

DML(数据操作语言),用来对数据库中表的数据记录进行增,删,改操作

1.插入语句(insert)

指定字段添加数据: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.为tb_emp表,字段(username,name,gender)插入一条数据
insert into tb_emp(username,name,gender,create_time,update_time)values ('xiaomu','木',2,now(),now());-- 2.为tb_emp表,全部字段插入一条数据
insert into tb_empvalues (null,'xiaolan','12345','蓝',1,null,null,null,now(),now());-- 3.为tb_emp表,字段(username,name,gender)批量插入数据
insert into tb_emp(username,name,gender,create_time,update_time)
values ('ning','宁',2,now(),now()),('lan','岚',1,now(),now());

2.更新语句(update)

修改数据:update 表名 set 字段名1=1,字段名2=2,[where 条件];

练习:

-- 1.将tb_emp表,id为2的用户,用户名改成zhangsan
update tb_emp set username='zhangsan',update_time=now() where id=2;-- 2.将tb_emp表,所有用户的入职时间改为2010-01-01
update tb_emp set entry_time='2010-01-01',update_time=now();

注意:在更新语句中如果没有加条件就会更新整张表的数据

3.删除语句(delete)

删除数据:delete from 表名 [where 条件];

练习:

-- 1.将tb_emp表中,id为1的用户删除
delete from tb_emp where id=1;-- 2.将tb_emp表中,所有用户都删除
delete from tb_emp;

DELETE语句不能删除某一个字段的值(如果要操作,可以使用UPDATE,将该字段的值置为NULL)

先插入十五条数据,做为数据库中可被查询的数据

-- 插入数据 1
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (1,'john_doe','password123','John Doe', 1, 'john.jpg', 1, '2012-05-15', now(), now());-- 插入数据 2
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (2,'jane_smith','securepass','Jane Smith', 2, 'jane.jpg', 2, '2015-09-20', now(), now());-- 插入数据 3
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (3,'mike_johnson','mypassword','Mike Johnson', 1, 'mike.jpg', 3, '2018-03-10', now(), now());-- 插入数据 4
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (4,'lisa_brown','pass1234','Lisa Brown', 2, 'lisa.jpg', 1, '2019-11-25', now(), now());-- 插入数据 5
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (5,'david_wilson','secretpass','David Wilson', 1, 'david.jpg', 2, '2020-07-08', now(), now());-- 插入数据 6
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (6,'susan_lee','susanpass','Susan Lee', 2, 'susan.jpg', 3, '2013-06-12', now(), now());-- 插入数据 7
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (7,'tom_wang','tom1234','Tom Wang', 1, 'tom.jpg', 4, '2016-08-18', now(), now());-- 插入数据 8
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (8,'amy_zhang','amysecure','Amy Zhang', 2, 'amy.jpg', 1, '2017-10-22', now(), now());-- 插入数据 9
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (9,'peter_liu','peterpass','Peter Liu', 1, 'peter.jpg', 2, '2021-02-03', now(), now());-- 插入数据 10
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (10,'emily_zhou','emily123','Emily Zhou', 2, 'emily.jpg', 3, '2022-04-16', now(), now());-- 插入数据 11
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (11,'jack_chen','jackpass','Jack Chen', 1, 'jack.jpg', 4, '2014-07-28', now(), now());-- 插入数据 12
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (12,'linda_wu','lindasecure','Linda Wu', 2, 'linda.jpg', 1, '2019-01-09', now(), now());-- 插入数据 13
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (13,'brian_huang','brianpass','Brian Huang', 1, 'brian.jpg', 2, '2020-05-21', now(), now());-- 插入数据 14
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (14,'grace_he','grace123','Grace He', 2, 'grace.jpg', 3, '2023-03-14', now(), now());-- 插入数据 15
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (15,'kevin_zhang','kevinpass','Kevin Zhang', 1, 'kevin.jpg', 4, '2011-09-06', now(), now());

二.DQL

DQL用来查询数据库中的数据

1.基本查询

查询多个字段:select 字段1,字段2,字段3 from 表名;查询所有字段(通配符):select * from 表名;设置别名:select 字段1 [as 别名1],字段2 [as 别名2]from 表名;去除重复记录:select distinct 字段列表 from 表名;

练习:

-- 1.查询指定字段name,entry_time 并返回
select name,entry_time from tb_emp;-- 2.查询表所有内容
select * from tb_emp;-- 3.查询指定字段name,entry_time 并取别名 姓名,入职日期
select name as '姓名',entry_time as '入职日期' from tb_emp;-- 4.查询员工关联了哪几种职业(不要重复)
select distinct job from tb_emp

2.条件查询

select 字段 from 表名 where 条件

在这里插入图片描述

部分练习:

-- 5.查询id为6的员工
select * from tb_emp where id=6;-- 6.查询id小于6的员工信息
select * from tb_emp where id<6;-- 7.查询id在6-10之间的员工信息
select * from tb_emp where id>=6 and id<=10;select * from tb_emp where id between 6 and 10;

3.聚合函数

介绍:将一列数据作为一个整体,进行纵向计算

select 聚合函数(字段列表) from 表名;
函数功能
count统计数量
max最大值
min最小值
avg平均值
sum求和

练习:

-- 8.统计员工数量
select count(*) from tb_emp;-- 9.查询最早入职员工
select min(entry_time) from tb_emp;-- 10.查询最晚入职员工
select max(entry_time) from tb_emp;-- 11.求所有员工id总和
select sum(id) from tb_emp;-- 12.求所有员工id平均数
select avg(id) from tb_emp;

注意:null值不参与所有聚合函数运算

统计数量可以使用:count(*) count(字段) count(常量),推荐使用第一种

4.分组查询

分组查询:select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];

练习:

-- 13.根据性别分组,统计男性和女性员工的数量 - count(*)
select gender,count(*) from tb_emp group by gender;-- 14.先查询入职时间在‘2020-01-01’(包含)以前的员工,并对结果根据职位分组,获取员工数量大于等于2的职位
select job,count(*) from tb_emp where entry_time <= '2020-01-01' group by job having count(*) >= 2;

Q:where与having的区别

A:1.执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。

2.判断条件不同:where不能对聚合函数进行判断,而having可以

注意事项

分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义

执行顺序:where>聚合函数>having

5.排序查询

select 字段列表 from 表名 [where 条件列表] [group by 分组字段] order by 字段1 排序方式1,字段2 排序方式2;-- 排序方式:ASC:升序(默认值)	DESC:降序

练习:

-- 15.根据入职时间对员工进行,升序排序
select * from tb_emp order by entry_time ASC;-- 16.根据入职时间对员工进行,降序排序
select * from tb_emp order by entry_time DESC;-- 17.根据入职时间对员工进行升序排序,若入职时间相同,根据更新时间降序排序
select * from tb_emp order by entry_time ASC,update_time DESC;

注意事项:如果是多字段排序,当第一个字段值相同时,才会对第二个字段进行排序

6.分页查询

select 字段列表 from 表名 limit 起始索引,查询记录数-- 起始索引 = (页码-1)* 每页记录数

练习:

-- 18.查询第一页,展示5条记录
select * from tb_emp limit 0,5;-- 19.查询第二页,展示5条记录
select * from tb_emp limit 5,5;-- 20.查询第三页,展示5条记录
select * from tb_emp limit 10,5;

注意:如果查询的是第一页的数据

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词