SQL |创建表扩展
SQL 为CREATE TABLE子句提供了一个扩展,该子句创建一个与数据库中某些现有表具有相同架构的新表。
- 它用于将复杂查询的结果临时存储在新表中。
- 创建的新表与引用表具有相同的架构。
- 默认情况下,新表具有与引用表相同的列名和数据类型。
句法:
CREATE TABLE newTable LIKE pets
例子:
CREATE TABLE newTable as
(SELECT *
FROM pets
WHERE pets.BREED = 'German Shepherd')
查询
宠物表:
ID | Name | Breed | Gender |
---|---|---|---|
11441 | Tommy | German Shepherd | Male |
11442 | Max | Beagle | Male |
11443 | Charlie | Pug | Male |
11444 | Daisy | Poodle | Female |
11445 | Zoe | Labrador | Female |
11446 | Toby | Bulldog | Male |
查询一:
CREATE TABLE newTable LIKE pets;
SELECT *
FROM newTable
where newTable.GENDER = 'Female';
输出:
ID | Name | Breed | Gender |
---|---|---|---|
11444 | Daisy | Poodle | Female |
11445 | Zoe | Labrador | Female |
解释:创建的 newTable 是 pets 表的副本。因此,从 newTable 中选择女性宠物只返回两行宠物是女性。
查询 2:
CREATE TABLE newTable as
(SELECT *
FROM pets
WHERE pets.BREED = 'German Shepherd');
SELECT * from newTable;
输出:
ID | Name | Breed | Gender |
---|---|---|---|
11441 | Tommy | German Shepherd | Male |
说明:首先评估内部查询并将结果存储在新的临时关系中。在此之后,评估创建 newTable 的外部查询,并将内部查询的输出添加到 newTable。
参考资料: Silberschatz 的数据库系统概念第 6 版