mysql数据库的常见的几种查询方式
- 查询指定表的所有信息
SELECT DISTINCT `name` FROM `user`;
结果:
id | name | age | math | english | desc |
---|---|---|---|---|---|
1 | 小明 | 12 | 80 | 100 | |
2 | 小红 | 13 | 100 | 80 |
- 查询时起别名
SELECT id AS '编号',NAME AS '姓名',age AS '年龄'
FROM `user`;
结果:
编号 | 姓名 | 年龄 |
---|---|---|
1 | 小明 | 12 |
2 | 小红 | 13 |
- 查询时合并列(仅是数值项)
SELECT id AS '编号',NAME AS '姓名',age AS '年龄',(MATH+English) AS '总成绩'
FROM `user`;
结果:
编号 | 姓名 | 年龄 | 总成绩 |
---|---|---|---|
1 | 小明 | 12 | 180 |
2 | 小红 | 13 | 180 |
- 查询时去除重复的
SELECT DISTINCT `name` FROM `user`;
或
SELECT DISTINCT(name) FROM `user`;
结果:
姓名 |
---|
小明 |
小红 |
- 条件查询
如查询id未1且年龄为12的
SELECT * FROM `user` WHERE id=1 AND age=12;
结果:
id | name | age | math | english | desc |
---|---|---|---|---|---|
1 | 小明 | 12 | 80 | 100 |
SELECT * FROM `user` WHERE age=12 or age=13;
结果:
id | name | age | math | english | desc |
---|---|---|---|---|---|
1 | 小明 | 12 | 80 | 100 | |
2 | 小红 | 13 | 100 | 80 |
SELECT * FROM `user` WHERE age>12;
结果:
id | name | age | math | english | desc |
---|---|---|---|---|---|
2 | 小红 | 13 | 100 | 80 |
- 判空条件
// age为null
SELECT * FROM `user` WHERE age is NULL;
结果:
id | name | age | math | english | desc |
---|
// age不为null
SELECT * FROM `user` WHERE age is NOT NULL;
结果:
id | name | age | math | english | desc |
---|---|---|---|---|---|
1 | 小明 | 12 | 80 | 100 | |
2 | 小红 | 13 | 100 | 80 |
- 模糊查询
// 以小开头任意字符
SELECT * FROM `user` WHERE `name` LIKE '小%';
结果:
id | name | age | math | english | desc |
---|---|---|---|---|---|
1 | 小明 | 12 | 80 | 100 | |
2 | 小红 | 13 | 100 | 80 |
// 以明结尾任意字符
SELECT * FROM `user` WHERE `name` LIKE '%明';
结果:
id | name | age | math | english | desc |
---|---|---|---|---|---|
1 | 小明 | 12 | 80 | 100 |
// 包含有明的任意字符
SELECT * FROM `user` WHERE `name` LIKE '%明%';
结果:
id | name | age | math | english | desc |
---|---|---|---|---|---|
1 | 小明 | 12 | 80 | 100 |
// 三个字且明在中间
SELECT * FROM `user` WHERE `name` LIKE '_明_';
结果:
id | name | age | math | english | desc |
---|
- 聚合函数
如:-- max()最大值 min()最小值 AVG()平均值
– round()保留几位小数 count()统计记录数
以max为例
SELECT MAX(english) FROM `user`;
结果:
MAX(english) |
---|
100 |
- 查询后排序(order by)
默认升序,此外,排序方式按照,asc升序:按照字典序a-z从小到大排序
desc降序:按照字典序从大到小排序
如:
SELECT * FROM `user` ORDER BY age DESC;
结果:
id | name | age | math | english | desc |
---|---|---|---|---|---|
2 | 小红 | 13 | 100 | 80 | |
1 | 小明 | 12 | 80 | 100 |
- 分组查询(group by)
如:
查询每个地区的学生有多少人
– 显示结果:地区 人数
SELECT address AS '地区',COUNT(*) AS '人数'
FROM `user` GROUP BY address;
- 分页查询(limit m,n)
limit m,n m表示从哪个下标开始,选取n条数据
– 这里n表示每页显示的条数
– 对student表里的6条数据分页,每页显示2条,共3页
– 第一页: 0~1
SELECT * FROM student LIMIT 0,2;
– limit (1-1)*2,2 limit 0,2
– 第二页: 2~3
SELECT * FROM student LIMIT 2,2;
– limit (2-1)*2,2 limit 2,2
– 第三页: 4~5
SELECT * FROM student LIMIT 4,2;
– limit (3-1)*2,2 limit 4,2
– 需求:假如表里有1000条数据,每页显示20条
– 请问第34页显示的那些数据?
– 推理分页公式:limit (第几页-1)*n,n
– limit (34-1)*20,20