创建表
最简单的建表语句:
CREATE TABLE table_name(
col01_name data_type,
col02_name data_type,
col03_name data_type,
col04_name data_type
);
示例:
create table test01(id int,note varchar(20));
主键
一般的表都有主键,如果表的主键只是由一个字段组成的,则可以通过直接在字段定义后面加上“PRIMARY KEY”关键字来指定,示例如下:
create table test01(id int primary key,note varchar(20));
如果主键由两个及以上的字段组成(称为复合主键),这时就不能使用上面的语法了,而需要使用约束子句的语法,指定复合主键的约束子句语法如下:
CONSTRAINT constraint_name PRIMARY KEY (col1_name,col2_name,...);
create table test02(id1 int,id2 int,note varchar(20),CONSTRAINT pk_test02 primary key (id1,id2));
唯一键
建表的时候也可以指定唯一键,唯一键也是约束的一种,唯一键的约束子句语法如下:
CONSTRAINT constraint_name UNIQUE(col1_name,col2_name,...);
create table test03(
id1 int,
id2 int,
id3 int,
note varchar(20),
CONSTRAINT pk_test03 primary key(id1,id2),
CONSTRAINT uk_test03_id3 UNIQUE(id3)
);
check约束
check也是一种约束,用于定义某些字段的值必须满足某种要求,语法如下:
CONSTRAINT constraint_name CHECK(expression);
例如年龄字段(age)不能大于18岁:
create table child(
name varchar(20),
age int,
note text,
CONSTRAINT ck_child_age CHECK(age<18)
);
使用模板创建表
create table baby (LIKE child);
此处创建表没有把源表上的约束复制过来,如果想完全复制源表列上的约束和其他信息,需要加上“INCLUDING”关键字,可用的“INCLUDES”选项如下:
- INCLUDING DEFAULTS
- INCLUDING CONSTRAINTS
- INCLUDING INDEXES
- INCLUDING STORAGE
- INCLUDING COMMENTS
- INCLUDING ALL
其中INCLUDING ALL是把所有的属性全部复制过去,示例如下:
create table baby2(LIKE child INCLUDING ALL);
也可以使用“CREATE TABLE…AS”来创建表,示例如下:
create table baby2 as select * from child with no data;