Oracle的表创建和约束

Oracle创建表同SQL Server一样,使用CREATE TABLE命令来完成。创建约束则使用如下命令:

语法格式:ALTERTABLE命令

   ALTER TABLE 表名 ADDCONSTRAINT[D4] 约束名约束内容。

 

不论创建表还是约束,与SQL Server基本相同,注意:Oracledefault是一个值,而SQL Serverdefault是一个约束[D5] ,因此Oracledefault设置可以在建表的时候创建。

 

案例1:创建一个学生信息(INFOS)表和约束

 

代码演示:Oracle创建表和约束

CREATE TABLE INFOS

(

  STUID VARCHAR2(7) NOT NULL,    --学号 学号=‘S’+班号+2位序号

  STUNAME VARCHAR2(10) NOT NULL,  --姓名

  GENDER VARCHAR2(2) NOT NULL,    --性别 

  AGE NUMBER(2) NOT NULL,        --年龄

  SEAT NUMBER(2) NOT NULL,        --座号

  ENROLLDATE DATE,      --入学时间

  STUADDRESS VARCHAR2(50) DEFAULT '地址不详',      --住址

  CLASSNO VARCHAR2(4) NOT NULL    --班号班号=学期序号+班级序号 

)

/  ①

ALTER TABLE INFOS ADD CONSTRAINT PK_INFOS PRIMARY KEY(STUID) [D6] 

/

ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_GENDER 

CHECK(GENDER = '男' OR GENDER = '女')  [D7] 

/

ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_SEAT

CHECK(SEAT >=0 AND SEAT <=50)  ④

/

ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_AGE 

CHECK(AGE >=0 AND AGE<=100)  ⑤

/

ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_CLASSNO 

CHECK((CLASSNO >='1001' AND CLASSNO<='1999') OR

(CLASSNO >='2001' AND CLASSNO<='2999'))  ⑥

/

ALTER TABLE INFOS ADD CONSTRAINTS UN_STUNAME UNIQUE(STUNAME)  [D8] 

/

代码解析:

①  在Oracle代码中,“/”执行缓存区中的语句,由于缓冲区中只存储一条刚刚保存过语句,由于每条语句没有用分号结尾,只是保存在缓冲区,因此每条语句后面都有单独一行“/”。

②  创建一个主键约束[D9] 

③  与 ④ ⑤ ⑥ ⑦一起创建各种check约束。其中⑦是唯一约束,表示该列值是唯一的,列中的值不能重复。

 

Oracle中创建外键约束与SQL Server相同。比如:现有成绩表定义如下:

 

案例2:创建一个成绩表(SCORES)表和约束

 

代码演示:Oracle创建表和约束

CREATE TABLE SCORES

(

    ID NUMBER ,                                --ID  ①

    TERM VARCHAR2(2),                                   --学期 S1或S2

      STUID VARCHAR2(7) NOT NULL,                   --学号

      EXAMNO VARCHAR2(7) NOT NULL,               --考号 E+班号+序号     

      WRITTENSCORE NUMBER(4,1) NOT NULL,    --笔试成绩

      LABSCORE NUMBER(4,1) NOT NULL             --机试成绩

)

ALTER TABLE SCORES

    ADD CONSTRAINT CK_SCORES_TERM CHECK(TERM = 'S1' OR TERM ='S2')

/

ALTER TABLE SCORES

    ADD CONSTRAINT FK_SCORES_INFOS_STUID FOREIGN KEY(STUID) REFERENCES INFOS(STUID)  ②

/

代码解析:

①  SQL Server中可以使用identify创建自动增长列,但是Oracle中的自动增长需要借助序列(Sequence)完成,在后面章节中讲解。

②  Oracle中的外键约束定义。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值