1. 基本查询
select基础语法:select * from 表名;
select完整语法:select 去重选项 字段列表 [as 字段别名] from 数据源 [where子句] [group by 子句] [having 子句] [order by 子句] [limit 子句];
查询所有字段:select * from 表名;
查询指定字段:select 字段1,字段2,… from 表名;
使用as给字段起别名:select 字段1 as 别名1,字段2 as 别名2,… from 表名;
使用as给表起别名:select * from 表名 as 别名;
2. 条件查询
比较运算符:
select * from 表名 where 条件;
- >:大于
- <:小于
- >=:大于等于
- <=:小于等于
- !=或<>:不等于
逻辑运算符:
select * from 表名 where 条件;
- and:逻辑和
- or:逻辑或
- not:逻辑非
模糊查询:
select * from 表名 where 字段 like ‘…’;
- %:替换任意多个或零个字符
- _:替换任意一个字符
范围查询:
select * from 表名 where 条件;
- in:表示在一个非连续的范围内
- not in:表示不在一个非连续的范围内
- between … and …:表示在一个连续的范围内
- not between … and …:表示不在一个连续的范围内
空判断:
select * from 表名 where 条件;
- is null:判空,不能用 =null
3. 聚合函数
总数:count()
select count(*) from 表名;
最大值:max()
select max(目标字段) from 表名;
最小值:min()
select min(目标字段) from 表名;
求和:sum()
select sum(目标字段) from 表名;
平均值:avg()
select avg(目标字段) from 表名;
四舍五入:round(…,…)
round(12.34,1) = 12.3
4. 分组
group by:按需求字段进行分组
select … from 表名 group by 字段;
group_concat():查看组内的信息
select …,group_concat(目标字段) from 表名 group by 字段;
having:分组后筛选
select … from 表名 group by … having…;
5. 排序
order by 字段 asc:从小到大排序,默认
select * from 表名 order by 字段 asc;
order by 字段 desc:从大到小排序
select * from 表名 order by 字段 desc;
order by 对个字段:先对前面的字段排序,再在这个基础上对后面的字段排序
6. 分页
限制查询出来的数据个数
limit start, count:起始位置(默认从0开始),查询数据个数
select * from 表名 limit start,count;
注意:limit子句要写在语句的最后
7. 连接查询
内连接:inner join … on …
select a.*,b.字段 from 表A as a inner join 表B as b on 条件(a.id = b.id);
左连接:left join … on …
select a.*,b.字段 from 表A as a left join 表B as b on 条件(a.id = b.id);
右连接:right join … on …
select a.*,b.字段 from 表A as a right join 表B as b on 条件(a.id = b.id);
8. 子查询
就是select语句里面嵌套一个select语句
子查询
举例:查询最高的男生信息
select * from students where height = (select max(height) from students where gender=‘男’) and gender=‘男’;
列级子查询
举例:查询学生的班级号能够对应的学生信息
select * from students where cls_id in (select id from classes);
9. 自关联
自关联是一种思想。来想一个问题,省市县在三张表上我们容易想到用外键的方法将省市县联系在一起,那么,如果省市县在一张表上面,我们怎样将他们关联起来呢?这里便用到了自关联,就是在这一张表上将省市县分级,给每个市一个pid,给每个县一个sid,你们分别存着上一级的id,这样就可以实现了。这样也可以使一行查询代码更好地复用。
举例:select * from table as p inner join table as c on c.pid = p.id having p.name = ‘…’;
10. 小结
这些知识点主要是关于数据库的查询,没有别的技巧,都要靠自己去记,去敲,熟能生巧,加油!