1. 什么是SQL?
SQL(Structured Query Language,结构化查询语言)是用于管理和操作关系型数据库的标准语言。无论是网站开发、数据分析还是企业系统,SQL都是必备技能。
SQL的核心功能:
- 查询数据(如搜索用户信息)
- 增删改数据(如添加新商品、修改订单状态)
- 管理数据库结构(如创建表、修改字段)
- 控制访问权限(如限制用户只能查询不能删除)
2. SQL命令分类
SQL命令主要分为5类:
类别 | 命令 | 用途 |
---|---|---|
DQL(数据查询) | SELECT | 查询数据 |
DML(数据操作) | INSERT , UPDATE , DELETE | 增删改数据 |
DDL(数据定义) | CREATE , ALTER , DROP | 管理表结构 |
DCL(数据控制) | GRANT , REVOKE | 权限管理 |
TCL(事务控制) | COMMIT , ROLLBACK | 事务管理 |
接下来,我们通过实际案例详细介绍每类命令的用法。
3. DQL(数据查询语言)
核心命令:SELECT
(1)基本查询
-- 查询users表的所有数据
SELECT * FROM users;-- 只查询name和email列
SELECT name, email FROM users;
(2)条件查询(WHERE)
-- 查询年龄大于18岁的用户
SELECT * FROM users WHERE age > 18;-- 查询名字是"张三"的用户
SELECT * FROM users WHERE name = '张三';-- 查询2023年注册的用户(日期范围)
SELECT * FROM users
WHERE register_time BETWEEN '2023-01-01' AND '2023-12-31';
(3)排序(ORDER BY)
-- 按年龄升序(默认ASC)
SELECT * FROM users ORDER BY age;-- 按注册时间降序(DESC)
SELECT * FROM users ORDER BY register_time DESC;
(4)分组统计(GROUP BY)
-- 统计每个城市的用户数量
SELECT city, COUNT(*) AS user_count
FROM users
GROUP BY city;-- 查询订单总金额大于1000的用户
SELECT user_id, SUM(amount) AS total_amount
FROM orders
GROUP BY user_id
HAVING SUM(amount) > 1000;
4. DML(数据操作语言)
(1)插入数据(INSERT)
-- 插入单条数据
INSERT INTO users (name, email, age)
VALUES ('李四', 'lisi@example.com', 25);-- 插入多条数据
INSERT INTO users (name, email, age)
VALUES ('王五', 'wangwu@example.com', 30),('赵六', 'zhaoliu@example.com', 22);
(2)更新数据(UPDATE)
-- 将所有用户的年龄+1
UPDATE users SET age = age + 1;-- 只更新特定用户(ID=1)
UPDATE users SET email = 'new_email@example.com'
WHERE id = 1;
(3)删除数据(DELETE)
-- 删除ID=5的用户
DELETE FROM users WHERE id = 5;-- 删除所有年龄小于18的用户
DELETE FROM users WHERE age < 18;
5. DDL(数据定义语言)
(1)创建表(CREATE TABLE)
CREATE TABLE products (id INT PRIMARY KEY AUTO_INCREMENT, -- 主键,自增name VARCHAR(100) NOT NULL, -- 商品名,非空price DECIMAL(10, 2), -- 价格,小数点2位stock INT DEFAULT 0 -- 库存,默认0
);
(2)修改表(ALTER TABLE)
-- 添加新列
ALTER TABLE products ADD COLUMN description TEXT;-- 修改列类型
ALTER TABLE products MODIFY COLUMN price DECIMAL(12, 2);-- 删除列
ALTER TABLE products DROP COLUMN stock;
(3)删除表(DROP TABLE)
-- 删除表(慎用!数据会全部丢失)
DROP TABLE products;
6. DCL(数据控制语言)
(1)授予权限(GRANT)
-- 让用户test可以查询数据库
GRANT SELECT ON my_database.* TO 'test'@'localhost';-- 让用户admin拥有所有权限
GRANT ALL PRIVILEGES ON my_database.* TO 'admin'@'localhost';
(2)撤销权限(REVOKE)
-- 撤销test用户的删除权限
REVOKE DELETE ON my_database.* FROM 'test'@'localhost';
7. TCL(事务控制语言)
事务(Transaction)用于保证多个SQL操作的原子性,要么全部成功,要么全部失败。
(1)基本事务操作
-- 开始事务
BEGIN; -- 或 START TRANSACTION;-- 执行SQL(转账操作)
UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;-- 提交事务(如果成功)
COMMIT;-- 回滚事务(如果失败)
ROLLBACK;
(2)设置保存点(SAVEPOINT)
BEGIN;
-- 操作1
SAVEPOINT step1;
-- 操作2
SAVEPOINT step2;-- 回滚到step1
ROLLBACK TO step1;
8. 总结
命令类型 | 常用命令 | 用途 |
---|---|---|
DQL | SELECT | 查询数据 |
DML | INSERT , UPDATE , DELETE | 增删改数据 |
DDL | CREATE , ALTER , DROP | 管理表结构 |
DCL | GRANT , REVOKE | 权限管理 |
TCL | COMMIT , ROLLBACK | 事务控制 |
掌握这些SQL命令,你就能轻松操作数据库!建议多练习,结合实际项目加深理解。
下一篇预告: 《SQL高级查询:JOIN、子查询、索引优化》
欢迎点赞、收藏、关注! 🚀