前言

这里只是简单介绍 SQL 语言简介与简单使用


一、SQL 语言简介

SQL(Structured Query Language)是一种用于管理关系型数据库管理系统(RDBMS)的标准编程语言。主要功能包括:

  1. 数据定义:创建/修改数据库结构(表、索引等)
  2. 数据操作:增删改查(CRUD)数据
  3. 数据控制:权限管理和事务控制
  4. 数据查询:复杂数据检索与分析

核心特点:

  • 声明式语言:只需描述”做什么”,无需指定”怎么做”
  • ANSI 标准:跨平台兼容(MySQL, PostgreSQL, SQL Server, Oracle 等)
  • 分层语法
    • DDL:数据定义语言
    • DML:数据操作语言
    • DCL:数据控制语言
    • TCL:事务控制语言

二、SQL 使用手册

1. 数据定义语言(DDL)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-- 创建数据库
CREATE DATABASE company_db;

-- 创建表
CREATE TABLE employees (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
department VARCHAR(50),
salary DECIMAL(10,2),
hire_date DATE
);

-- 修改表结构
ALTER TABLE employees ADD COLUMN email VARCHAR(100);

-- 删除表
DROP TABLE temp_data;

2. 数据操作语言(DML)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-- 插入数据
INSERT INTO employees (name, department, salary, hire_date)
VALUES ('张三', '技术部', 15000.00, '2023-01-15');

-- 更新数据
UPDATE employees
SET salary = salary * 1.1
WHERE department = '技术部';

-- 删除数据
DELETE FROM employees
WHERE hire_date < '2020-01-01';

-- 查询数据(基础)
SELECT name, department, salary
FROM employees
WHERE salary > 10000
ORDER BY hire_date DESC;

3. 高级查询技巧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
-- 聚合函数
SELECT
department,
AVG(salary) AS avg_salary,
COUNT(*) AS employee_count
FROM employees
GROUP BY department
HAVING AVG(salary) > 12000;

-- 多表连接
SELECT
e.name,
d.department_name,
p.project_name
FROM employees e
JOIN departments d ON e.department_id = d.id
LEFT JOIN projects p ON e.id = p.lead_id;

-- 子查询
SELECT name, salary
FROM employees
WHERE salary > (
SELECT AVG(salary)
FROM employees
);

-- 分页查询(MySQL语法)
SELECT * FROM employees
ORDER BY hire_date
LIMIT 10 OFFSET 20; -- 跳过20条取10条

4. 数据控制语言(DCL)

1
2
3
4
5
6
7
8
9
10
11
-- 创建用户
CREATE USER 'data_analyst'@'localhost' IDENTIFIED BY 'secure_pwd';

-- 授予权限
GRANT SELECT ON company_db.* TO 'data_analyst'@'localhost';

-- 撤销权限
REVOKE DELETE ON company_db.salary_data FROM 'data_analyst'@'localhost';

-- 删除用户
DROP USER 'intern_user'@'localhost';

5. 事务控制(TCL)

1
2
3
4
5
6
7
8
START TRANSACTION;

UPDATE accounts SET balance = balance - 500 WHERE id = 1001;
UPDATE accounts SET balance = balance + 500 WHERE id = 2002;

-- 提交或回滚
COMMIT; -- 确认执行
-- ROLLBACK; -- 撤销操作

6. 常用函数速查

类型 函数示例 功能描述
聚合函数 SUM(), AVG() 求和/平均值
COUNT(), MAX/MIN() 计数/极值
字符串函数 CONCAT(), SUBSTR() 拼接/截取字符串
UPPER(), TRIM() 大小写转换/去空格
日期函数 NOW(), DATE_FORMAT() 当前时间/格式化日期
DATEDIFF(), YEAR() 日期差/提取年份
条件函数 CASE...WHEN 条件分支
COALESCE(), IFNULL() 空值处理

三、SQL 最佳实践

  1. 索引优化

    1
    2
    CREATE INDEX idx_department ON employees(department);
    -- 避免全表扫描
  2. 防注入攻击

    1
    2
    -- 使用参数化查询而非字符串拼接
    -- 错误示例: "SELECT * FROM users WHERE id = " + user_input
  3. 命名规范

    • 表名/列名使用蛇形命名法(employee_id
    • 保留字使用反引号包裹(`order`
  4. 性能提示

    • 避免SELECT * → 明确指定所需列
    • EXISTS替代IN处理大数据集
    • 定期使用EXPLAIN分析查询计划

四、总结

SQL 作为关系型数据库的核心交互语言,具有以下关键价值:
高效数据管理:通过简洁语法实现复杂数据操作
标准化接口:跨数据库平台的通用技能(需注意方言差异)
强扩展性:支持从基础CRUD到高级分析(窗口函数、CTE等)
安全可控:完善的权限体系和事务机制保障数据安全

学习建议

  1. 先掌握基础DDL/DML语法
  2. 精通多表连接和聚合查询
  3. 了解特定数据库的扩展语法(如MySQL的LIMIT,SQL Server的TOP)
  4. 通过EXPLAIN深入理解执行机制
  5. 在真实项目中实践优化技巧