sql分类
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;