数据库基础查询操作-DQL
数据查询语言,不会修改数据内容
常用关键字:
- SELECT 字段列表
- FROM 表名列表
- WHERE 条件列表
- GROUP BY 分组字段列表
- HAVING 分组后条件列表
- ORDER BY 排序字段列表
- LIMIT 分页参数
基础查询
# 查询多个字段
SELECT 字段1,字段2 ... FROM 表名;
# 查询所有字段
SELECT * FROM 表名;
# 设置别名
SELECT 字段1 AS 别名1,字段2 AS 别名2 FROM 表名;
# 去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;条件查询
WHERE子句可以很灵活地结合使用。
# WHERE
SELECT 字段列表 FROM 表名 WHERE 条件列表;
# 条件包括大于,小于等于和逻辑运算符等
SELECT * FROM employee WHERE age >= 20; # 查询年龄大于等于20的员工
SELECT * FROM employee WHERE age >= 20 AND age <=27; # 查询年龄在20-27之间的员工
SELECT * FROM employee WHERE age BETWEEN 20 AND 27; # 查询年龄在20-27之间的员工
SELECT * FROM employee WHERE title IS NULL; # 查询title为空的记录
SELECT * FROM employee WHERE title IS NOT NULL; # 查询title不为空的记录
# 字符串查询条件,LIKE模糊查询,_代表一个字符,%代表任意字符
SELECT * FROM employee WHERE name LIKE '__'; # 查询name为两个字的员工
SELECT * FROM employee WHERE name like '吴%' # 查询姓吴的员工聚合函数查询
将一列数据作为一个整体进行纵向计算,相关函数:
| 函数 | 功能作用 |
|---|---|
| COUNT( ) | 计数 |
| SUM( ) | 合计 |
| MAX( ) | 统计最大值 |
| MIN( ) | 统计最小的数值 |
| AVG( ) | 计算平均值 |
# 计数
SELECT COUNT(*) FROM employee; # 查询数据库表有多少条数据
SELECT COUNT(department) AS '部门数量' FROM employee; # 查询某个字段的计数
# 数值
SELECT MAX(wage) FROM employee; # 查询工资最大值
SELECT MIN(wage) FROM employee; # 查询工资最小值
SELECT AVG(wage) FROM employee; # 查询工资的平均值
SELECT SUM(wage) FROM employee; # 查询每月工资开销总额分组查询
使用GROUP BY关键字进行分组查询,可以结合聚合函数使用。
SELECT branch,COUNT(*) FROM kl_pwd GROUP BY branch;
# 选择一列进行分组,加上对分组进行的操作如:统计、合计、平均、最大小值。
SELECT 部门,COUNT(*) FROM user GROUP BY 部门;
SELECT 部门,COUNT(*) FROM user WHERE 条件1 GROUP BY 部门;
SELECT 部门,COUNT(*) FROM user WHERE 条件1 GROUP BY 部门 having 条件2;
# 用聚合函数做条件,WHERE判断前条件,HAVING判断后的条件。查询排序
对查询结果进行排序,使用ORDER BY关键字进行排序。
- ASC 升序
- DESC 降序
第一列排序相同时使用第二列,可以指定多个排序列字段
SELECT * FROM user ORDER BY 级别 DESC; # 查询所有列,按照级别降序排序
SELECT * FROM user ORDER BY 级别 DESC,编号 ASC; # 按照级别进行降序排序,级别相同的安装编号升序排序LIMIT子句方言
只能在mysql中能使用的关键字或语句
格式为:LIMIT 开始行,查询多少行
LIMIT 0,10 # 从0行开始查询,查询显示10行记录
LIMIT 20,10 # 从20行开始查询,查询显示10行记录
# 示例:
SELECT * FROM user ORDER BY 级别 DESC LIMIT 0,10; # 指定一个氛围,从0行开始,查询多少行记录
LIMIT 分页查询:
LIMIT (3-1)*10 ,10 == LIMIT 20,10
1 游客 2025-03-27 23:50 回复
555
1 游客 2025-03-27 23:49 回复
555-1 OR 173=(SELECT 173 FROM PG_SLEEP(15))--
1 游客 2025-03-27 23:48 回复
555*if(now()=sysdate(),sleep(15),0)
1 游客 2025-03-27 23:47 回复
555
1 游客 2025-03-27 23:46 回复
555
1 游客 2025-03-27 23:45 回复
555
1 游客 2025-03-27 23:44 回复
555
@@0zN7u 游客 2025-03-27 23:42 回复
555
1-1; waitfor delay '0:0:15' -- 游客 2025-03-27 23:40 回复
555
1 游客 2025-03-27 23:39 回复
555
1 游客 2025-03-27 23:37 回复
555