SQL语句全面知识整理与实战指南

一、SQL概述

SQL(Structured Query Language)是用于管理关系型数据库的标准语言,主要分为以下几类语句:

  1. 数据查询语言(DQL):SELECT

  2. 数据操作语言(DML):INSERT, UPDATE, DELETE

  3. 数据定义语言(DDL):CREATE, ALTER, DROP, RENAME, TRUNCATE

  4. 数据控制语言(DCL):GRANT, REVOKE

  5. 事务控制语言(TCL):COMMIT, ROLLBACK, SAVEPOINT

SQL分类示意图
SQL分类示意图

二、数据查询语言(DQL)

SELECT语句
基本语法:

SELECT [DISTINCT] column1, column2, ...
FROM table_name
[WHERE condition]
[GROUP BY column1, column2, ...]
[HAVING group_condition]
[ORDER BY column1 [ASC|DESC], ...]
[LIMIT offset, count];

使用规范:

  1. 关键字使用大写(非强制但推荐)

  2. 表名和列名使用小写和下划线命名法

  3. 复杂的查询使用缩进和换行提高可读性

应用场景:

  1. 从单表或多表中检索数据

  2. 对数据进行聚合计算

  3. 数据排序和筛选

常见错误:

  1. 在GROUP BY子句中遗漏非聚合列
-- 错误示例
SELECT department, employee_name, AVG(salary)
FROM employees;
-- 正确写法
SELECT department, employee_name, AVG(salary)
FROM employees
GROUP BY department, employee_name;
  1. 混淆WHERE和HAVING的使用时机
-- WHERE用于行级过滤
SELECT department, AVG(salary)
FROM employees
WHERE hire_date > '2020-01-01'
GROUP BY department;

-- HAVING用于组级过滤
SELECT department, AVG(salary)
FROM employees
GROUP BY department
HAVING AVG(salary) > 5000;

实战示例:

-- 多表连接查询
SELECT e.employee_id, e.name, d.department_name, j.job_title
FROM employees e
JOIN departments d ON e.department_id = d.department_id
JOIN jobs j ON e.job_id = j.job_id
WHERE e.hire_date BETWEEN '2019-01-01' AND '2021-12-31'
ORDER BY d.department_name, e.name;

-- 使用窗口函数
SELECT 
    employee_id,
    name,
    salary,
    department,
    RANK() OVER (PARTITION BY department ORDER BY salary DESC) as dept_rank
FROM employees;

三、数据操作语言(DML)

INSERT语句
基本语法:

-- 单行插入
INSERT INTO table_name (column1, column2, ...)
VALUES (value1
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值