SQL(Structured Query Language,结构化查询语言)主要用来操作关系型数据库(如 MySQL、PostgreSQL、Oracle、SQL Server 等)。语法分为几大类:
DDL
用于定义和管理数据库对象(数据库、表、视图、索引等)。 常见语法:
-- 创建数据库
CREATE DATABASE db_name;
-- 删除数据库
DROP DATABASE db_name;
-- 使用数据库
USE db_name;
-- 创建表
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 修改表
ALTER TABLE users ADD COLUMN email VARCHAR(100);
-- 删除表
DROP TABLE users;
DML
用于增删改查表中的数据。
-- 插入数据
INSERT INTO users (name, age, email) VALUES ('Tom', 20, 'tom@test.com');
-- 查询数据
SELECT id, name, age FROM users WHERE age > 18 ORDER BY age DESC;
-- 更新数据
UPDATE users SET age = 25 WHERE id = 1;
-- 删除数据
DELETE FROM users WHERE id = 1;
DQL
DQL 通常指 SELECT 语句,主要用于查询数据。
-- 基本查询 SELECT * FROM users; -- 条件查询 SELECT name, age FROM users WHERE age BETWEEN 18 AND 30; -- 聚合函数 SELECT COUNT(*) AS total_users, AVG(age) AS avg_age FROM users; -- 分组 SELECT age, COUNT(*) FROM users GROUP BY age; -- 多表连接 SELECT u.name, o.order_no FROM users u JOIN orders o ON u.id = o.user_id; -- 子查询 SELECT * FROM users WHERE id IN (SELECT user_id FROM orders);
DCL
用于权限管理。
-- 授权 GRANT SELECT, INSERT ON db_name.* TO 'user'@'localhost' IDENTIFIED BY 'password'; -- 回收权限 REVOKE INSERT ON db_name.* FROM 'user'@'localhost';
TCL
用于事务管理。
-- 开启事务 START TRANSACTION; -- 更新数据 UPDATE users SET age = 30 WHERE id = 2; -- 提交事务 COMMIT; -- 回滚事务 ROLLBACK;