SQL(结构化查询语言)是管理关系型数据库的标准语言,其命令涵盖数据定义、数据操作、数据查询和数据控制等多个方面,以下是对常用SQL数据库命令的详细梳理,帮助用户全面掌握其功能与应用。

数据定义语言(DDL)
DDL用于定义和管理数据库结构,核心命令包括:
- CREATE:创建数据库对象,如数据库、表、索引等。
CREATE DATABASE mydb; -- 创建数据库 CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50)); -- 创建表 CREATE INDEX idx_name ON users(name); -- 创建索引
- ALTER:修改现有数据库对象的结构。
ALTER TABLE users ADD COLUMN age INT; -- 添加列 ALTER TABLE users MODIFY name VARCHAR(100); -- 修改列定义
- DROP:删除数据库对象。
DROP TABLE users; -- 删除表 DROP INDEX idx_name; -- 删除索引
- TRUNCATE:清空表数据(保留表结构)。
TRUNCATE TABLE users; -- 快速删除所有行
数据操作语言(DML)
DML用于操作数据库中的数据,核心命令包括:
- INSERT:向表中插入数据。
INSERT INTO users (id, name, age) VALUES (1, 'Alice', 25);
- UPDATE:更新表中的数据。
UPDATE users SET age = 26 WHERE name = 'Alice';
- DELETE:删除表中的数据。
DELETE FROM users WHERE age < 18; -- 删除符合条件的行
数据查询语言(DQL)
DQL主要用于检索数据,核心命令是SELECT:
SELECT * FROM users WHERE age > 20 ORDER BY name DESC LIMIT 10; -- 查询年龄大于20的用户,按姓名降序排序,返回前10条
常用子句包括:

- WHERE:过滤条件(如
age = 25
)。 - GROUP BY:分组(如
GROUP BY department
)。 - HAVING:分组后过滤(如
HAVING COUNT(*) > 5
)。 - ORDER BY:排序(如
ORDER BY salary ASC
)。 - JOIN:多表关联(如
JOIN orders ON users.id = orders.user_id
)。
数据控制语言(DCL)
DCL用于管理数据库权限和事务,核心命令包括:
- GRANT:授予权限。
GRANT SELECT ON users TO 'user1'@'localhost'; -- 授予查询权限
- REVOKE:撤销权限。
REVOKE DELETE ON users FROM 'user1'@'localhost';
- COMMIT/ROLLBACK:事务控制(需配合
START TRANSACTION
使用)。START TRANSACTION; UPDATE accounts SET balance = balance - 100 WHERE id = 1; UPDATE accounts SET balance = balance + 100 WHERE id = 2; COMMIT; -- 提交事务 -- ROLLBACK; -- 回滚事务
其他实用命令
- SHOW:显示数据库对象信息。
SHOW TABLES; -- 列出所有表 SHOW DATABASES; -- 列出所有数据库
- USE:选择当前数据库。
USE mydb;
常用函数示例
函数类型 | 示例 | 说明 |
---|---|---|
聚合函数 | COUNT(*) , SUM(salary) |
统计行数、求和 |
字符串函数 | CONCAT(name, ' ', surname) |
拼接字符串 |
日期函数 | CURDATE() , DATEDIFF(date1, date2) |
获取当前日期、计算日期差 |
相关问答FAQs
Q1: SQL中DELETE
和TRUNCATE
有什么区别?
A: DELETE
是DML命令,可删除表中特定行(需配合WHERE条件),操作会记录日志,支持事务回滚;TRUNCATE
是DDL命令,删除表中所有数据且不记录日志,执行速度更快,但不可回滚,且会重置自增ID。
Q2: 如何优化复杂查询的性能?
A: 可通过以下方式优化:1)使用索引加速过滤和排序;2)避免SELECT *
,只查询必要列;3)对大表分页查询(如LIMIT offset, size
);4)拆分复杂子查询为临时表;5)定期执行ANALYZE TABLE
更新统计信息。
