【CS.DB】从零到精通:这可能是全网最全面最强大的SQL入门教程

文章目录

    • 1. 什么是SQL?
      • 1.1 SQL的历史
        • 1.1.1 SQL的标准化过程
    • 2. SQL基础语法
      • 2.1 数据库操作
        • 2.1.1 创建数据库
        • 2.1.2 删除数据库
      • 2.2 表操作
        • 2.2.1 创建表
        • 2.2.2 删除表
        • 2.2.3 修改表
      • 2.3 数据操作
        • 2.3.1 插入数据
        • 2.3.2 更新数据
        • 2.3.3 删除数据
      • 2.4 查询数据
        • 2.4.1 基本查询
        • 2.4.2 条件查询
        • 2.4.3 排序查询
        • 2.4.4 聚合函数
    • 3. 高级SQL语法
      • 3.1 连接操作
        • 3.1.1 内连接
        • 3.1.2 左连接
        • 3.1.3 右连接
        • 3.1.4 全外连接
      • 3.2 子查询
        • 3.2.1 简单子查询
        • 3.2.2 相关子查询
      • 3.3 联合查询
      • 3.4 GROUP BY 详解
        • 3.4.1 GROUP BY 语法
        • 3.4.2 创建示例数据
        • 3.4.3 经典例子
          • 3.4.3.1 按产品分组计算总销售数量
          • 3.4.3.2 按日期分组计算总销售数量
          • 3.4.3.3 按产品和日期分组计算总销售数量
      • 3.5 HAVING 子句
        • 3.5.1 使用 HAVING 进行过滤
        • 3.5.2 举例: 销售数据分析
          • 3.6.1.1 计算每个客户的总订单金额
          • 3.6.1.2 计算每个月的总销售额
          • 3.6.1.3 查找总订单金额超过1000的客户
    • 4. 数据完整性与约束
      • 4.1 主键约束
      • 4.2 外键约束
      • 4.3 唯一约束
      • 4.4 检查约束
    • 5. SQL函数
      • 5.1 字符串函数
      • 5.2 数学函数
      • 5.3 日期函数
    • 6. 视图
      • 6.1 创建视图
      • 6.2 查询视图
      • 6.3 删除视图
    • 7. 存储过程与函数
      • 7.1 创建存储过程
      • 7.2 调用存储过程
      • 7.3 创建函数
      • 7.4 调用函数
    • 8. 事务
      • 8.1 开始事务
      • 8.2 提交事务
      • 8.3 回滚事务
    • 9. SQL性能优化
      • 9.1 索引
      • 9.2 查询优化
      • 9.3 数据库设计优化
    • 10. SQL安全性
      • 10.1 用户权限管理
      • 10.2 数据加密
    • 11. 常见SQL错误与调试
      • 11.1 语法错误
      • 11.2 数据类型错误
      • 11.3 约束违反错误
    • 12. SQL工具与资源
      • 12.1 SQL客户端工具
      • 12.2 在线学习资源
      • 12.3 书籍推荐

【CS.DB】从零到精通:这可能是全网最全面最强大的SQL入门教程_第1张图片

1. 什么是SQL?

SQL(结构化查询语言)是一种用于管理和操作关系数据库的标准语言。它用于查询、更新、插入和删除数据库中的数据。

1.1 SQL的历史

SQL由IBM在20世纪70年代开发,并于1986年被美国国家标准协会(ANSI)采纳为标准。

1.1.1 SQL的标准化过程
  • 1970年:E.F. Codd提出关系数据库模型。
  • 1974年:IBM开始开发SQL。
  • 1986年:ANSI采纳SQL为标准。

2. SQL基础语法

2.1 数据库操作

2.1.1 创建数据库
CREATE DATABASE mydatabase;
2.1.2 删除数据库
DROP DATABASE mydatabase;

2.2 表操作

2.2.1 创建表
CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    first_name VARCHAR(50),
    last_name VARCHAR(50),
    birth_date DATE,
    hire_date DATE
);
2.2.2 删除表
DROP TABLE employees;
2.2.3 修改表
ALTER TABLE employees ADD COLUMN email VARCHAR(100);
ALTER TABLE employees DROP COLUMN email;

2.3 数据操作

2.3.1 插入数据
INSERT INTO employees (employee_id, first_name, last_name, birth_date, hire_date)
VALUES (1, 'John', 'Doe', '1980-01-01', '2020-01-01');
2.3.2 更新数据
UPDATE employees SET email = '[email protected]' WHERE employee_id = 1;
2.3.3 删除数据
DELETE FROM employees WHERE employee_id = 1;

2.4 查询数据

2.4.1 基本查询
SELECT * FROM employees;
2.4.2 条件查询
SELECT * FROM employees WHERE last_name = 'Doe';
2.4.3 排序查询
SELECT COUNT(*) FROM employees;
SELECT AVG(salary) FROM employees;
SELECT MAX(salary) FROM employees;
SELECT MIN(salary) FROM employees;
2.4.4 聚合函数
SELECT COUNT(*) FROM employees;
SELECT AVG(salary) FROM employees;
SELECT MAX(salary) FROM employees;
SELECT MIN(salary) FROM employees;

3. 高级SQL语法

3.1 连接操作

3.1.1 内连接

内连接用于返回两个表中存在匹配关系的行。

假设我们有两个表employeesdepartments,如下所示:

表:employees

employee_id first_name last_name department_id
1 John Doe 1
2 Jane Smith 2
3 Mike Johnson 3
4 Chris Lee NULL

表:departments

department_id department_name
1 HR
2 Finance
3 IT
4 Marketing

内连接查询:

SELECT employees.first_name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.

你可能感兴趣的:(数据库,sql,数据库)