在 MySQL 数据库管理系统中,SQL 语句可以根据其功能分为不同的类别,主要包括 DDL(数据定义语言)、DML(数据操作语言)、DQL(数据查询语言)和 DCL(数据控制语言)。每一类语句都有其特定的用途和操作对象。本文将详细介绍这四类 SQL 语句及其常用的命令。
1. 数据定义语言(DDL)
DDL(Data Definition Language)用于定义和管理数据库结构或模式。这类语句主要包括创建、修改和删除数据库对象(如数据库、表、索引等)。
命令 | 描述 | 示例 |
---|---|---|
CREATE | 创建数据库或表 | CREATE DATABASE mydatabase; CREATE TABLE users (id INT, username VARCHAR(50)); |
ALTER | 修改数据库对象 | ALTER TABLE users ADD COLUMN age INT; |
DROP | 删除数据库或表 | DROP DATABASE mydatabase; DROP TABLE users; |
TRUNCATE | 清空表数据 | TRUNCATE TABLE users; |
CREATE:用于创建数据库和表。
-- 创建数据库 CREATE DATABASE mydatabase; -- 创建表 CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) );
ALTER:用于修改已有的数据库对象。
-- 修改表,添加新列 ALTER TABLE users ADD COLUMN age INT; -- 修改表,修改列数据类型 ALTER TABLE users MODIFY COLUMN username VARCHAR(100);
DROP:用于删除数据库或表。
-- 删除数据库 DROP DATABASE mydatabase; -- 删除表 DROP TABLE users;
TRUNCATE:用于清空表中的所有数据,但不删除表结构。
TRUNCATE TABLE users;
2. 数据操作语言(DML)
DML(Data Manipulation Language)用于对表中的数据进行操作,包括插入、更新和删除数据。
DML(Data Manipulation Language)用于对表中的数据进行操作,包括插入、更新和删除数据。
命令 | 描述 | 示例 |
---|---|---|
INSERT | 插入数据 | INSERT INTO users (username, email) VALUES ('Alice', 'alice@example.com'); |
UPDATE | 更新数据 | UPDATE users SET email = 'alice_new@example.com' WHERE username = 'Alice'; |
DELETE | 删除数据 | DELETE FROM users WHERE username = 'Alice'; |
INSERT:用于向表中插入数据。
-- 插入单行数据 INSERT INTO users (username, email, age) VALUES ('Alice', 'alice@example.com', 30); -- 插入多行数据 INSERT INTO users (username, email, age) VALUES ('Bob', 'bob@example.com', 25), ('Charlie', 'charlie@example.com', 35);
UPDATE:用于更新表中的数据。
-- 更新单行数据 UPDATE users SET email = 'alice_new@example.com' WHERE username = 'Alice'; -- 更新多行数据 UPDATE users SET age = age + 1 WHERE age < 30;
DELETE:用于删除表中的数据。
-- 删除单行数据 DELETE FROM users WHERE username = 'Alice'; -- 删除多行数据 DELETE FROM users WHERE age > 40;
3. 数据查询语言(DQL)
DQL(Data Query Language)主要用于查询数据库中的数据。最常用的 DQL 命令是 SELECT。
命令 | 描述 | 示例 |
---|---|---|
SELECT | 查询数据 | SELECT * FROM users; SELECT username, email FROM users; SELECT * FROM users WHERE age > 30; |
- SELECT:用于从表中查询数据。
-- 查询所有列 SELECT * FROM users; -- 查询特定列 SELECT username, email FROM users; -- 带条件的查询 SELECT * FROM users WHERE age > 30; -- 排序查询 SELECT * FROM users ORDER BY age DESC; -- 分组查询 SELECT age, COUNT(*) FROM users GROUP BY age; -- 联合查询 SELECT users.username, orders.order_id FROM users JOIN orders ON users.id = orders.user_id;
4. 数据控制语言(DCL)
DCL(Data Control Language)用于控制数据库的访问权限和安全性。这类语句包括授予和撤销用户的权限。
命令 | 描述 | 示例 |
---|---|---|
GRANT | 授予权限 | GRANT SELECT ON mydatabase.* TO 'username'@'host'; |
REVOKE | 撤销权限 | REVOKE SELECT ON mydatabase.* FROM 'username'@'host'; |
GRANT:用于授予用户权限。
-- 授予用户读取数据库的权限 GRANT SELECT ON mydatabase.* TO 'username'@'host'; -- 授予用户所有权限 GRANT ALL PRIVILEGES ON mydatabase.* TO 'username'@'host';
REVOKE:用于撤销用户权限。
-- 撤销用户读取数据库的权限 REVOKE SELECT ON mydatabase.* FROM 'username'@'host'; -- 撤销用户所有权限 REVOKE ALL PRIVILEGES ON mydatabase.* FROM 'username'@'host';
总结
理解和熟练运用 DDL、DML、DQL 和 DCL 是管理和操作 MySQL 数据库的基础。通过这些 SQL 语句,你可以有效地对数据库进行定义、操作、查询和权限控制,从而满足各种应用场景的需求。