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

简介: 本文介绍了MySQL中DML(数据操作语言)和DQL(数据查询语言)的核心用法。DML主要包括插入(insert)、更新(update)和删除(delete)语句,通过具体示例演示了如何对表数据进行增删改操作。DQL则聚焦于数据查询,涵盖基本查询、条件查询、聚合函数、分组查询、排序查询和分页查询等内容。文章通过丰富的SQL语句实例,帮助读者掌握如何高效查询和操作数据库中的数据,适合初学者学习和实践。

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

作者:blue

时间:2025.5.8

[TOC]

一.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_emp
            values (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 条件

image-20250508201810673.png

部分练习:

-- 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;

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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
SQL NoSQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页等详解步骤及常见报错问题所对应的解决方法]
MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页、INSERT INTO SELECT / FROM查询结合精例等详解步骤及常见报错问题所对应的解决方法
|
SQL 关系型数据库 MySQL
MySQL】-DQL(基本、条件、分组、排序、分页)详细版
通过这些查询方法,你可以高效地检索、分析和组织MySQL数据库中的数据,以满足各种应用需求。实践中,理解这些SQL语句的基础知识以及它们如何组合起来进行复杂的数据操作是至关重要的。
377 1
|
SQL 关系型数据库 MySQL
MySQL基础(二)----DML学习
MySQL基础(二)----DML学习
|
SQL 关系型数据库 MySQL
MySQL数据库—DQL查询语句(一篇教会你快速找到想要的数据)
MySQL数据库—DQL查询语句(一篇教会你快速找到想要的数据)
388 1
|
SQL 缓存 关系型数据库
MySQL基础(三)----DQL详解
MySQL基础(三)----DQL详解
|
SQL 关系型数据库 MySQL
MySQL周内训参照2、DDL与DML语句
MySQL周内训参照2、DDL与DML语句
226 1
|
SQL 关系型数据库 MySQL
MySQL DML(数据操作语言)全面指南
MySQL DML(数据操作语言)全面指南
|
SQL 存储 关系型数据库
MySQL数据库—初识数据库 | DDL语句 | DML语句
MySQL数据库—初识数据库 | DDL语句 | DML语句
309 0

推荐镜像

更多