MySQL 之 DQL

目录

一、定义

二、SELECT语句基本语法

三、SELECT语句

四、简单查询

1.WHERE子句

五、IN 查询

六、BETWEEN AND查询

七、Like查询

八、order by 排序

九、group by 分组汇总

十、聚合函数条件


一、定义

SELECT查询语句:

数据查询是指数据库管理系统按照用户指定的条件,从数据库相关表中检索满足条件的数据的过程。

✔SELECT语句主要用于数据的查询检索,是SQL语言的核心,也是使用频率最高的一条语句。 ✔SELECT语句可以让数据库服务器根据用户的要求,从数据库的表中检索出所需要的数据,并按照用户指定的格式进行整理并返回。

二、SELECT语句基本语法

⇱SELECT语句的语法格式如下:

SELECT [ALL | DISTINCT] * | 字段列表

FROM 表名

[WHERE 查询条件]

[GROUP BY 分组字段 [HAVING 分组条件]]

[ORDER BY 排序字段 [ASC | DESC] ]

[LIMIT [初始位置,] 记录数];

三、SELECT语句

⇱select选择字段

1.选择所有字段 SELECT * FROM 表名;

2.选择指定字段 SELECT 字段名1 [, 字段名2, … , 字段名n] FROM 表名;

3.定义字段别名 SELECT 字段名1 [AS] 列标题1 [ , 字段名2 [AS] 列标题2, …] FROM 表名;

四、简单查询

1.WHERE子句

●在实际工作中,大部分查询并不是针对表中所有数据记录的查询,而是要找出满足某些条件的数据记录。此时我们可以在SELECT语句中使用

●WHERE子句,其语法格式如下: SELECT * | 字段列表 FROM 表名 WHERE 查询条件;

下面为大家展示where子句的用法,首先创建一个拥有字段名学号,姓名,专业,年龄,性别的表,表名为"学生表",然后再根据查询条件进行查询。

#查询学生表中学号为12的学生的全部信息;
select * from 学生表 where 学号='12'; 
#查询学生表中学号不是为12的学生的全部信息;
select * from 学生表 where 学号 !='12';
#查询学生表中专业为'计算机'学生的学号,姓名,专业;
select 学号,姓名,专业 from 学生表 where 专业='计算机';
#查询学生表中专业为'计算机'学生的平均年龄;
select avg(age) from 学生表 where 专业='计算机';

 当然,where子句也进行条件组合查询:

#查询学生表中年龄小于20岁,性别为'男'的全部信息;
select * from 学生表 where 年龄<20 and 性别='男';
#查询学生表中专业为'计算机'或是年龄大于20岁的学生的性别,专业,年龄信息;
select 性别,专业,年龄 from 学生表 where 专业='计算机' or 年龄>20;

五、IN 查询

🔺使用IN进行范围比对查询

●如果字段的取值范围不是一个连续的区间,而是一些离散的值,可以使用IN关键字进行范围比对。

语法格式如下: …… where 字段名 [NOT] IN ( 值1 [, 值2, 值3, …])

🔺当我们查询条件的字段是重复的,用where子句就会很麻烦,例如:

#查询学生表中学号为'11''12''13'的学生的全部信息;
select * from 学生表 where 学号='11' or 学号='12' or 学号='13';

 而使用IN查询明显要快捷很多:

select * from 学生表 where 学号 in('11','12','13');

 如果我们想查询学号不为'11''12''13'的学生的全部信息也可以:

select * from 学生表 where 学号 not in('11','12','13');

六、BETWEEN AND查询

🔺使用BETWEEN AND进行范围比较查询

●用BETWEEN … AND … 对字段的某一范围内的数据进行比较查询,与使用“>=”且“<=”的功能一样。

语法格式如下: …… where 字段名 [NOT] BETWEEN 值1 AND 值2

例1:查询年龄在18~20(含18、20)之间的学生信息。(and连接 和 between … and … 两种方法)

select * from 学生表 where 年龄>=18 and 年龄<=20;
select * from 学生表 where 年龄 between 18 and 20;

