2026-02-15 20:34:45
以下是20个数据分析师必知必会的SQL查询语句,涵盖数据查询、筛选、聚合、操作及表管理核心技能:
基础查询
查询所有列数据:SELECT * FROM 表名;
查询指定列数据:SELECT 列1, 列2 FROM 表名;
数据筛选
单条件筛选:SELECT * FROM 表名 WHERE 条件;(如 WHERE Location = 'Germany')
多条件组合筛选:SELECT * FROM 表名 WHERE 条件1 AND/OR 条件2;(如 WHERE salary > 10000 AND Location = 'UK')
筛选非空值:SELECT * FROM 表名 WHERE 列名 IS NOT NULL;
通配符模糊匹配:SELECT * FROM 表名 WHERE 列名 LIKE '%模式%';(如 LIKE '%a%' 匹配含字母“a”的值)
数据去重与排序
去重查询:SELECT DISTINCT 列1, 列2 FROM 表名;
单列排序:SELECT * FROM 表名 ORDER BY 列名 [ASC|DESC];(默认升序,DESC为降序)
多列排序:SELECT * FROM 表名 ORDER BY 列1 DESC, 列2 ASC;(按优先级依次排序)
字符串与数学运算
字符串拼接:SELECT CONCAT(列1, '分隔符', 列2) FROM 表名;(如拼接姓名)
数学运算:SELECT 数值列1 +/?/*// 数值列2 FROM 表名;(如计算薪资差额 TotalSalary - GrossSalary)
聚合函数
计数:SELECT COUNT(列名) FROM 表名;(统计非空行数)
平均值:SELECT AVG(数值列) FROM 表名;(如计算平均工资)
最大值:SELECT MAX(数值列) FROM 表名;(如查找最高薪资)
最小值:SELECT MIN(数值列) FROM 表名;(如查找最低薪资)
多表操作
并集(保留重复):SELECT 列名 FROM 表1 UNION ALL SELECT 列名 FROM 表2;
交集(仅保留共有值):SELECT 列名 FROM 表1 INTERSECT SELECT 列名 FROM 表2;
数据操作
插入数据:INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2), (值3, 值4);(支持批量插入)
更新数据:UPDATE 表名 SET 列1 = 值1, 列2 = 值2 [WHERE 条件];(如更新薪资 SET Salary = 20000)
删除数据:DELETE FROM 表名 [WHERE 条件];(无条件则清空全表)
表管理
创建表:
CREATE TABLE 表名 ( 列1 数据类型 [约束], 列2 数据类型 [约束]);(如 CREATE TABLE Employee (EmployeeID INT, FirstName VARCHAR(50));)删除表:DROP TABLE 表名;(彻底删除表结构及数据)
高级技巧
分组聚合:SELECT 列1, COUNT(*) FROM 表名 GROUP BY 列1;(如统计各部门人数)
子查询:SELECT * FROM 表1 WHERE 列1 IN (SELECT 列1 FROM 表2);(嵌套查询实现复杂逻辑)
分页查询:SELECT * FROM 表名 LIMIT 偏移量, 行数;(如 LIMIT 10, 20 跳过前10行取20行)
应用场景说明:
掌握这些语句可覆盖数据分析中80%以上的SQL需求,建议结合实际业务场景练习优化查询效率(如索引使用、避免SELECT *等)。