在SQL中,创建和删除数据库对象的语句一般被称为数据定义语言(data definition language, DDL),操作这些对象中数据的语句称为数据操作语言(data manipulation language,DML)。创建表的语句属于DDL,用CREATE TABLE命令,如下定义:
CREATE [TEMP] TABLE table_name (column_definitions [, constraints]);
用TEMP或TEMPORARY保留字声明的表为临时表,只存活于当前会话,一旦连接断开,就会被自动删除。
中括号表示可选项。
另外,竖线表示在多个中选一,如:
CREATE [TEMP|TEMPORARY] TABLE … ;
如果没有指明创建临时表,则创建的是基本表,将会在数据库中持久存在。
数据库中还有其它类型的表,如系统表和视图,现在先不介绍。
CREATE TABLE命令至少需要一个表名和一个字段名。命令中table_name表示表名,必须与其它所有的标识符不同。column_definitions表示一个用逗号分隔的字段列表。每个字段定义包括一个名称、一个域和一个逗号分隔的字段约束表。“域”一般情况下是一个类型,与编程语言中的数据类型同名,指明存储在该列的数据的类型。在SQLite中有5种本地类型:INTEGER、REAL、TEXT、BLOB和NULL,所有这些域将在本章后面的“存储类”一节中介绍。“约束”用来控制什么样的值可以存储在表中或特定的字段中。例如,你可以用UNIQUE约束来规定所有记录中某个字段的值要各不相同。约束将会在“数据完整性”一节中介绍。
在字段列表后面,可以跟随一个附加的字段约束,如下例:
CREATE TABLE contacts ( id INTEGER PRIMARY KEY,
name TEXT NOT NULL COLLATE NOCASE,
phone TEXT NOT NULL DEFAULT 'UNKNOWN',
UNIQUE (name,phone) );