SQL语句是关系型数据库管理系统的核心工具,用于管理、查询和操作数据,以下是SQL语句中常用的命令分类及详细说明,涵盖数据定义语言(DDL)、数据操作语言(DML)、数据查询语言(DQL)、数据控制语言(DCL)等核心功能。

数据定义语言(DDL)
DDL用于定义和管理数据库的结构,包括创建、修改和删除数据库对象。
-
CREATE:创建数据库或对象。
- 创建数据库:
CREATE DATABASE database_name;
- 创建表:
CREATE TABLE table_name (column1 datatype, column2 datatype, ...);
- 示例:
CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100));
- 创建数据库:
-
ALTER:修改现有数据库对象的结构。
- 添加列:
ALTER TABLE table_name ADD column_name datatype;
- 修改列:
ALTER TABLE table_name MODIFY column_name new_datatype;
- 删除列:
ALTER TABLE table_name DROP COLUMN column_name;
- 添加列:
-
DROP:删除数据库或对象。
(图片来源网络,侵删)- 删除表:
DROP TABLE table_name;
- 删除数据库:
DROP DATABASE database_name;
- 删除表:
-
TRUNCATE:清空表数据(保留表结构)。
- 示例:
TRUNCATE TABLE table_name;
- 示例:
数据操作语言(DML)
DML用于操作数据库中的数据,包括插入、更新和删除记录。
-
INSERT:向表中插入新数据。
- 基本语法:
INSERT INTO table_name (column1, column2) VALUES (value1, value2);
- 插入多行:
INSERT INTO table_name VALUES (value1, value2), (value3, value4);
- 基本语法:
-
UPDATE:更新表中的现有数据。
(图片来源网络,侵删)- 基本语法:
UPDATE table_name SET column1 = value1 WHERE condition;
- 示例:
UPDATE users SET email = 'new@example.com' WHERE id = 1;
- 基本语法:
-
DELETE:删除表中的数据。
- 基本语法:
DELETE FROM table_name WHERE condition;
- 注意:不加
WHERE
会删除所有数据,需谨慎使用。
- 基本语法:
数据查询语言(DQL)
DQL用于从数据库中检索数据,核心命令是SELECT
。
-
基本查询:
SELECT column1, column2 FROM table_name;
(查询指定列)SELECT * FROM table_name;
(查询所有列)
-
条件过滤(WHERE):
- 示例:
SELECT * FROM users WHERE age > 18 AND gender = 'Male';
- 示例:
-
排序(ORDER BY):
- 升序:
SELECT * FROM users ORDER BY age ASC;
- 降序:
SELECT * FROM users ORDER BY age DESC;
- 升序:
-
聚合函数:
- 常用函数:
COUNT()
,SUM()
,AVG()
,MAX()
,MIN()
- 示例:
SELECT COUNT(*) FROM users;
- 常用函数:
-
分组(GROUP BY):
- 示例:
SELECT department, COUNT(*) FROM employees GROUP BY department;
- 示例:
-
限制结果(LIMIT):
- 示例:
SELECT * FROM users LIMIT 10;
(返回前10条记录)
- 示例:
数据控制语言(DCL)
DCL用于控制数据库的访问权限和安全。
-
GRANT:授予用户权限。
- 示例:
GRANT SELECT, INSERT ON table_name TO 'user'@'localhost';
- 示例:
-
REVOKE:撤销用户权限。
- 示例:
REVOKE DELETE ON table_name FROM 'user'@'localhost';
- 示例:
其他常用命令
-
JOIN:用于多表查询。
- 内连接:
SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id;
- 左连接:
SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.id;
- 内连接:
-
UNION:合并多个查询结果。
- 示例:
SELECT column1 FROM table1 UNION SELECT column1 FROM table2;
- 示例:
-
索引(INDEX):提高查询效率。
- 创建索引:
CREATE INDEX idx_name ON table_name (column_name);
- 创建索引:
-
事务控制(Transaction Control):
BEGIN TRANSACTION
:开始事务。COMMIT
:提交事务。ROLLBACK
:回滚事务。
SQL常用命令速查表
功能分类 | 命令 | 语法示例 |
---|---|---|
DDL | CREATE | CREATE TABLE table_name (id INT); |
DDL | ALTER | ALTER TABLE table_name ADD COLUMN name VARCHAR(50); |
DDL | DROP | DROP TABLE table_name; |
DML | INSERT | INSERT INTO table_name VALUES (1, 'John'); |
DML | UPDATE | UPDATE table_name SET name = 'Jane' WHERE id = 1; |
DML | DELETE | DELETE FROM table_name WHERE id = 1; |
DQL | SELECT | SELECT * FROM table_name; |
DQL | WHERE | SELECT * FROM table_name WHERE age > 20; |
DQL | GROUP BY | SELECT COUNT(*) FROM table_name GROUP BY column; |
DCL | GRANT | GRANT SELECT ON table_name TO 'user'; |
DCL | REVOKE | REVOKE DELETE ON table_name FROM 'user'; |
相关问答FAQs
Q1: SQL中的JOIN
和UNION
有什么区别?
A1: JOIN
用于基于共同字段合并两个或多个表的行,生成包含两表数据的复合结果集;而UNION
用于合并两个或多个SELECT
语句的结果集,要求列数和数据类型一致,结果集默认去重(使用UNION ALL
可保留重复行)。JOIN
适合关联查询(如用户与订单),UNION
适合合并同类数据(如不同部门的员工列表)。
Q2: 如何优化包含WHERE
子句的SQL查询性能?
A2: 优化方法包括:
- 索引优化:在
WHERE
子句频繁使用的列上创建索引(如CREATE INDEX idx_age ON users(age);
)。 - 避免全表扫描:确保
WHERE
条件精确匹配(如用代替LIKE '%value%'
)。 - 限制返回数据:使用
LIMIT
减少数据传输量。 - 分析执行计划:通过
EXPLAIN SELECT * FROM table_name WHERE condition;
查看查询是否使用索引,调整SQL结构或索引策略。