一、投影查询
查询表是只需要某些列,即只取出特定的列
SELECT c1, c2, c3 FROM table
取出特定的列并重新命名
SELECT c1, c2 新名字2, c3 新名字3 FROM table
二、分页查询
将表中的记录按pagesize分为每一个存相同记录数的页,之后查找部分信息时就相当于在每个分页中取想要的记录数。
SELECT * FROM xx WHER xx ORDER BY xx LIMIT m OFFSET n
分页语句为
LIMIT m OFFSET n
MySql中语句可简写为:LIMIT n,m
三、聚合查询
3.1 聚合函数
COUNT(), MAX(), MIN(), SUM(), AVG()
3.1.1 COUNT()
COUNT()返回所符合查询条件的记录的条数;但,返回的是一个一行一列的二维数组,列名为COUNT(),为方便处理,通常给结果取个“小名”
SELECT xx COUNT(*) sum FROM xx WHERE xx
3.1.2 MAX(),MIN()函数不局限于数值类型
COUNT()在WHERE条件下匹配不到记录,返回0;MAX(),MIN(),SUM(),AVG()返回NULL
3.2 分组聚合查询
通过分组聚合查询可以将表中数据分组后,每组均执行所需的聚合函数。此外,只有被分组的列名才能被起“小名”。
SELECT aa, 聚合函数 别名 FROM xx WHERE xx GROUP BY aa
如:在student列表中,求每个班男女人数
SELECT class_id, gender, COUNT(*) num FROM students GROUP BY class_id, gender;
四、 多表查询
4.1 直接查询方式
允许多张表同时查询数据,最终查询的表列数为两张表列数之和,行数为两张表行数之积
SELECT * FROM table1, table2;
为简化代码书写,可以给查询条件和被查询的表其“小名”。搜索条件的“小名”起法为“表名.列名 小名”,被搜索的表的“小名”起法为“表名 小名”
SELECT s.id sid, s.name, s.gender, s.score, c.id cid, c.name cname
FROM students s, classes c
WHERE s.gender = 'M' AND c.id = 1;
4.2 通过JOIN ON方式实现
首先确定一个结果集为主表,将tableB的查询结果“附加”在结果集上。搜索不存在的列自动填充为NULL。
SELECT ... FROM tableA xxx JOIN tableB ON tableA.column1 = tableB.column2;