SQL乐园(5):表定义语句中的约束条件

软件世界

  表定义语句中的约束条件

  当定义一个数据表时,除了声明列的名称和数据类型之外,有时还需要指定一些约束条件,包括检查约束条件、主关键字、外部关键字以及默认值等等。

  NOT NULL约束:该约束规定数据列中不含有NULL值,如果用户试图把一个NULL值赋给它,数据库将返回一个错误。

  使用格式:列名 数据类型 NOT NULL

  主关键字约束:该约束条件把数据列定义为主关键字(PK)。这个列一旦被定义为主关键字,则该列中的每行必须有一个惟一的值。

  使用格式:列名 数据类型 CON STRAINT 约束条件名 Primary Key

  外部关键字约束:该约束把数据列定义为外部关键字(FK),这时我们将不能随便向这个表添加新行,这个新行必须指向它按外部关键字所引用的那个表中的一个已有行。

  使用格式:列名 数据类型 CONSTRAINT约束条件名REFERENCES 父表名

  CHECK约束:该约束可以把数据列的值限定在一个范围之内。

  使用格式:列名 数据类型 CON STRAINT 约束条件名 CHECK(列名 IN('值1','值2'… '值N'  

  默认值约束:如果用户没有给某个列赋值,一般系统会用一个NULL值自动填充。我们可以使用DEFAULT关键字来给某个列赋默认值。

  使用格式:列名 数据类型 DEFAULT '值'

  下面是一个例子。

  CREATE TABLE Reader (ReaderID INT CONSTRAINT PK_Reader Primary Key, RecordingID INT CONSTRAINT FK_Reader_Recordings REFERENCES Recordings, ReaderName VARCHAR(40), CheckerName VARCHAR(40) NOT NULL CONSTRAINT CHK_CheckerName CHECK ( CheckerName IN ('张三','李四')), Birth day DATE, Remark VARCHAR(2000) DE FAULT '无')

  下期我们讲数据表的修改。

  上期问题:请写出在Oracle中创建DIST

  RIBUTION表所对应的SQL语句。

  上期参考答案:Create Table DISTRIB

  UTION(ClientID Number(20), ClientName Varchar2(50), TradeDate Date, TradeSum Number(15,2), Remark Varchar2(2000)) 

  本期幸运读者是重庆的王小煜,他将获得《光盘刻录全程图解》(含1CD)一本。

  本期问题:请描述文中代码所建立的表结构。