3.条件
  加查询条件是用来过滤数据的,过滤的基本单位是行,常见的关键字有:(> /< /= />= /<=/ !=/ <> /between..and.. /like/ in /all /any /exists/not exists等;多个条件的连接符有:andor!
  示例:
  --查询年龄大于28岁的所有学生的信息
  SELECT * FROM student WHERE sage>28;
  --查询年龄大于等于28岁的所有学生的信息;
  SELECT * FROM student WHERE sage>=28;
  --查询所有男生信息
  SELECT * FROM student WHERE ssex='M';
  SELECT * FROM student WHERE ssex!='F';
  SELECT * FROM student WHERE ssex<>'F';
  --查询学号比s0010靠前的学生的信息。
  SELECT * FROM student WHERE sid<'s0010';
  1)between..and..
  语法格式:字段 between 值1 and 值2  等价于 字段>=值1 and 字段<=值2;是一个独立、完整的字段,不可拆分。
  示例:--查询年龄在23-28岁之间(包含)的学生信息。
  SELECT * FROM student WHERE sage>=23 AND sage<=28;
  SELECT * FROM student WHERE sage BETWEEN 23 AND 28;
  --查询年龄在23-28岁之间(包含)的女生信息。
  SELECT * FROM student WHERE sage BETWEEN 23 AND 28 AND ssex='F';
  SELECT * FROM student WHERE sage>=23 AND ssex='F'AND sage<=28;
  2)like:实现的是模糊查询,一般来说会结合两个特殊符号使用,%通配符,匹配任意多个字符;_表示匹配一个字符。
  示例:--查询所有姓张的同学信息。
  SELECT *  FROM student WHERE sname LIKE '张%';
  --查询所有姓张,姓名总共为2个字的同学信息。
  SELECT *  FROM student WHERE sname LIKE '张_';
  --查询所有姓张,姓名总共为3个字的同学信息。
  SELECT *  FROM student WHERE sname LIKE '张__';
  SELECT *  FROM student WHERE sname LIKE '%张';
  3)in:是一种枚举用法,字段in(值1,值2,......,值n)等价于 字段=值1 or 字段=值2 or ... or 字段=值n。
  示例:--查询年龄等于27岁或者28岁的学生的信息。
  SELECT * FROM student WHERE sage=27 OR sage=28;
  SELECT * FROM student WHERE sage IN (27,28);
  4)distinct:用来修饰字段,表示查询、去除重复值。
  示例:--查询所有选课了的学生的学号。
  SELECT  sid FROM score;
  SELECT  DISTINCT sid FROM score;
  5)别名:可以应用在查询内容和来源中。
  语法格式: 原名 as 别名,一般来说,as是省略的, 原名 别名。
  示例:SELECT  sname,sage FROM student;
  SELECT  sname as 姓名,sage 年龄 FROM student;
  SELECT  sname,sage+1 sage FROM student;
  SELECT  sname sage FROM student; --语法没问题,从应用层面是有问题的。查询学生姓名,但结果是列名改为了sage。
  6)嵌套
  SQL语句中,查询语句是可以被嵌套使用。嵌套是通过括号()实现。每一条查询语句的结果本身是一个表、是一些值的集合,可以被嵌套使用在值或者来源的部分。
  --查询所有选修oracle课程的学生的姓名。
  SELECT sname FROM student WHERE sid IN (SELECT sid FROM score WHERE cid=(SELECTcid FROM course WHERE cname='oracle'));
  --查询某一位同学所选修的课程的名称。(已经学生姓名)
  SELECT cname FROM course WHERE cid IN (SELECT cid FROM score WHERE sid in (SELECT sid FROM student WHERE sname='张三'));
  7)all: 使用and来对表达式进行分解
  --字段 > all(值1,值2,。。。,值N)  等价于: 字段>值1 and 字段>值2 and... and 字段>值N。
  --字段 < all(值1,值2,。。。,值N)  等价于: 字段<值1 and 字段<值2 and... and 字段<值N。
  示例:查询比所有女生年龄都大的男生信息。
  SELECT * FROM student WHERE ssex='M' AND sage>39;
  SELECT sage FROM student WHERE ssex='F'; --212539
  SELECT * FROM student WHERE ssex='M' AND sage>ALL(SELECT sage FROM student WHERE ssex='F');
  --等价于  SELECT *FROM student WHERE ssex='M' AND sage>21 AND sage>25 AND sage>39;
  8)any: 是用or来对表达式进行分解
  --字段 > any(值1,值2,。。。,值N)  等价于: 字段>值1 or 字段>值2 or ... or 字段>值N。
  示例:--查询比任一女生年龄都大的男生信息。
  SELECT * FROM student WHERE ssex='M' AND sage>ANY(SELECT sage FROM student WHERE ssex='F');
  4.聚合函数(分组函数/组函数)
  常见的聚合函数有:count()avg()min()max()sum(), 括号里加字段或字段表达式。
  示例:--查询男生的数量
  SELECT count(*) FROM student WHERE ssex='M';
  --查询有成绩的学生的数量
  SELECT count(distinct sid) FROM score;
  --查询女生的小年龄
  SELECT min(sage) FROM student WHERE ssex='F';
  --查询某一位学生的平均成绩
  SELECT avg(grade) FROM score WHERE sid='s0001';
  --查询年龄大的学生的姓名
  SELECT* FROM student WHERE sage=(SELECT max(sage) FROM student);
  5.分组查询
  语法格式: group by 分组字段
  作用:表示会将表格中所有的数据按照分组字段进行分组处理、分组字段的值相同的行会被合并为一条记录、即一组;分组字段以外的字段是无法再被独立查询,只能通过聚合函数来实现查询,分组字段可以是多个,用逗号分隔。
  示例:--查询男生和女生的数量
  SELECT ssex,COUNT(*) FROM student GROUP BY ssex;
  --查询男生和女生的平均年龄、大年龄、小年龄
  SELECT ssex,AVG(sage),MAX(sage),min(sage) FROM student GROUP BY ssex;
  --查询每一门课程被选的数量
  SELECT cid,COUNT(DISTINCT sid) FROM score GROUP BY cid;
  注意:where是发生在分组之前,having是发生在分组之后,意味分组函数是不能直接作为条件的值出现在where之后,但是可以出现在having之后。
  示例:--查询所有科目都及格的学生的sid。
  SELECT sid FROM score WHERE grade>=60 GROUP BY sid; --错误的写法,实现的是任意科目及格的学生。
  SELECT sid FROM score GROUP BY sid HAVING MIN(grade)>=60; --先按学生分组,设定条件每个学生的低分要大于等于60.