创建表后,您需要填充它。LOAD DATA
和 INSERT
语句对此很有用。
假设您的宠物记录可以描述如下。(请注意,MySQL 期望日期采用 '
格式;这可能与您习惯的格式不同。)YYYY-MM-DD
'
姓名 | 主人 | 物种 | 性别 | 出生日期 | 死亡日期 |
---|---|---|---|---|---|
Fluffy | Harold | 猫 | 雌性 | 1993-02-04 | |
Claws | Gwen | 猫 | 雄性 | 1994-03-17 | |
Buffy | Harold | 狗 | 雌性 | 1989-05-13 | |
Fang | Benny | 狗 | 雄性 | 1990-08-27 | |
Bowser | Diane | 狗 | 雄性 | 1979-08-31 | 1995-07-29 |
Chirpy | Gwen | 鸟 | 雌性 | 1998-09-11 | |
Whistler | Gwen | 鸟 | 1997-12-09 | ||
Slim | Benny | 蛇 | 雄性 | 1996-04-29 |
因为您是从一个空表开始,所以填充它的一个简单方法是创建一个文本文件,其中包含每只动物的一行记录,然后使用一条语句将文件的内容加载到表中。
您可以创建一个文本文件 pet.txt
,其中每行包含一条记录,值之间用制表符分隔,并按照 CREATE TABLE
语句中列出的顺序给出。对于缺失值(例如未知性别或仍然存活的动物的死亡日期),您可以使用 NULL
值。要在文本文件中表示这些值,请使用 \N
(反斜杠,大写 N)。例如,Whistler 这只鸟的记录如下所示(其中值之间的空白是一个制表符)
Whistler Gwen bird \N 1997-12-09 \N
要将文本文件 pet.txt
加载到 pet
表中,请使用以下语句
mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet;
如果您在 Windows 上使用以 \r\n
作为行终止符的编辑器创建了该文件,则应改用以下语句
mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet
LINES TERMINATED BY '\r\n';
(在运行 macOS 的 Apple 机器上,您可能希望使用 LINES TERMINATED BY '\r'
。)
如果您愿意,可以在 LOAD DATA
语句中明确指定列值分隔符和行尾标记,但默认值为制表符和换行符。这些足以使语句正确读取文件 pet.txt
。
如果语句失败,则可能是您的 MySQL 安装默认情况下未启用本地文件功能。有关如何更改此设置的信息,请参见 第 8.1.6 节“LOAD DATA LOCAL 的安全注意事项”。
当您想一次添加一条新记录时,INSERT
语句很有用。在最简单的形式中,您需要为每个列提供值,顺序与 CREATE TABLE
语句中列出的顺序相同。假设 Diane 得到了一只名为 “Puffball” 的新仓鼠。您可以使用如下所示的 INSERT
语句添加新记录
mysql> INSERT INTO pet
VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
字符串和日期值在此处指定为带引号的字符串。此外,使用 INSERT
,您可以直接插入 NULL
来表示缺失值。您不需要像使用 LOAD DATA
那样使用 \N
。
从这个例子中,您应该能够看到,使用多条 INSERT
语句而不是一条 LOAD DATA
语句来初始加载记录会涉及更多输入。