查询语句的语法 select 列名... from 表 where 条件 group by 分组条件 having 分组筛选条件 order by 排序条件 limit 限制个数; where 条件 比较运算符 = 等值匹配 != 不等值匹配 > 大于 < 小于 >= 大于等于 <= 小于等于 逻辑运算符 and 逻辑与(两个条件同时成立) or 逻辑或(两个条件有一个成立,结果就是真) not 逻辑非 (条件取反) like 模糊查询 其中匹配通配符 % 表示匹配0~多个任意字符 通配符 _ 表示匹配1个任意字符列 列between 值1 and 值2 等价于 列 >= 值1 and 列 <= 值2, 注意小值要在前面,包含边界的值 列 in (值1,值2,... 值n) 等价于 列=值1 or 列=值2 ... or 列=值n 注意值列表的长度 group by 分组条件 聚集函数: count(*) 表示求每组的个数 max(列) 求最大值 min(列) 求最小值 sum(列) 求和 avg(列) 求平均值 注意: 分组之后, select子句中只能出现分组条件列和组函数,其他列不能出现在select中,order by 子句中只能出现分组条件列和组函数,其他列不能出现在order by中, 例如: select deptno,max(sal),ename from emp group by deptno; // ename不符合刚才的规定 select deptno,max(sal) from emp order by ename; // 错误的having 分组筛选条件where > group by > having > select > order by > limit // sql语句的执行顺序 同where功能一样,都是筛选条件,不过where是在分组前筛选,having是在分组后筛选。当需求要求分组后筛选时使用having,而分组前筛选时既可以使用where,也可以使用having,优先使用where。 例子:查询emp表deptno列相同的组的人数和deptno列,且组内人数不小于5. select count(*), deptno from emp where count(*) >=5 group by deptno; // 因为where先执行,这时候还没有分组,不知道个数,错误 select count(*), deptno from emp group by deptno having count(*)>=5; order by 排序条件 排序条件:列名 升降序 如果升降序关键字省略,默认是asc 升序-> 由小到大 asc 降序-> 由大到小 desc 例子:查询hero表中的每一列,按power降序排列 select * from hero order by power desc; 多列排序: 排序条件1, 排序条件2 … 先按照条件1排序,条件1中取值相同的,再按照条件2排序limit 限制个数 限制返回结果个数 limit m; // 最多返回m个结果 limit n,m; // 最多返回m个结果,n代表起始下标,下标从0开始 经常用来实现分页应用,假设每页10条 第一页 limit 0,10; 第二页 limit 10,10; 第三页 limit 20,10; 消除取值重复的行 两个本来并不完全相同的元组在投影到指定的某些列上后,可能会变成相同的行,可以用DISTINCT消除它们。 查询学生学号 SELECT DISTINCT Sno FROM SC; 单表查询 现有一学生表 +------+-------+------------+------+ | sid | sname | birthday | sex | +------+-------+------------+------+ | 1001 | 张三 | 1990-10-10 | 男 | | 1002 | 李四 | 1981-10-10 | 男 | | 1003 | 王五 | 1981-11-10 | 女 | | 1004 | 赵六 | 1988-10-10 | 男 | | 1005 | 孙七 | 1989-01-10 | 女 | | 1006 | 周八 | 1990-10-10 | 男 | | 1007 | 张三 | 1990-06-10 | 女 | +------+-------+------------+------+ 例子: 查询同名同姓学生名单,并统计同名人数 select count(*),name from student group by name having(count(*)>1); 连接查询 定义 若一个查询同时涉及两个以上的表,则称之为连接查询。连接查询是关系数据库中最主要的查询,包括等值连接查询、自然连接查询、非等值连接查询、自身连接查询、外连接查询和复合条件连接查询等。