文档详情

数据库系统概论实验.doc

发布:2016-12-26约2.42千字共5页下载文档
文本预览下载声明
10软件1班 22号 周超 实验八 一、实验内容 以SPJ数据库为例,完成以下要求 定义S、P、J、SPJ实体完整性 表间的参照完整性 用户定义完整性 二、实验过程 SQL定义各表 SQL: CREATE DATABASE SPJ ON(NAME=SPJ_DATA, FILENAME=E:\SPJ.mdf, SIZE=5MB, FILEGROWTH=10%) USE SPJ CREATE TABLE S (SNO CHAR(4) PRIMARY KEY, SNAME CHAR(20) UNIQUE, STATUS INT CHECK (STATUS=10 AND STATUS=50), CITY CHAR (20) NOT NULL); CREATE TABLE P (PNO CHAR(4) PRIMARY KEY, PNAME CHAR(20) NOT NULL, COLOR CHAR (10) NOT NULL, WEIGHT SMALLINT NOT NULL); CREATE TABLE J (JNO CHAR(4) PRIMARY KEY, JNAME CHAR(20) UNIQUE, CITY CHAR(20) NOT NULL); CREATE TABLE SPJ (SNO CHAR(4), PNO CHAR(4), JNO CHAR(4), QTY INT NOT NULL, PRIMARY KEY(SNO,PNO,JNO), FOREIGN KEY(SNO) REFERENCES S(SNO), FOREIGN KEY (PNO) REFERENCES P(PNO), FOREIGN KEY (JNO) REFERENCES J(JNO)); 附表:S表 P表 SPJ表 J表 2、(举例,违反3类完整性) 2.1、违反实体完整性(记下出错提示) 1、主码值不唯一 在J表中插入如下数据时 INSERT INTO J VALUES (J1,三建,北京); INSERT INTO J VALUES (J1,一汽,长春); 会出现提示错误:消息2627,级别14,状态1,第1 行 违反了PRIMARY KEY 约束PK__J__0425A276。不能在对象dbo.J 中插入重复键。 语句已终止。INSERT INTO J VALUES (null,无线电厂,); 出现错误提示: 消息515,级别16,状态2,第1 行 不能将值NULL 插入列JNO,表SPJ.dbo.J;列不允许有空值。INSERT 失败。 语句已终止。INSERT INTO SPJ VALUES(S6,P1,J1,200); 出现提示错误: 消息547,级别16,状态0,第1 行 INSERT 语句与FOREIGN KEY 约束FK__SPJ__SNO__1CF15040冲突。该冲突发生于数据库SPJ,表dbo.S, column SNO。 语句已终止。UPDATE SPJ SET SNO=S6 WHERE SNO=S1; 出现提示错误: 消息547,级别16,状态0,第1 行 UPDATE 语句与FOREIGN KEY 约束FK__SPJ__SNO__1CF15040冲突。该冲突发生于数据库SPJ,表dbo.S, column SNO。 语句已终止。DELETE FROM J WHERE JNO=J2; 出现提示错误: 消息547,级别16,状态0,第1 行 DELETE 语句与REFERENCE 约束FK__SPJ__JNO__1ED998B2冲突。该冲突发生于数据库SPJ,表dbo.SPJ, column JNO。 语句已终止。UPDATE p SET PNO=P7 WHERE PNO=P5; 出现提示错误: 消息547,级别16,状态0,第1 行 UPDATE 语句与REFERENCE 约束FK__SPJ__PNO__1DE57479冲突。该冲突发生于数据库SPJ,表dbo.SPJ, column PNO。 语句已终止。INSERT INTO J1 VALUES (J7,半导体厂,null); 515,级别16,状态2,第1 行 不能将值NULL 插入列CITY,表SPJ.dbo.J1;列不允许有空值。INSERT 失败。 语句已终止。 原因:在建表时已把列CITY定义为NOT NULL 2、违反列值唯一 在P表中插入如下数据时会出现以下提示错误 INSERT INTO J VALUES (J1,三建,北京); INSERT INTO J VALUES (J2,三建,长春); 出现提示错误: 消息2627,级别14,状态1,第4 行 违反了UNIQUE KEY 约束UQ__J__0
显示全部
相似文档