--通配符:%:长度可能是0也可能是无限。_:就是代表一个字符这个通配符只可以在like里面使用 SELECT * FROM student WHERE`studentname`LIKE'%伟';--末尾是伟字的,长度不确定,如果是下划线的话,长度就固定了 SELECT * FROM student WHERE`studentname`LIKE'_伟'; ---------------------------------------------------------------------------------------------- SELECT * FROM student WHERE`studentname`IN ("张伟");--只有确定的才可以被选出来 SELECT * FROM student WHERE`studentname`IN ("张伟","saxon");--多个用,隔开 ---------------------------------------------------------------------------------------------- SELECT * FROM student WHERE`studentname`ISNOTNULL; SELECT * FROM student WHERE`studentname`isNULLor`studentname`="";
5.联表查询
1.3种联表操作
操作
描述
Inner join
查询两张表共同的部分
left join
以左边的表为基准,查询左表的字段,哪怕链接的表没有也会显示出来
right join
以右边的表为基准,查询右表的字段,哪怕左边的表没有也会显示出来
就是会匹配字段,以左右为主,匹配出字段就显示,在一个表没有数据的时候也会显示出来
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
--inner join SELECT student.studentno,`studentname`,`studentresult` FROM student INNERJOINresult ON student.studentno=result.studentno --left join SELECT student.studentno,`studentname`,`studentresult` FROM student LEFTJOINresult ON student.studentno=result.studentno --right join SELECT student.studentno,`studentname`,`studentresult` FROM student RIGHTJOINresult ON student.studentno=result.studentno
2.匹配语句间可以连接实现多表查询
1 2 3 4 5 6
SELECT student.studentno,`studentname`,`studentresult`,subjectname FROM student INNERJOINresult ON student.studentno=result.studentno--查询结果在向下查询 INNERJOIN`subject` ON result.subjectno=`subject`.subjectno
3.自联查询(把一张表看成两张表查询)
1 2 3 4 5
--可以查询一些所属关系 SELECT a.studentno,s.`studentname` FROM student a INNERJOIN student s ON a.studentno=s.studentno
--子查询:分为对两个表的查询结果筛选 SELECT subjectname FROM`subject`WHERE subjectno IN ( SELECT subjectno FROMresultWHERE result.studentresult>80) --嵌套查询:逐步向下进行筛查 select * from student WHERE studentno IN( SELECT result.studentno FROMresultWHERE result.subjectno IN( SELECT`subject`.subjectno FROM`subject`WHERE subjectname='高等数学-1') )
8.分组和过滤
1 2 3 4 5 6
--一个语句内只可以有一个where循环 --group by 顾名思义就是按照xxx进行分组,它必须有“聚合函数”来配合才能使用,使用时至少需要一个分组标识字段。 --having必须在group by 后面 SELECTAVG(result.studentresult) as'平均值'FROMresult GROUPBY result.studentresult HAVING 平均值>70;--过滤