Hello SQL
Hello SQL
本博客主要参考自廖雪峰的官方网站,非常感谢廖老师的分享!
一、前言
1. 数据与数据库简介
一个程序总是由数据和逻辑组成的。如何和数据交互,高效可靠的交互,是一门非常重要的学问。其衍生出了数据库系统这一重要的计算机分支。
数据库软件的历史其实非常悠久,早在上世纪60年代就已经出现了。随着计算机技术的发展,数据库系统也经历了多次变革,从最初的层次模型和网状模型,到最常用的关系模型,再到新兴的面向对象模型和NoSQL数据库。
发展至今,用的最广泛的数据库系统仍是关系型数据库。其把数据看作是一个二维表格,任何数据都可以通过行号+列号来唯一确定。相比于另外两个模型,关系模型更符合人类的思维习惯,更容易理解和使用。
2. 关系型数据库
关系型数据库由多张“表(Table)”组成。每张表:
- 像 Excel 表格一样
- 行(Row) 表示一条记录
- 列(Column) 表示属性
- 表与表之间通过 关系(外键) 连接
下面我们通过一个具体的例子(学生选课系统)来说明关系型数据库的结构和概念。
1️⃣ 学生表(Student)
| student_id | name | age |
|---|---|---|
| 1 | 张三 | 20 |
| 2 | 李四 | 21 |
- student_id:主键(唯一标识一个学生)
- 每一行 = 一个学生
2️⃣ 课程表(Course)
| course_id | course_name |
|---|---|
| 101 | 数学 |
| 102 | 英语 |
- course_id:主键
- 每一行 = 一门课程
3️⃣ 选课表(Enrollment)
| enroll_id | student_id | course_id |
|---|---|---|
| 1 | 1 | 101 |
| 2 | 1 | 102 |
| 3 | 2 | 101 |
- student_id:外键 → Student 表
- course_id:外键 → Course 表
- 表示“哪个学生选了哪门课”
4️⃣ 表之间的关系
- 一个学生 可以选多门课
- 一门课 可以被多个学生选
- 所以用一张 中间表(选课表) 来建立关系
1 | 学生(Student) ←→ 选课(Enrollment) ←→ 课程(Course) |
5️⃣ 关系型数据库的核心特点
用表存数据
用主键唯一标识数据
用外键建立表与表之间的关系
可以用 SQL 查询,比如:
- “张三选了哪些课?”
- “数学课有哪些学生?”
3. 数据类型
对于一个关系表,除了定义每一列的名称外,还需要定义每一列的数据类型。关系数据库支持的标准数据类型包括数值、字符串、时间等。
| 名称 | 类型 | 说明(取值范围 / 举例) |
|---|---|---|
| INT | 数值型(整数) | 常见范围约 −2³¹ ~ 2³¹−1,如:-10、0、100 |
| SMALLINT | 数值型(整数) | 较小整数,约 −32768 ~ 32767 |
| BIGINT | 数值型(整数) | 大整数,约 −2⁶³ ~ 2⁶³−1,如订单号 |
| FLOAT | 数值型(浮点) | 单精度浮点数,如:3.14(可能有精度误差) |
| DOUBLE | 数值型(浮点) | 双精度浮点数,如:3.1415926 |
| DECIMAL(p,s) | 数值型(定点) | 精确小数,p 为总位数,s 为小数位,如 DECIMAL(6,2) → 9999.99 |
| CHAR(n) | 字符串型 | 定长 n 个字符,如 CHAR(2) → '男'、'女' |
| VARCHAR(n) | 字符串型 | 变长字符串,最长 n 个字符,如 VARCHAR(20) → '张三' |
| TEXT | 字符串型 | 长文本,如文章内容、备注说明 |
| DATE | 时间型 | 日期,如 2025-10-01 |
| TIME | 时间型 | 时间,如 14:30:00 |
| TIMESTAMP | 时间型 | 日期+时间,如 2025-10-01 14:30:00 |
| BOOLEAN | 布尔型 | TRUE / FALSE(或 1 / 0) |
| BLOB | 二进制型 | 二进制数据,如图片、音频文件 |
| CLOB | 字符大对象 | 大规模文本,如长文档、日志 |
4. 常见数据库
商用数据库,例如:Oracle,SQL Server,DB2等;
开源数据库,例如:MySQL,PostgreSQL等;
桌面数据库,以微软Access为代表,适合桌面应用程序使用;
嵌入式数据库,以Sqlite为代表,适合手机应用和桌面程序。
5. SQL
上面说了那么多理论的,我们实际实现是怎么做的呢?这就要用到SQL了。
SQL(Structured Query Language)是一种用于管理和操作关系型数据库的标准语言。它提供了一套丰富的语法,用于执行各种数据库操作,如查询、插入、更新和删除数据。
