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 子句