列表

详情


设有职工关系Emp(Eno,Ename,Esex,EDno)和部门关系Dept(Dno,Dname,Daddr),创建这两个关系的SQL语句如下:
CREATE TABLE Emp(
  Eno CHAR(4),
Ename CHAR(8),
Esex CHAR(1) CHECK(Esex IN (‘M’, ‘F’)),
EDno CHAR(4) REFERENCES Dept(Dno),
PRIMARY KEY (Eno)
);
CREATE TABLE Dept(
  Dno CHAR(4) NOT NULL UNIQUE,
Dname CHAR(20),
Daddr CHAR(30)
);
直接运行该语句,DBMS会报错,原因是:()。若经过修改,上述两个表创建完毕之后(尚无数据),则下述语句中能被执行的是()。

第 1 问

A. 创建表Dept时没有指定主码

B. 创建表Dept时没有指定外码

C. 创建表Emp时,被参照表Dept尚未创建

D. 表Emp的外码EDno与被参照表Dept的主码Dno不同名

第 2 问

A. INSERT INTO Emp VALUES(‘e001’, ‘王’, ‘M ’, ‘d1’);

B. INSERT INTO Emp VALUES(NULL, ‘王’, ‘M’, ‘d1’);

C. INSERT INTO Emp VALUES(‘e001’, ‘王’, ‘M’, NULL);

D. INSERT INTO Emp VALUES(‘e001’, ‘王’, ‘X’, ‘d1’);

参考答案: C C

详细解析:

本题考查对完整性约束的掌握。本题中,职工关系Emp为参照关系,其属性EDno参照部门关系Dept中的Dno,在创建Emp关系时,系统会根据参照约束查找被参照关系,因此,被参照关系就先于参照关系而建立。约束一旦建立,更新数据必须满足约束条件才可正确执行,表Emp有主码约束和参照约束,故Eno不能取空值,EDno列因为被参照关系Dept尚无记录,故只能取空值。

上一题