SQL总结 4 months ago
博客大纲
SQL 语句详细分类
1. 数据查询语句(DQL - Data Query Language)
- SELECT: 用于从数据库中查询数据。
sql SELECT column1, column2 FROM table_name WHERE condition;
- 多表查询(JOIN): - INNER JOIN: 返回两个表中匹配的记录。sql SELECT a.column1, b.column2 FROM table_a a INNER JOIN table_b b ON a.id = b.a_id;
- LEFT JOIN: 返回左表的所有记录和右表中匹配的记录。sql SELECT a.column1, b.column2 FROM table_a a LEFT JOIN table_b b ON a.id = b.a_id;
- RIGHT JOIN: 返回右表的所有记录和左表中匹配的记录。sql SELECT a.column1, b.column2 FROM table_a a RIGHT JOIN table_b b ON a.id = b.a_id;
- FULL JOIN: 返回两个表中所有记录,不匹配的部分用 NULL 填充。sql SELECT a.column1, b.column2 FROM table_a a FULL JOIN table_b b ON a.id = b.a_id;
- 子查询:sql SELECT column1 FROM table_name WHERE column2 IN (SELECT column2 FROM another_table WHERE condition);
- 聚合函数:
COUNT()
: 统计行数。SUM()
: 求和。AVG()
: 求平均值。MAX()
: 求最大值。MIN()
: 求最小值。sql SELECT COUNT(*) FROM table_name; SELECT AVG(column1) FROM table_name;
- 聚合函数:
2. 数据操作语句(DML - Data Manipulation Language)
- INSERT: 向表中插入新记录。
sql INSERT INTO table_name (column1, column2) VALUES (value1, value2);
- 插入多行:sql INSERT INTO table_name (column1, column2) VALUES (value1, value2), (value3, value4);
- UPDATE: 更新表中的现有记录。
sql UPDATE table_name SET column1 = value1 WHERE condition;
- DELETE: 从表中删除记录。sql DELETE FROM table_name WHERE condition;
3. 数据定义语句(DDL - Data Definition Language)
CREATE: 创建数据库对象(如表、索引、视图等)。
sql CREATE TABLE table_name ( column1 datatype constraints, column2 datatype constraints );
- 创建索引:sql CREATE INDEX index_name ON table_name (column1);
- 创建视图:
sql CREATE VIEW view_name AS SELECT column1, column2 FROM table_name WHERE condition;
- ALTER: 修改数据库对象的结构。 - 添加字段:sql ALTER TABLE table_name ADD column_name datatype;
- 修改字段类型:
sql ALTER TABLE table_name MODIFY column_name new_datatype;
- 删除字段:sql ALTER TABLE table_name DROP COLUMN column_name;
- 重命名字段:
sql ALTER TABLE table_name RENAME COLUMN old_name TO new_name;
- DROP: 删除数据库对象。sql DROP TABLE table_name;
- 创建视图:
TRUNCATE: 删除表中的所有数据,但不删除表结构。
TRUNCATE TABLE table_name;
4. 数据控制语句(DCL - Data Control Language)
- GRANT: 授予用户访问权限。
sql GRANT SELECT, INSERT ON table_name TO user_name;
- GRANT: 授予用户访问权限。
REVOKE: 撤销用户的访问权限。
REVOKE SELECT, INSERT ON table_name FROM user_name;
5. 事务控制语句(TCL - Transaction Control Language)
- BEGIN TRANSACTION: 开始一个事务。
sql BEGIN TRANSACTION;
- BEGIN TRANSACTION: 开始一个事务。
COMMIT: 提交事务,使所有更改永久生效。
COMMIT;
- ROLLBACK: 回滚事务,撤销未提交的更改。
sql ROLLBACK;
- ROLLBACK: 回滚事务,撤销未提交的更改。
SAVEPOINT: 在事务中设置保存点,以便部分回滚。
SAVEPOINT savepoint_name;
6. 其他常用语句
- USE: 选择数据库。
sql USE database_name;
- USE: 选择数据库。
SHOW: 显示数据库对象的信息。
SHOW TABLES; SHOW DATABASES;
- DESCRIBE: 显示表的结构。
sql DESCRIBE table_name;
- DESCRIBE: 显示表的结构。
UNION: 合并多个查询结果。
SELECT column1 FROM table1 UNION SELECT column1 FROM table2;
- GROUP BY: 对结果集进行分组。
sql SELECT column1, COUNT(*) FROM table_name GROUP BY column1;
- GROUP BY: 对结果集进行分组。
HAVING: 对分组后的结果进行过滤。
SELECT column1, COUNT(*) FROM table_name GROUP BY column1 HAVING COUNT(*) > 10;
7. 高级查询技巧
- 窗口函数:
ROW_NUMBER()
: 为每一行分配一个唯一的行号。sql SELECT column1, ROW_NUMBER() OVER (ORDER BY column1) AS row_num FROM table_name;
RANK()
: 为每一行分配一个排名,相同值会有相同的排名。sql SELECT column1, RANK() OVER (ORDER BY column1) AS rank FROM table_name;
- 递归查询(WITH RECURSIVE):sql WITH RECURSIVE cte AS ( SELECT initial_query UNION ALL SELECT recursive_query FROM cte WHERE condition ) SELECT * FROM cte;
- 窗口函数:
总结
- DQL: 查询数据(SELECT)。
- DML: 操作数据(INSERT、UPDATE、DELETE)。
- DDL: 定义和修改数据库结构(CREATE、ALTER、DROP、TRUNCATE)。
- DCL: 控制数据访问权限(GRANT、REVOKE)。
- TCL: 控制事务(COMMIT、ROLLBACK、SAVEPOINT)。
- 高级功能: 多表查询、子查询、窗口函数、递归查询等。
通过掌握这些 SQL 语句,可以更高效地管理和操作数据库!
- 上一篇: 详解 sql index