-- 查表中的数据(不要使用*进行查询速度慢,这里为了方便使用'*')select*from 表名 [后面可接where条件语句]-- 指定字段的查询(推荐)select sid,sname from student where sid >1;-- 给查询的字段重新命名select sid,sname as student_name from student where sid >=1;select sid,sname as student_name from student where sid !=1;-- 其他-- in/not inselect*from student where sid in[1,3,4];select*from student where sid notin[1,3,4];select*from student where sid in(select tid from teacher);-- between A and B (在A和B的闭区间内)select*from student where sid between1and3;-- limit (限制)-- limit 3 (查询前三条数据)select*from student limit3;-- limit 2,3 (2表示从第三个作为起始位置[从零开始数]开始查询,3表示查询的条数)select*from student limit2,3;-- limit 3 offset 2 (3表示查询几条数据,2表示从哪个位置开始[从零开始数])select*from student limit3offset2;-- order by (分组, 可以配合MySQL中的一些聚合函数(count,sum,maxd等等)使用,也可以用来去重)-- 查看男女同学各有多少(对gender进行分组)selectcount(1)from student groupby gender
-- 查看某一科成绩的最高分selectmax(number)from score groupby course_id=1-- order by (排序,desc 从大到小,asc从小到大)select*from score orderby number desc;-- 特别的:group by 必须在where之后,order by之前-- like (通配符)-- 查询姓李的同学有哪些select*from student where sname like'李%'-- 查询名字以‘军’字结尾的同学有哪些select*from student where sname like'%军'-- 查询姓李的同学并且姓名后面只能有一个字的有哪些select*from student where sname like'李_'-- 连表-- left join (左边表中的数据全部显示,右边没有对应的显示为None), right join(右表中的数据全部显示,左边没有对应的显示为None), inner join (左边的全显示,显示None的自动省略掉,不显示)select*from course leftjoin score on cid = course_id;select*from course rightjoin score on cid = course_id;select*from course innerjoin score on cid = course_id;-- 后面都可以加条件-- 组合(上下连表)-- union(去重),union all(不去重)select sid,sname from student unionselect tid,tname from teacher;-- 临时表select*from(select*from student where sid >1)as A where A.sid =3;-- 动态获取字段的值-- (内层的查询只能返回一个值)select sid,(select tname from teacher where tid=sid)from student;