-
group by 字段名; [多] 字段分组。
例如
select id,class,city from student
group by class,city ;
对该表的班级与家乡城市进行分组; -
having :对查询的结果进行过滤,可使用聚合函数。
例如
select id,class,city from student
having id>10;
对该表的学生 id 进行过滤( 注:过滤的字段必须在显示字段中出现); -
limit :分页。
例如
select id,class,city from student
order by id
limit n,m;
从该表的第 n+1 条数据开始取,一共取m条数据。若 n 为0,则只需写 m。 -
like :模糊查询。
_:代替一个字符。
%:代替任意字符。例如
select * from student
where name like ‘张_’;
查询名字共两个字的张姓同学。 -
distinct :过滤重复数据,必须写在显示字段的第一个。可与聚合函数配合使用。
例如
select distinct id ,name from student;
过滤掉重复的 id。
例如
select count(distinct id) from student;
查询不重复 id的个数。 -
内连接(查询两个表中的数据)
例如
SELECT a.s_name,c.score
FROM student AS a, grade AS c
WHERE a.`s_id`=c.`s_id` ;
查询 表a 中的学生姓名所对应的表b 的学生成绩。
7. 子查询(嵌套查询)
例如
SELECT f.name
FROM (SELECT e.name FROM student
WHERE englishi >70) f
WHERE f.name LIKE “%周%”;
其中 括号里的数据是一张临时表,f:是这张临时表的别名。
查询该临时表中学生名字带 周 的同学。
***例如***
select * from student
where tid =(select tid from teacher where tname='小明');
其中 括号里的数据是 小明老师的 id.
查询 班主任是小明的所有学生。
-
1、<>ALL:等价于 NOT IN (不等于)。
2、 >ALL :比子查询中最大的值还要大
3、<ALL :比子查询中最小的值还要小
特别说明:“= All”不存在
例如select * from student2 where age >ALL (select age from student1); 查询表2中 比表1中老师年龄最老的还要老的老师信息。
-
1、= Any:与任何一个相等
2、>Any : 比最低的高
3、<Any : 比最高的低select * from student2 where age >Any (select age from student1); 查询表2中 比表1中老师年龄最年轻的还要老的老师信息。