一、基础语法
1. 基本查询操作
- SELECT:从表中选取数据,支持多列、别名(
AS)、去重(DISTINCT)及分页(LIMIT/TOP)。SELECT name, age FROM users WHERE age > 20 ORDER BY age DESC LIMIT 10; - WHERE:条件过滤,支持逻辑运算符(
AND/OR/NOT)和范围匹配(BETWEEN/IN/LIKE)。 - ORDER BY:结果排序,默认升序(
ASC),可指定多列排序。 - DISTINCT:去重,常用于统计唯一值。
2. 数据操作(CRUD)
- 增(INSERT):插入单条或多条记录。
INSERT INTO employees (id, name) VALUES (1, 'John'), (2, 'Jane'); - 删(DELETE):删除符合条件的记录。
DELETE FROM orders WHERE order_date < '2020-01-01'; - 改(UPDATE):更新表中数据。
UPDATE products SET price = price * 0.9 WHERE category = 'Electronics';
3. 表操作(DDL)
- CREATE TABLE:定义表结构及约束(主键、外键、唯一性)。
CREATE TABLE customers ( id INT PRIMARY KEY, name VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE ); - ALTER TABLE:修改表结构(添加/删除列、修改约束)。
- DROP TABLE:删除表。
二、进阶语法
1. 多表查询与联接
- JOIN类型:
INNER JOIN:返回两表匹配的记录。LEFT JOIN/RIGHT JOIN:保留左/右表所有记录,未匹配部分填充NULL。FULL JOIN:返回所有记录,无论是否匹配。
SELECT * FROM orders LEFT JOIN customers ON orders.customer_id = customers.id; - 子查询:嵌套查询实现复杂逻辑(如过滤条件、多行比较)。
SELECT name FROM employees WHERE department_id IN (SELECT id FROM departments WHERE location = 'New York');
2. 聚合与分组
- 聚合函数:
COUNT()、SUM()、AVG()、MAX()、MIN()。 - GROUP BY:按列分组后应用聚合函数。
SELECT department_id, COUNT(*), AVG(salary) FROM employees GROUP BY department_id HAVING COUNT(*) > 5;
3. 视图与索引
- 视图(View):虚拟表,简化复杂查询。
CREATE VIEW high_salary_employees AS SELECT * FROM employees WHERE salary > 100000; - 索引(Index):加速查询,但需权衡写入性能。
CREATE INDEX idx_name ON employees(name);
三、高级语法
1. 事务与锁
- 事务控制:确保操作原子性(
BEGIN TRANSACTION、COMMIT、ROLLBACK)。BEGIN TRANSACTION; UPDATE accounts SET balance = balance - 100 WHERE id = 1; UPDATE accounts SET balance = balance + 100 WHERE id = 2; COMMIT; - 隔离级别:控制事务并发读写行为(如
READ COMMITTED、REPEATABLE READ)。
2. 存储过程与游标
- 存储过程:预编译代码块,支持条件逻辑(
IF/CASE)和循环(WHILE/FOR)。CREATE PROCEDURE get_employee_count @dep_id INT AS BEGIN SELECT COUNT(*) FROM employees WHERE department_id = @dep_id; END; - 游标:逐行处理查询结果。
DECLARE @name VARCHAR(50); DECLARE cursor_employees CURSOR FOR SELECT name FROM employees; OPEN cursor_employees; FETCH NEXT FROM cursor_employees INTO @name;
3. 性能优化与高级函数
- 窗口函数:
ROW_NUMBER()、RANK()、SUM() OVER(),实现复杂分析。SELECT name, salary, ROW_NUMBER() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rank FROM employees; - EXPLAIN:分析查询执行计划,优化索引使用。
- 物化视图:预计算复杂查询结果,提升读取性能。
四、学习建议
- 分阶段练习:从基础查询开始,逐步掌握多表联接、事务等高级功能。
- 实战项目:设计数据库并实现增删改查,模拟电商或日志系统场景。
- 性能调优:结合
EXPLAIN分析慢查询,合理使用索引与分库分表。
如需更详细的语法示例或特定数据库(如MySQL、Oracle)的差异,可参考原文来源。
1154

被折叠的 条评论
为什么被折叠?



