SQL - 在数据库中创建表
CREATE 语句用于创建数据库结构,如表、视图、序列、函数、过程、包、触发器等。我们将在教程的后面部分探索所有这些数据库结构。
CREATE TABLE 语句用于在数据库中创建新表。以下是在数据库中创建新表的语法。
句法:
CREATE TABLE table_name(
column_name1 data_type [NULL|NOT NULL],
column_name2 data_type [NULL|NOT NULL],
...
);
在上面的 CREATE TABLE 语法中,table_name是您想要给出的表的名称,column_name1是第一列的名称,column_name2是第二列的名称,依此类推。是data_type列要存储的数据类型,例如字符串、整数、日期时间等。数据类型因数据库而异,例如,SQL Server 中的字符串数据类型是 or ,而 Oraclevarchar中是nvarchar。varchar2因此,数据类型取决于您使用的数据库。
使用NULLorNOT NULL约束指定列是否允许NULL 值。默认情况下,除非指定,否则所有列都允许NULL值NOT NULL。这些NULL列是可选的,而NOT NULL在插入或更新数据时,列是必需的。
在 SQL Server、MySQL、PostgreSQL、SQLite 中创建表
以下命令将用于Employee在 SQL Server、MySQL、PostgreSQL、SQLite 数据库中创建表:
SQL 脚本:创建表
复制
CREATE TABLE Employee(
EmpId integer,
FirstName varchar(20),
LastName varchar(20),
Email varchar(25),
PhoneNo varchar(25),
Salary integer
);
上面的Employee是表的名称,EmpId、FirstName、LastName、Email、PhoneNo、HireDate、 和Salary是列。varchar是字符串数据类型,其大小在括号中提及,例如varchar(20)指定该列将存储最多 20 个字符长的字符串。
大多数时候,数据库中的所有表都至少有一列作为主键。下面定义了一个带有主键的表。
创建EmpId integer PRIMARY KEY,列EmpId并同时将其定义为主键。
SQL 脚本:使用主键创建表
复制
CREATE TABLE Employee (
EmpId integer PRIMARY KEY,
FirstName varchar(20),
LastName varchar(20),
Email varchar(25),
PhoneNo varchar(25),
Salary integer
);
在Oracle中创建表
以下 SQL 脚本Employee在 Oracle 数据库中创建带有主键的表:
SQL 脚本:在 Oracle 中创建表
复制
CREATE TABLE Employee(
EmpId number PRIMARY KEY,
FirstName varchar2(20),
LastName varchar2(20),
Email varchar2(25),
PhoneNo varchar2(25),
Salary number(8)
);
注意,在Oracle中,字符串数据类型被称为varchar2,整数类型被称为number。
在此阶段,该Employee表是空的,不包含任何数据。另请注意,我们创建了一个以EmpId列作为主键的表,这意味着表中所有行中的字段EmpId都是唯一且非空Employee字段。
Employee下图是数据库中的表的示意图。
从现有表创建新表
该CREATE TABLE AS命令用于从具有结构和数据的现有表创建一个新表,如下所示:以下查询将在 Oracle、MYSQL、SQLite 和 PostgreSQL 中运行。
SQL 脚本:创建包含数据的表的副本
CREATE TABLE Employee_Backup AS SELECT * FROM Employee;
要创建包含选定列和数据的表副本Employee,请使用CREATE TABLE AS命令,如下所示:
SQL 脚本:创建包含数据的表的副本
CREATE TABLE TempEmployee as (SELECT EmpId, FirstName, LastName FROM Employee);
Employee要创建仅包含结构且无数据的表副本,请使用命令,CREATE TABLE AS如下所示:
SQL 脚本:创建没有数据的表的副本
CREATE TABLE Consultant AS SELECT * FROM Employee WHERE 1=2;
上面的where子句where 1=2不会返回任何记录,因此上面的命令只创建一个没有数据的表。
在 MS SQL Server 中创建表的副本
该SELECT * INTO命令创建具有结构和数据的现有表的副本。
SQL 脚本:在 SQL Server 中创建表的副本
SELECT * INTO Employee_backup FROM Employee
表格设计指南
在数据库中创建任何表之前,需要设计表,表中将存储什么样的信息。需要什么列,列的数据类型是什么?哪些约束将适用于不同的列?应该对表应用哪些约束?表之间的关系是什么?
以下是设计表格时需要考虑的一些准则:
定义表名和列名时使用缩写但有意义的名称。
列名称允许的最大长度为 30 个字符,并且应以字母开头。
为表的每一列定义适当的数据类型。
尝试在表中仅保留必需的列。不太重要的列可以保留到其他一些详细表中,而不是将它们存储在主表中。
始终尝试放置可以包含 NULL 值的列。这样,它将节省存储空间。
领取专属 10元无门槛券
私享最新 技术干货