目录
[排序:ORDER BY](#排序:ORDER BY)
插入数据(Insert)
单行插入
sql
INSERT INTO students (name, age, grade) VALUES ('Alice', 25, 'A');
批量插入
sql
INSERT INTO students (name, age, grade)
VALUES
('Bob', 30, 'B'),
('Charlie', 22, 'C'),
('David', 28, 'A');
查询数据(Select)
基本查询
基本查询使用SELECT
语句,你可以检索表中的数据。
sql
SELECT * FROM students;
上面的*代表的是查询所有列,如果要查询指定列如下:
比如我要查询一个stuId,stuName
sql
SELECT stuId,stuName FROM students;
别名
为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称:
sql
SELECT id, name, chinese + math + english 总分 FROM exam_result;
去重:DISTINCT
使用DISTINCT关键字对某列数据进行去重:
sql
-- 98 分重复了
SELECT math FROM exam_result;
+--------+
| math |
+--------+
| 98 |
| 78 |
| 98 |
| 84 |
| 85 |
| 73 |
| 65 |
+--------+
去重后面的结果:
sql
-- 去重结果
SELECT DISTINCT math FROM exam_result;
+--------+
| math |
+--------+
| 98 |
| 78 |
| 84 |
| 85 |
| 73 |
| 65 |
+--------+
条件查询
条件查询使用WHERE
子句来筛选数据。
sql
SELECT * FROM students WHERE grade = 'A';
排序:ORDER BY
没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序
NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面
sql
-- 查询同学姓名和 qq_mail,按 qq_mail 排序显示
SELECT name, qq_mail FROM student ORDER BY qq_mail;
SELECT name, qq_mail FROM student ORDER BY qq_mail DESC;
使用表达式及别名排序:
sql
-- 查询同学及总分,由高到低
SELECT name, chinese + english + math FROM exam_result
ORDER BY chinese + english + math DESC;
SELECT name, chinese + english + math total FROM exam_result
ORDER BY total DESC;
还可以对多个字段进行排序,排序优先级随书写顺序
sql
-- 查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示
SELECT name, math, english, chinese FROM exam_result
ORDER BY math DESC, english, chinese;
分页查询:LIMIT
按 id 进行分页,每页 3 条记录,分别显示 第 1、2、3 页
sql
-- 第 1 页
SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3
OFFSET 0;
-- 第 2 页
SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3
OFFSET 3;
-- 第 3 页,如果结果不足 3 个,不会有影响
SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3
OFFSET 6;
如果是只限制返回前三条数据,我们可以这样:
sql
SELECT * FROM students ORDER BY age DESC LIMIT 3;
更新数据(Update)
使用UPDATE
语句可以更新表中的数据。
sql
UPDATE students SET age = 26 WHERE name = 'Alice';
删除数据(Delete)
使用DELETE
语句可以从表中删除数据。
java
DELETE FROM students WHERE name = 'Bob';
删除一整张表:
sql
-- 删除整张表数据
-- 准备测试表
DROP TABLE IF EXISTS for_delete;
CREATE TABLE for_delete (
id INT,
name VARCHAR(20)
);
-- 插入测试数据
INSERT INTO for_delete (name) VALUES ('A'), ('B'), ('C');
-- 删除整表数据
DELETE FROM for_delete;