由于种种原因,再次写博竟然隔了4天,鉴于我朋友说我之前写的太生硬,有点照搬的意思,鄙人也觉得是,这次改下,希望能好点……
接着上回吧,上次说到表单的创建,也示例了带默认值的创建方法,这次示例带约束创建表单的方法。
主键约束:
例:CREATE TABLE CLASS(
ID NUMBER PRIMARY KEY,
NAME CHAR(20)
);--创建班级表,其中学号为主键。
当然,也可以写成
CREATE TABLE CLASS(
ID NUMBER ,
NAME CHAR(20),
PRIMARY KEY(ID)
);--创建班级表,其中学号为主键。
这两者的效果是相同的,如果表单中有多个属性需要主键字段,可像第一种方法,在每个属性后添加主键约束关键字,也可像第二种方法,将所有需要主键约束的属性放入括号内。
CREATE TABLE CLASS(
ID NUMBER ,
NAME CHAR(20),
PRIMARY KEY(ID,NAME)
);--创建班级表,其中学号、姓名均为主键。
这个时候主键名称是由RDBMS自动分配的,并不利于我们管理,所以我们需要在创建约束的时候对其命名。
CREATE TABLE CLASS(
ID NUMBER ,
NAME CHAR(20),
CONSTRAINT CLASS_PK PRIMARY KEY(ID)
);--创建班级表,其中学号为主键,名称为CLASS_PK。
外键约束:
例:CREATE TABLE CLASS(
ID NUMBER PRIMARY KEY,
NAME CHAR(20)
);--创建班级表,其中学号为主键。
CREATE TABLE SCORE(
ID NUMBER,
SCORE NUMBER,
FOREIGN KEY(ID) REFERENCES CLASS(ID)
);--创建成绩表,其中学号为外键。
唯一约束:
例:CREATE TABLE CLASS(
ID NUMBER UNIQUE,
NAME CHAR(20)
);--创建班级表,其中学号为唯一约束。
非空约束:
例:CREATE TABLE CLASS(
ID NUMBER UNIQUE,
NAME CHAR(20) NOT NULL
);--创建班级表,其中学号为唯一约束,姓名为非空约束。
检查约束:
例:CREATE TABLE CLASS(
ID NUMBER CHECK(ID>1),
NAME CHAR(20)
);--创建班级表,其中学号为检查约束。
PS,在数据库中,当我们忘记某表的约束状态时,可以查询USER_CONSTRAINT库默认表单,查询语句为:
SELECT * FROM USER_CONSTRAINT WHERE TABLE_NAME='表名';
创建表单还有一种情况,子查询创建表,示例如下:
CREATE TABLE 表名 AS SELECT查询语句;--将查询结果插入新建表单中。
这种方法有点类似于视图的创建,但跟视图又有区别。视图只是虚表,不操纵数据。