SQL---DDL---创建表CREATE TABLE语句总结

一般有两种创建表的方法:一种是使用具有交互式创建和管理表的工具;另一种是可以直接用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介绍
cust_id int NOT NULL 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介绍
如果在插入行时没有给出值,MySQL允许指定此时使用的默认值。默认值用CREATE TABLE语句的列定义中的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值,特别是对用于计算或者数据分组的列更是如此。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值