
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.总结约束的种类以及应用。