- CRUD 操作
- Create(插入数据)
- 基本语法:使用
INSERT INTO
语句将数据插入到表中。例如,有一个名为students
的表,包含id
(整数类型,自动递增)、name
(字符串类型)和age
(整数类型)三个字段,插入一条记录的语句如下:
INSERT INTO students (name, age) VALUES ('John', 20);
- 批量插入:可以一次插入多条记录。例如:
INSERT INTO students (name, age) VALUES ('Alice', 22), ('Bob', 21);
- Read(查询数据)
- 基本查询:使用
SELECT
语句查询表中的数据。例如,查询students
表中的所有记录:
SELECT * FROM students;
- 条件查询:通过
WHERE
子句筛选符合条件的记录。例如,查询年龄大于 20 岁的学生:
SELECT * FROM students WHERE age > 20;
- 排序查询:使用
ORDER BY
子句对查询结果进行排序。例如,按照年龄升序查询学生记录:
SELECT * FROM students ORDER BY age;
- Update(更新数据)
- 基本语法:使用
UPDATE
语句更新表中的数据。例如,将名为John
的学生年龄更新为 21 岁:
UPDATE students SET age = 21 WHERE name = 'John';
- Delete(删除数据)
- 基本语法:使用
DELETE FROM
语句删除表中的数据。例如,删除年龄小于 20 岁的学生记录:
DELETE FROM students WHERE age < 20;
- 复合查询
- 连接查询(JOIN)
- 内连接(INNER JOIN):返回两个表中满足连接条件的行。例如,有一个
courses
表(包含course_id
、course_name
)和一个student_courses
表(包含student_id
、course_id
),要查询学生所选课程的信息,可以使用内连接:
SELECT students.name, courses.course_name FROM students INNER JOIN student_courses ON students.id = student_courses.student_id INNER JOIN courses ON student_courses.course_id = courses.course_id;
- 左连接(LEFT JOIN):返回左表中的所有行以及右表中满足连接条件的行。如果右表中没有匹配的行,则用
NULL
填充。例如,查询所有学生及其所选课程(如果有):
SELECT students.name, courses.course_name FROM students LEFT JOIN student_courses ON students.id = student_courses.student_id LEFT JOIN courses ON student_courses.course_id = courses.course_id;
- 子查询
- 基本概念:子查询是嵌套在其他查询中的查询。例如,要查询年龄大于平均年龄的学生,可以先计算平均年龄作为子查询,然后在外部查询中使用这个结果:
SELECT * FROM students WHERE age > (SELECT AVG(age) FROM students);
- 聚合函数与分组查询(GROUP BY)
- 聚合函数:包括
SUM
(求和)、AVG
(求平均值)、COUNT
(计数)、MAX
(求最大值)和MIN
(求最小值)。例如,计算学生的平均年龄:
SELECT AVG(age) FROM students;
- 分组查询:与聚合函数一起使用,用于对数据进行分组统计。例如,统计每个年龄段的学生人数:
SELECT age, COUNT(*) FROM students GROUP BY age;
- Having 子句:
HAVING
子句用于对分组后的结果进行筛选。例如,查询学生人数大于 1 的年龄段:
SELECT age, COUNT(*) FROM students GROUP BY age HAVING COUNT(*) > 1;