例2:查询年龄不在18~20(含18、20)之间的学生信息。(and连接 和 between … and … 两种方法)

select * from 学生表 where 年龄<18 or 年龄>20;
select * from 学生表 where 年龄 not between 18 and 20;

总结,当进行范围比较查询,使用BETWEEN AND比较快捷。

七、Like查询

🔺使用LIKE进行模糊查询

●LIKE关键字与“%”和“”两个通配符的使用,可以对数据表中的数据进行模糊查询。这两个通配符的含义如下所示: 百分号(%):表示匹配0个或者任意多个字符。 下划线(_:表示匹配任意一个字符。

举例:

#查询学生表中姓"李"的学生的总人数;
select count(*) from 学生表 where 姓名 like '李%';
#查询学生表中姓"李"的学生的性别和姓名;
select 姓名,性别 from 学生表 where 姓名  not like '李%';
#查询学生表中姓"李"的姓名只有两个字的学生的性别和姓名;
select 姓名,性别 from 学生表 where 姓名 like '李_';
#查询学生表中名字带"文"字的学生的性别和姓名;
select 姓名,性别 from 学生表 where 姓名 like '%文%';

八、order by 排序

🔺order by子句:

将查询的结果进行排序,其语法格式为: SELECT 字段名1 [, 字段名2, …] FROM 表名 [WHERE 查询条件] order by 字段名1 [, 字段名2, …];

●排序方式分为升序和降序,表示为:

升序排序:order by 列名 [asc]

降序排序:order by 列名 desc

举例:

#查询学生表中计算机专业的学生信息,按年龄降序、学号升序排序;
select * from 学生表 where 专业='计算机' order by 年龄 decs,学号 acs;

九、group by 分组汇总

🔺group by子句:

将查询结果显示为分组的汇总数据,其语法格式为:

SELECT 字段名1 [, 字段名2, …],

统计函数 FROM 表名 [WHERE 查询条件] group by 字段名1 [, 字段名2, …];

举例:

#查询学生表中每个专业的人数;
select count(*) from 学生表 group by 专业;
#查询学生表中每个年龄段的学生人数,显示年龄、学生人数;
select 年龄,count(*) from 学生表 group by 年龄;

🔺group by子句的总结: 语法:select 列名 from 表名 where 条件式 group by 列名

🔺注意:

        ①如果select中有聚合函数,查询结果将按group by中的列名分组汇总;

        ②如果select中没有聚合函数,查询结果将按group by中的列名显示并去 掉重复值。

        ③有where时,从左至右先执行where条件,后执行group by ,即先筛选 出满足条件的记                录,再对这些记录进行分组汇总。

        ④group by 后面跟着多个分组列名时,列名之间用英文逗号 , 隔开。

十、聚合函数条件

🔺having条件子句: 将查询结果显示为分组的汇总数据

其语法格式为: SELECT 字段名1 [, 字段名2, …],

统计函数 FROM 表名 [WHERE 查询条件] group by 字段名1 [, 字段名2, …] having 分组条件;

举例:

#查询学生表中计算机专业的学生人数,显示专业名称、人数”;
select 专业,count(*) from 学生表 group by 专业 having='计算机';
#查询成绩表中选修人数达到了4人的课程,列出课程编号、对应人数;
select 课程编号,count(*) from 成绩表 group by 课程编号 having=count(*)>=4;
#查询成绩表中有4门课程以上及格的学生,列出学号、及格课程门数、总成绩
select 学号,count(*),sum(成绩) from 成绩表 where 成绩>=60 group by 学号 having=count(课程编号)>=4;

🔺having子句的总结: 语法:select 列名 from 表名 where 条件式 group by 列名having 聚合条件 🔺注意:

①having子句紧跟在group by子句后面,如果有多个聚合条件时,用 and/or连接;

②当对聚合函数值有条件时,只能在having中列出,不能在where中 列出;

③having中可以放聚合条件,也可以放普通条件;where中只能放入 普通条件,不可放聚合条件。

④有order by时,将order by子句放在最后(语法:select 列名 from 表名 where 条件式 group by        列名 having 聚合条件 order by 列名)。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值