Oracle 12c中文版数据库管理、应用与开发实践教程 (清华电脑学堂)
上QQ阅读APP看书,第一时间看更新

3.5 实验指导——家电信息管理

结合本章内容,根据家电信息创建相关的表、字段和约束,具体要求如下。

1)创建家电信息表,有商品编号、名称、类型、品牌、价格和能效等级字段,其中商品编号、类型和品牌字段为NUMBER类型,商品编号为主键。

2)创建类型表,有类型编号和类型名称字段。

3)创建品牌表,有品牌编号和品牌名称字段。

4)为家电信息表添加外键设置,使其类型字段关联类型表的类型编号;品牌字段关联品牌表中的品牌编号。

5)为家电信息表的能效等级字段添加检查约束,使字段值在1~5之间,包含1和5。

6)为家电信息表添加唯一约束,使商品名称和品牌字段的组合不能重复。

7)检查约束信息和约束所作用的列。

(1)创建家电信息表,有商品编号、名称、类型、品牌、价格和能效等级字段,其中商品编号、类型和品牌字段为NUMBER类型,商品编号为主键,代码如下。

        CREATE TABLE APPLIANCES
        (
          A_ID NUMBER NOT NULL ,
          A_TITLE VARCHAR2(20) ,
          A_TYPE NUMBER,
          A_BRAND NUMBER,
          A_PRICE NUMBER,
          A_GRADE NUMBER,
          CONSTRAINT AID_PK PRIMARY KEY(A_ID)
          ENABLE
        );

(2)创建类型表,有类型编号和类型名称字段,代码如下。

        CREATE TABLE A_TYPE
        (
          T_ID NUMBER NOT NULL ,
          T_TITLE VARCHAR2(20) ,
          CONSTRAINT ATID_PK PRIMARY KEY(T_ID)
          ENABLE
        );

(3)创建品牌表,有品牌编号和品牌名称字段,代码如下。

        CREATE TABLE A_BRAND
        (
          B_ID NUMBER NOT NULL ,
          B_TITLE VARCHAR2(20) ,
          CONSTRAINT BID_PK PRIMARY KEY(B_ID)
          ENABLE
        );

(4)为家电信息表添加外键设置,使其类型字段关联类型表的类型编号;品牌字段关联品牌表中的品牌编号,代码如下。

        ALTER TABLE APPLIANCES ADD CONSTRAINT AT_PK FOREIGN KEY (A_TYPE) REFERENCES
        A_TYPE(T_ID);

(5)为家电信息表的能效等级字段添加检查约束,使字段值在1~5之间,包含1和5,代码如下。

        ALTER  TABLE  APPLIANCES  ADD  CONSTRAINT  AB_PK  FOREIGN  KEY  (A_BRAND)
        REFERENCES A_BRAND(B_ID);

(6)为家电信息表添加唯一约束,使商品名称和品牌字段的组合不能重复,代码如下。

        ALTER TABLE APPLIANCES ADD CONSTRAINT UNIQUE_PK UNIQUE(A_TITLE, A_BRAND);

(7)检查约束信息,代码如下。

        SELECT CONSTRAINT_NAME , CONSTRAINT_TYPE , STATUS FROM USER_CONSTRAINTS
        WHERE TABLE_NAME='APPLIANCES';

上述代码的执行效果如下所示。

        CONSTRAINT_NAME  C  STATUS
        ---------------  -  ------
        AID_PK           P  ENABLED
        UNIQUE_PK        U  ENABLED
        AT_PK            R  ENABLED
        AB_PK            R  ENABLED
        SYS_C009886      C  ENABLED

(8)检查约束所作用的列,代码如下。

        SELECT   CONSTRAINT_NAME, COLUMN_NAME   FROM   USER_CONS_COLUMNS   WHERE
        TABLE_NAME='APPLIANCES';

上述代码的执行效果如下所示。

        CONSTRAINT_NAME   COLUMN_NAME
        ---------------   -----------
        UNIQUE_PK          A_BRAND
        UNIQUE_PK          A_TITLE
        AB_PK               A_BRAND
        AT_PK               A_TYPE
        AID_PK              A_ID
        SYS_C009886          A_ID
        已选择 6 行。

思考与练习

一、填空题

1.Oracle数据类型有字符类型、________、日期类型和图片类型。

2.__________又称作IOT表,存储在索引结构中。

3.__________是普通的标准数据库表,数据以堆的方式管理。

4.Oracle允许用户在表上使用__________列来存储表达式。

5.临时表、__________和集群表不支持不可见列。

二、选择题

1.下列关于虚拟列说法错误的是________。

A.虚拟列可以使用Oracle自带的函数,也可以使用用户定义的函数

B. Oracle含有虚拟列的表中不存储虚拟列的值

C.虚拟列的值存储在数据文件中

D.虚拟列在创建时可以省略数据类型

2.下列关于不可见列说法正确的是______。

A.不可见列是存储在表中,但是不能够查询出来的

B.虚拟列和分区列同样也可以定义为不可见类型

C.不可见列使用VISIBLE定义

D.不可见列与虚拟列不同,可以使用INSERT语句隐式插入数据

3.重命名列使用__________。

A. NEWNAME

B. NAME

C. RENAME

D. RENNAME

4. UNIQUE表示__________。

A.唯一约束

B.特别约束

C.检查约束

D.附加约束

5.如果一个列定义了一个PRIMARY KEY约束,那么该列__________。

A.不能为空,可以重复

B.可以为空,不能重复

C.可以为空也可以重复

D.不能为空也不可以重复检查约束

6.一个表中,外键约束所关联的列要满足以下要求__________。

A.必须是主键约束

B.必须有唯一约束

C.既要有主键约束也要有唯一约束

D.可以是唯一约束或主键约束

三、简答题

1.简述主键约束的作用。

2.总结外键设置的注意事项。

3.简述如何设置外键。

4.概括约束的4种状态以及使用的限制。

5.总结约束的种类以及应用。