1. SQL简介
SQL(Structured Query Language)是一种用于管理关系型数据库的标准语言。它主要包括以下四类操作:
- 数据查询语言(DQL):用于查询数据,如SELECT。
- 数据操作语言(DML):用于操作数据,如INSERT、UPDATE、DELETE。
- 数据定义语言(DDL):用于定义数据库结构,如CREATE、ALTER、DROP。
- 数据控制语言(DCL):用于控制数据库访问权限,如GRANT、REVOKE。
2. 数据查询语言(DQL)
2.1 基本查询(SELECT)
SELECT语句用于从表中查询数据。
- 查询所有列:
Bash
SELECT * FROM employees;
- 查询特定列:
Bash
SELECT name, salary FROM employees;
- 使用别名: 可以为列或表设置别名,使查询结果更易读。
SELECT name AS employee_name, salary AS employee_salary FROM employees;
2.2 条件查询(WHERE)
WHERE子句用于过滤满足特定条件的记录。
- 简单条件:
SELECT * FROM employees WHERE salary > 50000;
- 多条件组合: 使用AND、OR组合多个条件。
SELECT * FROM employees WHERE salary > 50000 AND position = 'Software Engineer';
- 模糊查询: 使用LIKE进行模糊匹配。
SELECT * FROM employees WHERE name LIKE 'J%'; -- 查询名字以J开头的员工
2.3 排序(ORDER BY)
ORDER BY子句用于对查询结果进行排序。
- 升序排序:
SELECT * FROM employees ORDER BY salary ASC;
- 降序排序:
SELECT * FROM employees ORDER BY salary DESC;
- 多列排序:
SELECT * FROM employees ORDER BY position ASC, salary DESC;
2.4 限制结果集(LIMIT)
LIMIT子句用于限制查询结果的数量。
- 限制行数:
SELECT * FROM employees LIMIT 10;
- 分页查询: 使用OFFSET跳过前几行。
SELECT * FROM employees LIMIT 10 OFFSET 20; -- 跳过前20行,返回接下来的10行
2.5 聚合函数
聚合函数用于对一组值进行计算并返回单个值。
- 常用聚合函数:
- COUNT():计算行数。
- SUM():计算总和。
- AVG():计算平均值。
- MAX():返回最大值。
- MIN():返回最小值。
- 示例:
SELECT COUNT(*) FROM employees; -- 计算员工总数
SELECT AVG(salary) FROM employees; -- 计算平均薪水
SELECT MAX(salary) FROM employees; -- 查询最高薪水
2.6 分组查询(GROUP BY)
GROUP BY子句用于将结果集按某列分组,通常与聚合函数一起使用。
- 按职位分组计算平均薪水:
SELECT position, AVG(salary) FROM employees GROUP BY position;
- 过滤分组结果(HAVING): HAVING子句用于过滤分组后的结果。
SELECT position, AVG(salary) FROM employees GROUP BY position HAVING AVG(salary) > 60000;
3. 数据操作语言(DML)
3.1 插入数据(INSERT)
INSERT语句用于向表中插入新记录。
- 插入单条记录:
INSERT INTO employees (name, position, salary) VALUES ('Alice', 'Data Scientist', 90000);
- 插入多条记录:
INSERT INTO employees (name, position, salary) VALUES
('Bob', 'Software Engineer', 80000),
('Charlie', 'Product Manager', 95000);
3.2 更新数据(UPDATE)
UPDATE语句用于更新表中的记录。
- 更新单条记录:
UPDATE employees SET salary = 85000 WHERE id = 1;
- 更新多条记录:
UPDATE employees SET salary = salary * 1.1 WHERE position = 'Software Engineer';
3.3 删除数据(DELETE)
DELETE语句用于删除表中的记录。
- 删除单条记录:
DELETE FROM employees WHERE id = 1;
- 删除所有记录:
DELETE FROM employees;
注意:DELETE语句会永久删除数据,请谨慎使用。