查询表的数据:
- 基本查询:
SELECT * FROM <表名>
ELECT 是关键字,表示将要执行一个查询,* 表示 “所有列”,FROM 表示将要从哪个表查询
- 条件查询:
SELECT * FROM <表名> WHERE <条件表达式>
SELECT * FROM students WHERE score >= 80 AND gender = 'M';
多个条件表达式可以用
AND
或者OR
连接<条件1> AND/OR <条件2>
,NOT <条件>
,表示 “不符合该条件” 的记录
使用<>
判断不相等,使用=
判断相等,使用LIKE
判断相似,name LIKE 'ab%'
,%
表示任意字符,例如'ab%'
将匹配'ab'
,'abc'
,'abcd'
,要组合三个或者更多的条件,就需要用小括号()
表示如何进行条件运算,否则,优先级:NOT>AND>OR
投影查询:
SELECT 列1, 列2, 列3 FROM <表名>
# 从 students 表中返回 id、score 和 name 这三列:
SELECT id, score, name FROM students;
# 可以给每一列起一个别名
SELECT 列1 别名1, 列2 别名2, 列3 别名3 FROM <表名>
# 以下 SELECT 语句将列名 score 重命名为 points,而 id 和 name 列名保持不变:
SELECT id, score points, name FROM students;
# 投影查询同样可以接 WHERE 条件,实现复杂的查询:
SELECT id, score points, name FROM students WHERE gender = 'M';
排序:
SELECT .......ORDER BY ...
# 按 score 从低到高:
SELECT id, name, gender, score FROM students ORDER BY score;
# 默认排序是 ASC “升序”,ASC 可以省略,末尾加上 DESC 表示 “倒序”:
SELECT id, name, gender, score FROM students ORDER BY score DESC;
# 使用 ORDER BY score DESC, gender 表示先按 score 列倒序,如果有相同分数的,再按 gender 列排序:
SELECT id, name, gender, score FROM students ORDER BY score DESC, gender;
# 如果有 WHERE 子句,那么 ORDER BY 子句要放到 WHERE 子句后面:
SELECT id, name, gender, score
FROM students
WHERE class_id = 1
ORDER BY score DESC;
- 分页查询,聚合查询,多表查询,连接查询略
插入数据:
INSERT INTO <表名> (字段1, 字段2, ...) VALUES (值1, 值2, ...);
# 向 students 表插入一条新记录,先列举出需要插入的字段名称,然后在 VALUES 子句中依次写出对应字段的值:
INSERT INTO students (class_id, name, gender, score) VALUES (2, '大牛', 'M', 80);
修改数据:
UPDATE <表名> SET 字段1=值1, 字段2=值2, ... WHERE ...;
# 更新 students 表 id=1 的记录的 name 和 score 这两个字段,先写出 UPDATE students SET name=' 大牛 ', score=66,然后在 WHERE 子句中写出需要更新的行的筛选条件 id=1:
UPDATE students SET name='大牛', score=66 WHERE id=1;
参考:廖雪峰的官方网站