了解 SQL 与数据库

SQL
介绍什么是 SQL,为什么它很有用,以及一些基本的数据库术语。
作者

Davon

发布于

2020年7月30日

修改于

2026年4月12日

1.1 数据库基础

数据库的典型应用场景:手机联系人、电子邮件地址簿、网站搜索、系统登录、ATM 取款机等。

1.1.1 基本概念

数据库(Database)
以某种有组织的方式存储的数据集合,是保存有组织数据的容器(通常是一个文件或一组文件)。
注意注意:误用导致混淆

用“数据库”代表数据库软件是不正确的,也因此产生大量混淆。 确切地说,数据库软件应称为数据库管理系统(DBMS)。 数据库是通过 DBMS 创建和操纵的容器,不同数据库的形式与实现各不相同。

(Table)
某种特定类型数据的结构化清单,可用于存储顾客清单、产品目录、订单信息等。

存储在表中的数据应为同一类型的数据或清单。不应将顾客清单与订单清单放在同一张表中,否则会给后续检索和访问带来困难。

  • 数据库中每个表拥有唯一的表名,同一数据库内不允许重名。
  • 不同数据库可以使用相同的表名,通过数据库名+表名保证全局唯一。

描述表的结构、数据存储规则、字段命名等信息,称为模式(schema)。模式既可以描述单张表,也可以描述整个数据库及表间关系。

模式(Schema)
关于数据库和表的布局及特性的信息。

1.1.2 列和数据类型

表由列(column)组成,一列存储表中某一类信息。

(Column)
表中的一个字段。所有表都由一个或多个列构成。

可以把数据库表想象成网格: 垂直方向是列,每列存储一类信息(如顾客编号、姓名、城市、邮编等)。

提示提示:数据分解

正确地将数据分解为多个列极为重要。 例如城市、州、邮政编码应拆分为独立列,才能按地区分类和筛选。 是否继续分解(如街道名与门牌号),取决于是否需要按其中某部分排序或筛选。

每个列都必须指定数据类型,用于限定该列可以存储什么内容。

数据类型(Datatype)
定义了列可以存储哪些数据种类,限制或允许某类数据存入。

数据类型的作用: - 保证数据规范,防止非法值录入

  • 优化存储与性能

  • 是不同 DBMS 之间兼容性差异的主要来源之一

注意注意:数据类型兼容问题

数据类型及其名称是 SQL 不兼容的主要原因。 多数基本类型通用,但高级类型差异很大,同一类型在不同 DBMS 中名称也可能不同。 设计表结构时需要特别注意。

1.1.4 行

表中的数据按存储,每条记录独占一行。

(Row)
表中的一个记录。
注记说明:记录还是行?

日常也常称为“记录(record)”,两个词基本通用。

从技术术语上讲,行(row) 是更标准的说法。

1.1.5 主键

表中每一行都应该有能唯一标识自己的一列或多列,例如:顾客编号、订单 ID、雇员 ID、ISBN 等。

主键(Primary Key)
一列或多列,其值能够唯一标识表中的每一行

主键用于精确定位某一行。没有主键,更新或删除数据时极易误操作。

提示提示:应该总是定义主键

虽然不是强制要求,但绝大多数数据库设计都会为每张表设置主键,便于后续数据维护。

主键必须满足以下条件:

  • 任意两行主键值不重复

  • 每一行必须有主键值(不允许 NULL

  • 主键值不允许修改或更新

  • 主键值一般不重复使用(删除行后,其主键不再分配给新行)

主键可以是单列,也可以是多列组合。多列主键要求所有列的组合值唯一,单列可以重复。

另一种重要的键:外键(Foreign Key),将在第 12 课介绍。

1.2 什么是 SQL

SQL(读作 S-Q-L 或 sequel)是 Structured Query Language(结构化查询语言) 的缩写,是专门用于与数据库沟通的语言。

SQL 设计目标非常明确:提供一种简单高效的方式,从数据库中读写和管理数据。

SQL 的优点

  • 不是某家厂商专有,绝大多数主流 DBMS 都支持

  • 语法简单,关键词少且接近自然英语,易学易用

  • 语法简洁但能力强大,可实现复杂高级的数据操作

注记SQL 的扩展

许多 DBMS 会在标准 SQL 基础上增加扩展语法,提供专属功能。

  • Oracle:PL/SQL

  • SQL Server:Transact-SQL

标准 SQL 由 ANSI 制定,称为 ANSI SQL