SQL基础概念
0x01 什么是SQL?
SQL (Structured Query Language) 是一种用于管理关系型数据库的标准语言。它用于创建、查询、更新和管理数据库中的数据。
SQL 是数据库的通用语言,支持 MySQL、PostgreSQL、Oracle、SQL Server 等多种数据库系统。
0x02 数据库基本概念
关系型数据库
关系型数据库基于关系模型,使用表(Table)来存储数据。每个表由行(Row)和列(Column)组成。
-- 示例:创建一个简单的用户表
CREATE TABLE users (
id INT PRIMARY KEY,
username VARCHAR(50),
email VARCHAR(100),
created_at TIMESTAMP
);
核心术语
| 术语 | 说明 | 示例 |
|---|---|---|
| 数据库(Database) | 数据的集合 | mydb |
| 表(Table) | 数据的结构化存储 | users |
| 行(Row)/记录(Record) | 表中的一条数据 | 一个用户信息 |
| 列(Column)/字段(Field) | 数据的属性 | username, email |
| 主键(Primary Key) | 唯一标识每行的字段 | id |
| 外键(Foreign Key) | 关联其他表的字段 | user_id |
0x03 SQL语言分类
SQL 语言根据功能分为以下几类:
DDL(Data Definition Language)- 数据定义语言
用于定义数据库结构:
-- 创建表
CREATE TABLE products (
id INT PRIMARY KEY,
name VARCHAR(100),
price DECIMAL(10,2)
);
-- 修改表结构
ALTER TABLE products ADD COLUMN description TEXT;
-- 删除表
DROP TABLE products;
DML(Data Manipulation Language)- 数据操作语言
用于操作数据:
-- 插入数据
INSERT INTO products (id, name, price) VALUES (1, 'Laptop', 999.99);
-- 更新数据
UPDATE products SET price = 899.99 WHERE id = 1;
-- 删除数据
DELETE FROM products WHERE id = 1;
DQL(Data Query Language)- 数据查询语言
用于查询数据:
-- 查询所有数据
SELECT * FROM products;
-- 条件查询
SELECT name, price FROM products WHERE price < 1000;
-- 排序查询
SELECT * FROM products ORDER BY price DESC;
DCL(Data Control Language)- 数据控制语言
用于控制访问权限:
-- 授予权限
GRANT SELECT, INSERT ON products TO user1;
-- 撤销权限
REVOKE INSERT ON products FROM user1;
0x04 SQL语句基本结构
SQL 语句通常由关键字、表名、列名和条件组成:
SELECT column1, column2 -- 要查询的列
FROM table_name -- 要查询的表
WHERE condition -- 查询条件
ORDER BY column1 -- 排序方式
LIMIT 10; -- 限制结果数量
0x05 注释
SQL 支持单行和多行注释:
-- 这是单行注释
/* 这是多行注释
可以跨越多行 */
SELECT * FROM users; -- 行尾注释
0x06 数据库设计原则
范式(Normalization)
数据库设计遵循范式原则,以减少数据冗余:
- 第一范式(1NF):确保每列都是原子性的
- 第二范式(2NF):满足1NF,且非主键列完全依赖于主键
- 第三范式(3NF):满足2NF,且非主键列不依赖于其他非主键列
-- 示例:符合3NF的设计
CREATE TABLE customers (
customer_id INT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
order_date DATE,
total_amount DECIMAL(10,2),
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
参考
目录