mysql基础
-
增删改查
-
多表操作
- 一对一
- 一对多
- 多对多
- 多表查询
- 内连接
- 外连接
- 子查询
-
查询数据库
- 条件查询
- 聚合函数查询
- 排序查询
- 分组查询
- 分页查询
多表操作
一对一
-
特点:一个表中的一条记录与另一个表中的一条记录相关联。
-
实现方式:使用主键和外键的约束。
示例:
-- 用户表
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(100)
);
-- 用户详情表
CREATE TABLE user_details (
id INT PRIMARY KEY,
user_id INT UNIQUE,
address VARCHAR(255),
FOREIGN KEY (user_id) REFERENCES users(id)
);
# 查询某用户的详情:
SELECT u.name, d.address
FROM users u
INNER JOIN user_details d ON u.id = d.user_id;
一对多
- 特点:一个表中的一条记录与另一个表中的多条记录相关联。
- 实现方式:在“多”的一方设置外键
示例:
-- 部门表
CREATE TABLE departments (
id INT PRIMARY KEY,
name VARCHAR(100)
);
-- 员工表
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100),
department_id INT,
FOREIGN KEY (department_id) REFERENCES departments(id)
);
# 查询部门及其员工:
SELECT d.name AS department_name, e.name AS employee_name
FROM departments d
LEFT JOIN employees e ON d.id = e.department_id;
多对多
- 特点:一个表中的一条记录与另一个表中的多条记录相关联,反之亦然。
- 实现方式:通过中间表实现关联。
示例:
-- 学生表
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(100)
);
-- 课程表
CREATE TABLE courses (
id INT PRIMARY KEY,
name VARCHAR(100)
);
-- 学生课程中间表
CREATE TABLE student_courses (
student_id INT,
course_id INT,
PRIMARY KEY (student_id, course_id),
FOREIGN KEY (student_id) REFERENCES students(id),
FOREIGN KEY (course_id) REFERENCES courses(id)
);
# 查询某学生选修的课程:
SELECT s.name AS student_name, c.name AS course_name
FROM students s
INNER JOIN student_courses sc ON s.id = sc.student_id
INNER JOIN courses c ON sc.course_id = c.id;
多表查询
内连接
- 仅返回两个表中匹配的记录。
- 使用
INNER JOIN
示例:
SELECT employees.name, departments.name
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;
外连接
-
使用
LEFT JOIN、RIGHT JOIN -
LEFT JOIN:返回左表的所有记录,即使右表中没有匹配记录。
-
RIGHT JOIN:返回右表的所有记录,即使左表中没有匹配记录。
示例:
-- LEFT JOIN
SELECT employees.name, departments.name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;
子查询
- 使用查询的结果作为另一个查询的条件。
示例:
# 查询工资高于部门平均工资的员工:
SELECT name
FROM employees
WHERE salary > (
SELECT AVG(salary) FROM employees WHERE department_id = 1
);
查询数据库
条件查询
- 使用
WHERE子句过滤数据。
聚合函数查询
- 常见聚合函数:
COUNT():计数SUM():求和AVG():平均值MAX():最大值MIN():最小值
排序查询
- 使用
ORDER BY子句进行排序。 - 升序:
ASC(默认);降序:DESC。
示例:
SELECT * FROM employees ORDER BY salary DESC;
分组查询
- 使用
GROUP BY对结果进行分组,结合聚合函数。
示例:
# 查询每个部门的员工数量
SELECT department_id, COUNT(*) AS employee_count
FROM employees
GROUP BY department_id;
分页查询
- LIMIT
- 和 OFFSET
- 用于分页。
# 查询第 2 页的数据(每页 10 条记录)
SELECT * FROM employees
ORDER BY id
LIMIT 10 OFFSET 10;
模糊查询
- 使用Like
%表示任意多个字符
SELECT * FROM User WHERE name LIKE '%qw%';