在数据处理与分析工作中,掌握数据库操作是提升效率的关键。本文将系统梳理SQL中最常用和核心的命令,帮助您快速上手数据查询与管理。
基础操作:数据的增删改查(CRUD)
1. 查询数据 - SELECT
SELECT语句用于从数据库中检索数据,是最常用的命令。
SELECT * FROM 用户表; -- 查看所有用户
SELECT 姓名,手机号 FROM 用户表; -- 只看姓名和手机号
SELECT * FROM 订单表 WHERE 金额 > 100; -- 筛选金额大于100的订单
SELECT * FROM 商品表 ORDER BY 价格 DESC; -- 按价格从高到低排序
SELECT COUNT(*) FROM 用户表; -- 统计用户总数
2. 插入数据 - INSERT
INSERT语句用于向表中添加新的数据行。
INSERT INTO 用户表 (姓名,年龄) VALUES ('张三',25); -- 添加一条记录
INSERT INTO 用户表 VALUES (1,'李四',30,'北京'); -- 添加完整记录(需匹配所有列)
3. 更新数据 - UPDATE
UPDATE语句用于修改表中现有的数据。
UPDATE 用户表 SET 年龄=26 WHERE 姓名='张三'; -- 修改张三的年龄
UPDATE 商品表 SET 价格=价格*0.8; -- 所有商品打8折
4. 删除数据 - DELETE
DELETE语句用于从表中删除数据行。
DELETE FROM 用户表 WHERE 年龄>60; -- 删除年龄大于60的用户
DELETE FROM 临时表; -- 清空整张表(操作需谨慎!)
进阶查询:复杂数据检索
5. 模糊查询 - LIKE
LIKE运算符用于在WHERE子句中搜索列中的指定模式。
SELECT * FROM 商品表 WHERE 名称 LIKE '%手机%'; -- 查找名称包含“手机”的商品
SELECT * FROM 用户表 WHERE 邮箱 LIKE 'zhang%@%'; -- 查找张姓邮箱用户
6. 数据分组与聚合 - GROUP BY
GROUP BY语句常与聚合函数(如COUNT, SUM, AVG)结合使用,用于对结果集进行分组统计。
SELECT 城市, COUNT(*) FROM 用户表 GROUP BY 城市; -- 统计各城市用户数
SELECT 月份, SUM(销售额) FROM 订单表 GROUP BY 月份; -- 按月统计销售额
7. 表连接 - JOIN
JOIN用于根据两个或多个表之间的相关列合并行,是进行多表关联查询的核心。
-- 内连接:返回两个表中匹配的行
SELECT * FROM 订单表 JOIN 用户表 ON 订单表.用户ID=用户表.ID;
-- 左连接:返回左表所有行,即使右表没有匹配
SELECT 用户.姓名,订单.金额 FROM 用户表 用户 LEFT JOIN 订单表 订单 ON 用户.ID=订单.用户ID;
8. 数据去重 - DISTINCT
DISTINCT关键字用于返回唯一不同的值。
SELECT DISTINCT 城市 FROM 用户表; -- 查看用户分布在哪些城市
SELECT DISTINCT 职位 FROM 员工表; -- 查看所有职位类型
数据定义与管理
9. 创建表 - CREATE TABLE
CREATE TABLE语句用于在数据库中创建新表,是数据存储结构的基础。
CREATE TABLE 员工表 (
ID INT PRIMARY KEY,
姓名 VARCHAR(50) NOT NULL,
入职日期 DATE DEFAULT CURRENT_DATE,
薪水 DECIMAL(10,2)
);
10. 修改表结构 - ALTER TABLE
ALTER TABLE语句用于添加、删除或修改现有表中的列。
ALTER TABLE 员工表 ADD 邮箱 VARCHAR(100); -- 添加邮箱字段
ALTER TABLE 员工表 DROP COLUMN 旧字段; -- 删除字段
ALTER TABLE 员工表 MODIFY 姓名 VARCHAR(100); -- 修改字段类型
11. 创建索引 - CREATE INDEX
索引可以大大提高数据库的查询速度。
CREATE INDEX idx_phone ON 用户表(手机号); -- 加速按手机号查询
CREATE UNIQUE INDEX idx_product_no ON 商品表(商品编号); -- 创建唯一索引
12. 事务控制 - 保证数据安全
事务用于确保一组SQL操作要么全部成功,要么全部失败,维护数据的一致性。
BEGIN TRANSACTION; -- 开始事务
-- 执行一系列数据操作...
UPDATE 账户表 SET 余额 = 余额 - 100 WHERE 用户ID = 1;
UPDATE 账户表 SET 余额 = 余额 + 100 WHERE 用户ID = 2;
COMMIT; -- 提交事务(确认所有更改)
-- 或 ROLLBACK; -- 回滚事务(取消所有更改)
实用操作技巧
- 安全第一:执行UPDATE和DELETE操作前,务必确认WHERE条件准确无误,避免误操作。
- 先查后改:在修改或删除数据前,可先用SELECT语句查询确认目标数据。
- 限制结果集:查询大表时,使用
LIMIT子句(如SELECT * FROM 大表 LIMIT 100;)可以防止返回过多数据导致系统缓慢。
- 善用注释:在复杂的SQL语句旁使用
-- 注释内容添加说明,便于理解和维护。