一般有两种创建表的方法:一种是使用具有交互式创建和管理表的工具;另一种是可以直接用SQL语句操纵。
为利用CREATE TABLE创建表,必须给出下列信息:新表的名字,在关键字CREATE TABLE之后给出;表列的名字和定义,用逗号分隔。
CREATE TABLE 表名
(列名1 数据类型1 列级完整性约束条件1 列级完整性约束条件2...,
列名2 数据类型2 列级完整性约束条件3...,
...
表级完整性约束条件);
常用的完整性约束条件如下:
主码约束:PRIMARY KEY;
唯一值约束:UNIQUE;
非空值约束:NOT NULL;
限制取值范围:CHECK;
指定默认值:DEFAULT;
参照完整性约束:FOREIGN KEY
例:
CREATE TABLE Products
(
prod_id CHAR(10) NOT NULL,
vend_id CHAR(10) NOT NULL,
prod_price DECIMAL(8,2) NOT NULL,
prod_desc VARCHAR(1000) NULL
);
MySQL语句忽略空格。语句可以在一个长行上输入,也可以分成许多行。强烈推荐使用某种缩进格式编写。
如果你仅仅想在一个表不存在时创建它,应该在表名后面给出IF NOT EXISTS。这样做不检查已有表的模式是否与你打算创建的表模式相匹配,它只是查看表名是否存在,并且仅在表名不存在时创建它。
- PRIMARY KEY介绍
主键中只能使用不允许NULL值的列。允许NULL值的列不能作为唯一标识。
例:
CREATE TABLE orderitems
(
order_num int NOT NULL,
order_item int NOT NULL,
prod_id char(10) NOT NULL,
quantity int NOT NULL,
item_price decimal(8,2) NOT NULL,
PRIMARY KEY(order_num, order_item)
);
- AUTO_INCREMENT介绍
AUTO_INCREMENT告诉MySQL,本列每当增加一行时自动增量,每次执行一个INSERT操作时,MySQL自动对该列增量(从而才有这个关键字AUTO_INCREMENT),给该列赋予下一个可用的值。这样给每个行分配一个唯一的cust_id,从而可以用作主键值。
每个表只允许一个AUTO_INCREMENT列,而且她必须被索引(如,通过使它成为主键)。
让MySQL生成(通过自动增量)主键的一个缺点是你不知道这些值都是谁。
如何在使用AUTO_INCREMENT列时获得这个值呢?可以用last_insert_id()函数获得这个值。如下所示:
SELECT last_insert_id() ;
此语句返回最后一个AUTO_INCREMENT值,然后可以将它用于后续的MySQL语句。
- DEFAULT介绍
例:
CREATE TABLE orderitems
(
order_num int NOT NULL,
order_item int NOT NULL,
prod_id char(10) NOT NULL,
quantity int NOT NULL DEFAULT 1,
item_price decimal(8,2) NOT NULL ,
PRIMARY KEY(order_num, order_item)
);
在此例子中,给该列的描述添加文本DEFAULT 1 指示MySQL,在未给出数量的情况下使用数量1。
许多数据库开发人员使用默认值而不是NULL值,特别是对用于计算或者数据分组的列更是如此。