MySQL:DML数据操作语言(添加,删除,修改),DDL数据查询语言(条件查询,分组查询,排序查询,分页查询)

目录

1.DML(数据操作语言)

DML英文全称是Data Manipulation Lanquage(数据操作语言),用来对数据库中表的数据记录进行增删改操作。

1.添加数据

1.给指定字段添加数据

sql 复制代码
INSERT INTO 表名(字段名1,字段名2,...) VALUES (值1,值2,...);

2.给全部字段添加数据

sql 复制代码
INSERT INTO 表名 VALUES(值1,值2,...);

3.批量添加数据

sql 复制代码
INSERT INTO 表名(字段名1,字段名2,...) VALUES (值1,值2,...),(值1,值2,...),(值1,值2,...);
sql 复制代码
INSERT INTO 表名 VALUES (值1,值2,...),(值1,值2,...),(值1,值2,...);

注意:

①插入数据时,指定的字段顺序需要与值的顺序是一一对应的

字符串和日期型数据应该包含在引号中

③插入的数据大小,应该在字段的规定范围内.

2.修改数据

sql 复制代码
UPDATE 表名 SET 字段名1=值1,字段名2=值2,....[WHERE 条件];

注意:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据

3.删除数据

sql 复制代码
DELETE FROM 表名[WHERE 条件];

注意:

  • DELETE语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据
  • DELETE语句不能删除某一个字段的值(可以使用UPDATE)。

2.DQL(数据查询语言)

DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。

1.DQL-语法

2.基本查询

1.查询多个字段:

sql 复制代码
SELECT 字段1,字段2,字段3 ... FROM 表名;
SELECT * FROM 表名;

2.设置别名:

sql 复制代码
SELECT 字段1 [AS 别名1],字段2 [AS 别名2]...FROM 表名;

关键字:AS

3.去除重复记录:

sql 复制代码
SELECT DISTINCT 字段列表 FROM 表名;

关键字:DISTINCT

3.条件查询(WHERE)

1.语法:

sql 复制代码
SELECT 字段列表 FROM 表名 WHERE 条件列表;

2.条件:


3.案例:

  1. 查询年龄小于22的员工
sql 复制代码
select *
from employee
where age < 22;
  1. 查询有身份证号的员工
sql 复制代码
select *
from employee
where idcard is not null;
  1. 查询年龄不等于88岁的员工
sql 复制代码
select *
from employee
where age <> 88;
  1. 查询年龄在15岁到25岁之间的员工信息
sql 复制代码
select *
from employee
where age between 15 and 25;
  1. 查询性别为女 且 年龄小于25岁的员工信息
sql 复制代码
select *
from employee
where gender = '女'
  and age < 25;
  1. 查询年龄等于21,45,88的员工信息
sql 复制代码
select *
from employee
where age in (21, 45, 88);
  1. 查询姓名为两个字的员工信息
sql 复制代码
select *
from employee
where name like '__';
  1. 查询身份证号最后一位是X的员工信息
sql 复制代码
select *
from employee
where idcard like '%X';

4.聚合函数

1.介绍

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

2.常见聚合函数

3.语法

sql 复制代码
SELECT 聚合函数(字段列表) FROM 表名;

4.案例

  1. 统计员工数量
sql 复制代码
select count(*)
from employee;
  1. 统计员工的平均年龄
sql 复制代码
select avg(age)
from employee;
  1. 统计员工的最大年龄
sql 复制代码
select max(age)
from employee;
  1. 统计员工的最小年龄
sql 复制代码
select min(age)
from employee;
  1. 统计北京地区的员工年龄之和
sql 复制代码
select sum(employee.age)
from employee
where work_address = '北京';

5.分组查询(GROUP BY)

1.语法

sql 复制代码
SELECT 字段列表 FROM表名[WHERE 条件] GROUP BY 分组字段名[HAVING 分组后过滤条件];

2.where与having区别

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

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

注意:

  • 执行顺序: where >聚合函数>having
  • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义

3.案例

  1. 根据性别分组,统计男性员工和女性员工的数量
sql 复制代码
select employee.gender, count(*)
from employee
group by gender;
  1. 根据性别分组,统计男性员工 和 女性员工的平均年龄
sql 复制代码
select employee.gender, avg(age)
from employee
group by gender;
  1. 查询年龄小于45的员工,根据工作地址分组,获取员工数量小于等于3的工作地址
sql 复制代码
select employee.work_address, count(*)
from employee
where age < 45
group by work_address
having count(*) <= 3;

6.排序查询(ORDER BY)

1.语法

sql 复制代码
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2;

2.排序方式

  • ASC:升序(默认值)
  • DESC:降序

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

3.案例

  1. 根据年龄对公司的员工进行升序排序
sql 复制代码
select *
from employee
order by age asc;
  1. 根据入职时间,对员工进行降序排序
sql 复制代码
select *
from employee
order by entrydate desc;
  1. 根据年龄对公司的员工进行升序排序,年龄相同,再按照入职时间进行降序排序
sql 复制代码
select *
from employee
order by age asc, entrydate desc;

7.分页查询(LIMIT)

1.语法

sql 复制代码
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;

注意:

  • 起始索引从0开始, 起始索引 = ( 查询页码 − 1 ) ∗ 每页显示记录数 起始索引=(查询页码-1)*每页显示记录数 起始索引=(查询页码−1)∗每页显示记录数
  • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT
  • 如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10。

2.案例

  1. 查询第1页员工数据,每页展示10条记录
sql 复制代码
select * from employee limit 0,10;
  1. 查询第2页员工数据,每页展示10条记录
sql 复制代码
select * from employee limit 10,10;
相关推荐
岁岁种桃花儿1 分钟前
MySQL从入门到精通系列:InnoDB记录存储结构
数据库·mysql
jiunian_cn1 小时前
【Redis】hash数据类型相关指令
数据库·redis·哈希算法
冉冰学姐1 小时前
SSM在线影评网站平台82ap4(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm框架·在线影评平台·影片分类
Exquisite.2 小时前
企业高性能web服务器(4)
运维·服务器·前端·网络·mysql
知识分享小能手3 小时前
SQL Server 2019入门学习教程,从入门到精通,SQL Server 2019数据库的操作(2)
数据库·学习·sqlserver
踩坑小念4 小时前
秒杀场景下如何处理redis扣除状态不一致问题
数据库·redis·分布式·缓存·秒杀
萧曵 丶4 小时前
MySQL 语句书写顺序与执行顺序对比速记表
数据库·mysql
Wiktok5 小时前
MySQL的常用数据类型
数据库·mysql
曹牧5 小时前
Oracle 表闪回(Flashback Table)
数据库·oracle
J_liaty5 小时前
Redis 超详细入门教程:从零基础到实战精通
数据库·redis·缓存