CREATE TABLE语句用于在数据库中创建一个新表。SQL是用于操作、存储和检索数据库中数据的标准查询语言。SQL用于MySQL、SQL Server、MS Access、Oracle、Sybase、Informix、Postgres 和其他数据库系统中。
SQL是结构化查询语言的缩写。SQL允许你访问和操作数据库。R DBMS代表关系型数据库管理系统。RDBMS是SQL和所有现代数据库系统的基础,如MS SQL Server、IBM DB2、Oracle、MySQL和Microsoft Access。
SQL创建表语句
使用SQL进行数据分析和操作,有时需要创建新表。要求如,你想存储你的SQL查询的输出吗?你需要把新的数据源(例如,csv文件)拉到你的数据分析中吗?你想在不删除原始数据集的情况下存储你转换后的数据吗?在所有这些情况下,你必须首先知道如何在SQL中创建表。
创建一个主表涉及到对表的命名和定义它的列以及每个列的数据类型。
请看下面的语法,在SQL中创建表的语法如下:
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype,
....
);
列参数表示表的列的名称。
数据类型参数指定了该列可以容纳的数据类型(例如,varchar、整数、日期、布尔值等)。
CREATE TABLE 是一个SQL关键字。因此,你 应该总是把它放在SQL语句的开头。
CREATE TABLE是告诉DBMS你想做什么的关键字。在本例中,你想创建一个新表。在CREATE TABLE语句后面是表的唯一名称或标识符。
然后,在括号里是定义表的每一列以及它是什么数据类型的列表。
让我们以创建一个表为例:
CREATE TABLE Apps (
AppID int,
AppName varchar(255),
CreatorName varchar(255),
AppCategory varchar(255),
AppPrice int
);
现在,运行查询。我正在使用Sequel Pro来运行SQL查询。我已经将客户端连接到数据库。运行查询后,Apps 表将在数据库中被创建:

它已经创建了AppID、AppName、CreatorName、AppCategory和AppPrice 列。
使用另一个表创建表
也可以使用CREATE TABLE来创建一个现有表的副本。
新表获得相同的列定义。可以根据你的要求选择所有列或特定列。
如果你使用现有的表创建一个新的表,新的表将被填入旧表的所有现有值。
使用另一个表来创建一个表的语法如下:
CREATE TABLE new_table_name AS
SELECT column1, column2,...
FROM existing_table_name
WHERE ....;
让我们看看下面的例子:
CREATE TABLE DummyApp AS
SELECT AppID, AppName
FROM Apps
所以,我们已经从Apps 表中创建了DummyApp 表。
使用额外参数创建表
在定义了列的数据类型后,你也可以添加一些额外的参数。当然,这些是可选的参数,主要是技术性的东西,但我还是要强调三个最重要的参数:
- NOT NULL:如果你在你的列中添加了这个参数,你就不能给给定的列添加NULL值。
- UNIQUE:如果你把它添加到你的列中,这意味着你不能把同一个值添加到一个列中两次。当你存储唯一的用户ID时,它是必不可少的。在这些情况下,不允许有重复的值。
- PRIMARY KEY:这是NOT NULL和UNIQUE的组合,但它也有一些技术优势。主键是表中的一个字段,用于唯一地识别数据库表中的每一行/记录。主键必须包含唯一的值。一个主键列不能有NULL值。一个表只能有一个主键,它可以由单个或多个字段组成。当多个字段被用作主键时,它们被称为复合键。
让我们看看下面的例子,创建一个带有额外参数的新表:
CREATE TABLE test_results
(
name TEXT,
student_id INTEGER PRIMARY KEY,
birth_date DATE,
test_result DECIMAL NOT NULL,
grade TEXT NOT NULL,
passed BOOLEAN NOT NULL
);
所以,在上面的代码中,我们将student_id 定义为主键,而test_result、grade和pass 列具有NOT NULL 属性。这意味着这些列 在表内插入值时不会取NULL值。如果发现NULL,那么它将会产生一个错误。
输出结果如下:

本教程到此结束。