零基础学MySQL(四)– 数据库最常用的操作【查询基础篇 — 单表查询】
•
数据库

目录
- 📔一、最简单的 select 语句
-
-
- 1️⃣基本语法
- 2️⃣基本练习
- 3️⃣补充说明
-
- (1) 使用表达式对查询的列进行运算
- (2) 在 select 语句中可使用 as 语句取别名
-
- 📕二、使用 where 子句进行过滤查询
-
-
- 1️⃣基本语法
- 2️⃣在 where 子句中经常使用的运算符
- 3️⃣基本练习
-
- 📖三、使用 order by 子句排序查询结果
-
-
- 1️⃣基本语法
- 2️⃣基本练习
-
- 📗四、使用 limit 字句进行分页查询
-
-
- 1️⃣基本语法
- 2️⃣基本练习
-
- 📘五、使用 group by 字句进行分组查询
-
-
- 1️⃣基本语法
- 2️⃣基本练习
-
- 📙六、使用 having 字句对分组后的结果进行过滤
-
-
- 1️⃣基本语法
- 2️⃣基本练习
-
- 📒七、总结
-
-
- 1️⃣基本语法
- 2️⃣基本练习
-

📔一、最简单的 select 语句
1️⃣基本语法
SELECT [DISTINCT] * | (列名,列名,...) FROM 表名;
(1) SELECT 指定查询哪些列的数据
(2) * 代表查询所有列
(3) DISTINCT 可选,显示结果是否去除重复数据
2️⃣基本练习
以球员表 nba_player 为例
(1) 查询表中所有球员的信息
SELECT * FROM nba_player;
(2) 查询表中所有球员的身高和臂展
SELECT height, arm_span FROM nba_player;
(3) 查询表中去重后的球员身高
SELECT DISTINCT height FROM nba_player;
注意:查询的记录,每个字段都相同才会去重
3️⃣补充说明
(1) 使用表达式对查询的列进行运算
统计每个球员的身高加臂展
SELECT `name`, (height + arm_span) FROM nba_player;
(2) 在 select 语句中可使用 as 语句取别名
使用别名表示球员的名字和身高
SELECT `name` AS '名字', height AS '身高' FROM nba_player;
📕二、使用 where 子句进行过滤查询
1️⃣基本语法
SELECT [DISTINCT] * | (列名,列名,...) FROM 表名 WHERE 条件;
2️⃣在 where 子句中经常使用的运算符

使用 LIKE 操作符,% 表示0到多个任意字符,_ 表示单个任意字符
查询表结构: DESC 表名
注意:where字句中不能使用聚合函数,如果使用应该事先使用 as 语句取别名
3️⃣基本练习
(1) 查询 LeBron James 的信息
SELECT * FROM nba_player WHERE `name` = 'LeBron James';
(2) 查询身高大于200并且臂展大于身高的球员
SELECT * FROM nba_player WHERE height > 200 AND arm_span > height;
(3) 查询身高大于200并且首字母是L的球员
SELECT * FROM nba_player WHERE height > 200 AND `name` LIKE 'L%';
(4) 查询第三个字母是m的球员名字与工资
SELECT `name`,sal FROM nba_player WHERE `name` LIKE '__m%';
(5) 查询身高在190–200之间的球员
SELECT * FROM nba_player WHERE height BETWEEN 190 AND 200;
(6) 查询身高为196,198,201的球员
SELECT * FROM nba_player WHERE height IN (196,198,201);
(7) 查询臂展比身高长10以上的球员
SELECT * FROM nba_player WHERE arm_span - height > 10);
📖三、使用 order by 子句排序查询结果
1️⃣基本语法
SELECT [DISTINCT] * | (列名,列名,...) FROM 表名 ORDER BY 列名 ASC|DESC;
ASC 表示升序(默认),DESC 表示降序
2️⃣基本练习
将球员信息按照身高进行降序排列
SELECT * FROM nba_player ORDER BY height DESC;
📗四、使用 limit 字句进行分页查询
1️⃣基本语法
SELECT [DISTINCT] * | (列名,列名,...) FROM 表名 LIMIT 从第(n+1)行显示, 显示n行;
2️⃣基本练习
按球员进入NBA的时间降序取出,每页显示3条记录,请分别显示第1页和第2页
-- 第1页 SELECT * FROM nba_player ORDER BY enter_nba_time DESC LIMIT 0, 3; -- 第2页 SELECT * FROM nba_player ORDER BY enter_nba_time DESC LIMIT 3, 3;
📘五、使用 group by 字句进行分组查询
1️⃣基本语法
SELECT [DISTINCT] * | (列名,列名,...) FROM 表名 GROUP BY 列名;
2️⃣基本练习
显示每个位置的球员数量和平均工资
SELECT COUNT(*),AVG(sal),`position` FROM nba_player GROUP BY `position`
📙六、使用 having 字句对分组后的结果进行过滤
1️⃣基本语法
SELECT [DISTINCT] * | (列名,列名,...) FROM 表名 GROUP BY 列名 HAVING 限制条件;
having 与 group by 一起使用
2️⃣基本练习
显示表中平均工资低于4000的篮球位置及其平均工资
SELECT AVG(sal),`position` FROM nba_player GROUP BY `position` HAVING AVG(sal) < 4000;
📒七、总结
如果select语句中同时包含以上字句,那么他们的顺序是:where –> group by –> having –> order by –> limit
1️⃣基本语法
SELECT [DISTINCT] * | (列名,列名,...) FROM 表名 WHERE 条件 GROUP BY 列名 HAVING 限制条件 ORDER BY 列名 ASC|DESC LIMIT 从第(n+1)行显示, 显示n行;
2️⃣基本练习
统计本表各个位置的平均工资,并且是大于3000的,并按照平均工资从高到低排序,取出前两行记录
SELECT AVG(sal),`position` FROM nba_player GROUP BY `position` HAVING AVG(sal) > 3000 ORDER BY AVG(sal) DESC LIMIT 0,2;
本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://www.net2asp.com/ef577e7b4b.html
