Kodokon kodokon.com

关系模型:表、行、列

了解数据库如何将信息组织成表,并在 SQLite 中创建你的第一张表。

8 分钟 · 3 题

在 Kodokon 中打开本课

数据库是一种以有组织、可持久的方式存储信息的软件,即使计算机关机后信息也不会丢失。最普遍的模型是关系模型:数据被组织成。一张表看起来就像一份电子表格:每一描述一个属性(一个标题、一个价格……),每一代表一个完整的条目(例如某一本具体的书)。SQL(结构化查询语言)是用来创建这些表并查询其内容的语言。你发送给数据库的每一条命令都称为一次查询

SQL
CREATE TABLE books (
  id INTEGER PRIMARY KEY,
  title TEXT,
  author TEXT,
  genre TEXT,
  year INTEGER,
  price REAL
);
我们的示例表:一个小型图书馆

让我们拆解这条查询。CREATE TABLE books 创建一张名为 books 的表。在圆括号内,每一行声明一个列:先是它的名字,然后是它的类型,也就是它所接受的数据种类。在 SQLite 中,主要的类型有 INTEGER(整数)、REAL(小数)、TEXT(文本)和 BLOB(二进制数据,例如图片)。值的缺失写作 NULL。最后,PRIMARY KEY 指定主键:这一列的值能唯一地标识每一行,就像案卷编号一样。

SQL
INSERT INTO books (id, title, author, genre, year, price)
VALUES
(1, 'Dune', 'Herbert', 'sf', 1965, 9.9),
(2, 'Fondation', 'Asimov', 'sf', 1951, 8.5),
(3, '1984', 'Orwell', 'sf', 1949, 7.2),
(4, 'Croc-Blanc', 'London', 'aventure', 1906, 5.5),
(5, 'Les Robots', 'Asimov', 'sf', 1950, 7.9),
(6, 'Deux ans de vacances', 'Verne', 'aventure', 1888, 6.9),
(7, 'Le Petit Prince', 'Saint-Exupery', 'conte', 1943, 6.5);
把这段代码直接粘贴到 CREATE TABLE 后面

INSERT INTO 查询向表中添加行:我们会在最后一课详细讲解它。请注意,文本值要用单引号'Dune')包裹,绝不用双引号。现在,我们用一条读取查询 SELECT 来检查一切是否就位。

SQL
SELECT * FROM books;
星号 * 表示 "所有列"

你应该会看到 7 行和 6 列:你的第一个数据库成功运行了。请妥善保存本课的 CREATE TABLE + INSERT 脚本:后面的每一课都依赖这张相同的 books 表。如果你关闭了浏览器或终端,只要重新运行一遍,就能从同一个起点重新开始。

知识检测

确认你已牢记本课的重点内容。

  1. 在一张表中,一行代表什么?
    • 一个属性,比如标题或价格
    • 一个完整的条目,比如某一本具体的书
    • 一个列的数据类型
  2. 哪种 SQLite 类型适合存储像 6.5 这样的价格?
    • INTEGER
    • TEXT
    • REAL
    • BLOB
  3. id 列上的 PRIMARY KEY 子句有什么作用?
    • 自动按字母顺序对行进行排序
    • 唯一地标识每一行
    • 禁止负数