查询数据
基本查询
- 查询数据库表的数据:
// SELECT * FROM <表名>
// SELECT:关键字,表示将要执行一个程序
// *:所有列
// FROM:将要从哪个表查询
SELECT * FROM students;
SELECT 语句并不要求一定有FROM子句。可用来判断当前到数据库的链接是否有效,很多检测工具会执行下列语句,测试数据库连接。
SELECT 1;
条件查询
SELECT语句通过WHERE条件来设定查询结果。例如指定条件“分数在80分或以上的同学”
// SELECT * FROM <表名> WHERE <条件表达式>
SELECT * FROM students WHERE score >= 80;
- 满足<条件1>且满足<条件2>:
<条件1> and <条件2>
SELECT * FROM students WHERE score >= 80 AND gender = 'M';
- 满足 - 满足<条件1>或满足<条件2>:
<条件1> or <条件2>
SELECT * FROM students WHERE score >= 80 OR gender = 'M';
- 不符合该条件
NOT <条件>
SELECT * FROM students WHERE NOT class_id = 2;
//NOT class_id = 2 等价于 class_id <> 2
组合三个或更多的条件,用小括号()表示如何进行运算
投影查询
只返回某些列的数据,而不是所有列的数据。
- WHERE条件
SELECT 列1,列2,列3 FROM……
排序
正序:
加ORDER BY子句
SELECT <列名> FROM <表名> ORDER BY <排序表名>
倒序:
加DESC
SELECT <列名> FROM <表名> ORDER BY <排序列名> DESC;
ORDER BY子句要放到WHERE子句后面。
分页查询
结果集从N号记录开始,最多去M条
LIMIT <M> OFFSET <N>
pageSize:
每页需要显示的结果数量
pageIndex:
当前页索引(从1开始)
LIMIT总是设定为pageSize
OFFSET计算公式为pageSize * (pageIndex - 1)
聚合查询
聚合函数可用来统计总数、平均数等。
COUNT:查询一共有多少列。
[x] WHERE条件
SELECT COUNT(*) FROM <表名>
多表查询
又称笛卡尔查询
SELECT不但可以从一张表查询数据,还可以从多张表同时查询数据。
可用投影查询设置列名。
- WHERE条件
SELECT * FROM <表1> <表2>
结果集列数为两表列数之和
结果集行数为两表行数之积
因此结果集可能很巨大
连接查询
另一种形式的多表查询
对多个表进行JOIN运算,先确定一个主表,然后,把其他表有选择的连接在主表结果集上。
SELECT s.id, s.name, s.class_id, c.name class_name, s.gender, s.score
FROM students s
INNER JOIN classes c
ON s.class_id = c.id;
1. 确定主表,使用 FROM <表1>
2. 确定需要连接的表,使用 INNER JOIN <表2>
3. 确定需要连接的条件,使用 ON <条件……>,s.class_id = c.id,表示students表的class_id与classes表的id需要连接
4. 加 WHERE 子句、ORDER BY 子句