目录
- 简介
- SQL 的核心组成部分(主要语句类别)
- 1.数据查询语言
- 2.数据操作语言
- 3.数据定义语言
- 4.数据控制语言
- 5.事务控制语言 (管理数据库事务 - 一组要么全部成功要么全部失败的操作)
- 为什么 SQL 如此重要和流行?
- 学习 SQL 的关键概念
简介
SQL全程 Structured Query Language (结构化查询语言),一种专门用来与关系型数据库进行通信和交互的编程语言。
它允许你执行以下关键操作:
- 查询 (Query): 从数据库中检索你需要的特定数据(这是它最著名的功能)。
- 操作 (Manipulate): 插入新数据、更新现有数据、删除不需要的数据。
- 定义 (Define): 创建和修改数据库本身的结构(例如创建新表、修改表结构)。
- 控制 (Control): 管理谁可以访问数据库以及他们能做什么(设置权限)。
SQL 的核心组成部分(主要语句类别)
1.数据查询语言
SELECT: 这是 SQL 的灵魂!用于从一个或多个表中检索数据。
SELECT name, email FROM customers WHERE city = '北京';
-- 从 customers 表中选取所有城市是“北京”的客户的姓名(name)和邮箱(email)
2.数据操作语言
INSERT: 向表中插入新的行(记录)。
INSERT INTO products (name, price) VALUES ('T-Shirt', 29.99);
-- 向 products 表插入一条新记录,设置 name 为 'T-Shirt',price 为 29.99
UPDATE: 修改表中已有的行。
UPDATE employees SET salary = salary * 1.05 WHERE department = '研发部';
-- 将研发部所有员工的薪水(salary)提高 5%
DELETE: 从表中删除行。
DELETE FROM orders WHERE order_date < '2023-01-01';
-- 删除所有 2023 年 1 月 1 日之前的订单
3.数据定义语言
CREATE: 创建数据库对象(如表、视图、索引等)。
CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50) NOT NULL UNIQUE,password VARCHAR(100) NOT NULL,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 创建一个名为 users 的表,包含 id(主键、自增)、用户名(唯一、非空)、密码(非空)、创建时间(默认为当前时间戳)等列。
ALTER: 修改现有数据库对象的结构(如添加/删除列、修改数据类型)。
ALTER TABLE customers ADD COLUMN phone_number VARCHAR(20);
-- 向 customers 表添加一个名为 phone_number 的新列
DROP: 删除数据库对象(如表、视图等)。
DROP TABLE old_logs;
-- 删除名为 old_logs 的表(请谨慎使用!)
TRUNCATE: 快速删除表中的所有数据(保留表结构)。
TRUNCATE TABLE temp_data;
-- 清空 temp_data 表的所有数据
4.数据控制语言
GRANT: 授予用户或角色对数据库对象的特定权限(如 SELECT, INSERT, UPDATE)。
GRANT SELECT, INSERT ON orders TO sales_team;
-- 授予 sales_team 用户/角色在 orders 表上进行查询(SELECT)和插入(INSERT)的权限
REVOKE: 撤销之前授予的权限。
REVOKE DELETE ON customers FROM intern_user;
-- 撤销 intern_user 在 customers 表上的删除(DELETE)权限
5.事务控制语言 (管理数据库事务 - 一组要么全部成功要么全部失败的操作)
BEGIN TRANSACTION / START TRANSACTION: 开始一个新事务。
COMMIT: 提交事务,使所有修改永久生效。
ROLLBACK: 回滚事务,撤销事务内所做的所有修改。
SAVEPOINT: 在事务内设置保存点,以便回滚到该点。
为什么 SQL 如此重要和流行?
关系型数据库的基石: 它是访问和管理当今世界绝大部分结构化数据(存储在关系型数据库中)的主要方式。
广泛应用: 几乎任何涉及后台数据存储的软件系统都会用到 SQL:
网站(用户信息、产品、订单)
银行系统(账户、交易)
医院系统(病人记录)
库存管理系统
数据分析与商业智能
移动应用后端
高效灵活: 使用相对简洁的语句就能表达复杂的查询逻辑,高效地检索和操作大量数据。
声明式语言: 你主要描述你想要什么数据(SELECT name, email FROM… WHERE…),而不是详细指定计算机如何一步步去获取这些数据(像在过程式语言如 Python 或 Java 中那样)。数据库引擎的优化器会自动找出最高效的执行路径。
标准化的技能: 学习核心 SQL 技能后,你可以应用于许多不同的数据库系统(尽管可能需要学习一些特定方言的扩展)。
学习 SQL 的关键概念
除了语句本身,理解以下概念对有效使用 SQL 至关重要:
表: 数据存储的基本单位,由行(记录)和列(字段/属性)组成。想象成 Excel 工作表。
模式: 数据库对象的集合(表、视图、索引等)及其结构的定义。
主键: 唯一标识表中每一行的列(或列组合)。不能为空且必须唯一。
外键: 一个表中的列,其值引用另一个表的主键。用于建立表之间的关系(这正是“关系型”数据库的核心)。
索引: 类似于书籍的目录,用于加速对表中数据的查询(特别是 WHERE 和 JOIN 条件)。
连接: 通过 JOIN 操作(如 INNER JOIN, LEFT JOIN)将来自两个或多个表的相关数据组合在一起。这是关系型数据库强大功能的关键。
SELECT orders.order_id, customers.name, orders.order_date
FROM orders
INNER JOIN customers ON orders.customer_id = customers.id;
-- 将 orders 表和 customers 表连接起来,通过 customer_id 和 id 关联,查询订单ID、客户姓名和订单日期
聚合函数: 对一组值执行计算并返回单个值(如 COUNT(), SUM(), AVG(), MAX(), MIN()),常与 GROUP BY 子句一起使用。
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department;
-- 按部门(department)分组,计算每个部门的平均薪水
子查询: 嵌套在其他 SQL 查询中的查询。