完整性约束讲解.docx

上传人:b****8 文档编号:11188571 上传时间:2023-02-25 格式:DOCX 页数:12 大小:814.03KB
下载 相关 举报
完整性约束讲解.docx_第1页
第1页 / 共12页
完整性约束讲解.docx_第2页
第2页 / 共12页
完整性约束讲解.docx_第3页
第3页 / 共12页
完整性约束讲解.docx_第4页
第4页 / 共12页
完整性约束讲解.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

完整性约束讲解.docx

《完整性约束讲解.docx》由会员分享,可在线阅读,更多相关《完整性约束讲解.docx(12页珍藏版)》请在冰豆网上搜索。

完整性约束讲解.docx

完整性约束讲解

数据库实验报告三

完整性约束

1、实验目的

1.熟悉主键,外键,check等完整性约束;

2.掌握完整性约束的建立,删除,有效化和无效化;

3.熟悉相关的DDL命令。

4.学会看数据库模型图。

2、实验内容

1.主键约束

a.按图1所示,建立所有表的主键约束。

b.运行下列SQL语句:

insertintobranchvalues(‘XiangtanUniversity’,’Xiangtan’,4000000);

insertintobranchvalues(‘XiangtanUniversity’,’Xiangtan’,5000000);

记录结果并分析原因。

2.外键约束

a.按照图1所示,建立所有的外键约束。

b.运行以下的两条SQL语句:

insertintoloanvalues(‘L-001’,’XiangtanUniversity’,1000);

insertintoloanvalues(‘L-002’,’RainLake’,2000);

记录结果并分析原因。

c.运行以下的SQL语句:

deletebranch;

记录结果并分析原因。

3.unique约束

a.在loan表上建立一个unique约束,保证amount是唯一的。

b.运行以下SQL语句:

insertintoloanvalues(‘L-002’,’XiangtanUniversity’,2000);

记录结果并分析原因。

c.使得刚才建立的约束无效化,并再次运行上一条SQL语句,记录结果并分析原因。

d.删除掉这个约束。

4.check约束

a.在loan表上建立一个check约束,保证amount必须为正数。

b.运行以下SQL语句:

insertintoloanvalues(‘L-003’,’XiangtanUniversity’,-2000);

记录结果并分析原因。

 

3、实验结果

1、建立所有表的主键约束。

ALTERTABLEaccount

ADDCONSTRAINTAPK_numPRIMARYKEY(account_number);

ALTERTABLEborrower

ADDCONSTRAINTBCU_namePRIMARYKEY(customer_name,loan_number);

ALTERTABLEbranchADDCONSTRAINTBH_namePRIMARYKEY(branch_name);

ALTERTABLEcustomerADDCONSTRAINTCC_namePRIMARYKEY(customer_name);

ALTERTABLEdepositorADDCONSTRAINTDC_namePRIMARYKEY(customer_name,account_number);

ALTERTABLEloanADDCONSTRAINTLL_numPRIMARYKEY(loan_number);

2、运行下列SQL语句:

insertintobranchvalues(‘XiangtanUniversity’,’Xiangtan’,4000000);

insertintobranchvalues(‘XiangtanUniversity’,’Xiangtan’,5000000);

脚本:

1行已插入

在行2上开始执行命令时出错:

insertintobranchvalues('XiangtanUniversity','Xiangtan',5000000)

错误报告:

SQL错误:

ORA-00001:

违反唯一约束条件(2013960833.BH_NAME)

00001.00000-"uniqueconstraint(%s.%s)violated"

*Cause:

AnUPDATEorINSERTstatementattemptedtoinsertaduplicatekey.

ForTrustedOracleconfiguredinDBMSMACmode,youmaysee

thismessageifaduplicateentryexistsatadifferentlevel.

*Action:

Eitherremovetheuniquerestrictionordonotinsertthekey.

分析:

已经插入一行,再插入同名的主键列会出错。

违反唯一约束条件。

3、建立所有的外键约束。

ALTERTABLEborrower

ADDCONSTRAINTFK1

FOREIGNKEY(customer_name)REFERENCEScustomer(customer_name);

ALTERTABLEborrower

ADDCONSTRAINTFK2

FOREIGNKEY(loan_number)REFERENCESloan(loan_number);

ALTERTABLEloan

ADDCONSTRAINTFK3

FOREIGNKEY(branch_name)REFERENCESbranch(branch_name);

 

ALTERTABLEdepositor

ADDCONSTRAINTFK4

FOREIGNKEY(customer_name)REFERENCEScustomer(customer_name);

ALTERTABLEdepositor

ADDCONSTRAINTFK5

FOREIGNKEY(account_number)REFERENCESaccount(account_number);

 

ALTERTABLEaccount

ADDCONSTRAINTFK6

FOREIGNKEY(branch_name)REFERENCESbranch(branch_name);

4、运行以下的两条SQL语句:

insertintoloanvalues(‘L-001’,’XiangtanUniversity’,1000);

insertintoloanvalues(‘L-002’,’RainLake’,2000);

脚本:

1行已插入

在行2上开始执行命令时出错:

insertintoloanvalues('L-002','RainLake',2000)

错误报告:

SQL错误:

ORA-02291:

违反完整约束条件(2013960833.FK3)-未找到父项关键字

02291.00000-"integrityconstraint(%s.%s)violated-parentkeynotfound"

*Cause:

Aforeignkeyvaluehasnomatchingprimarykeyvalue.

*Action:

Deletetheforeignkeyoraddamatchingprimarykey.

5、运行以下的SQL语句:

deletebranch;

脚本:

在行1上开始执行命令时出错:

deletebranch

错误报告:

SQL错误:

ORA-02292:

违反完整约束条件(2013960833.FK3)-已找到子记录

02292.00000-"integrityconstraint(%s.%s)violated-childrecordfound"

*Cause:

attemptedtodeleteaparentkeyvaluethathadaforeign

dependency.

*Action:

deletedependenciesfirstthenparentordisableconstraint.

 

6、在loan表上建立一个unique约束,保证amount是唯一的。

脚本:

ALTERTABLEloan成功。

7、运行以下SQL语句:

insertintoloanvalues(‘L-002’,’XiangtanUniversity’,2000);

8、使得刚才建立的约束无效化,并再次运行上一条SQL语句。

 

脚本:

在行1上开始执行命令时出错:

insertintoloanvalues('L-002','XiangtanUniversity',2000)

错误报告:

SQL错误:

ORA-00001:

违反唯一约束条件(2013960833.LL_NUM)

00001.00000-"uniqueconstraint(%s.%s)violated"

*Cause:

AnUPDATEorINSERTstatementattemptedtoinsertaduplicatekey.

ForTrustedOracleconfiguredinDBMSMACmode,youmaysee

thismessageifaduplicateentryexistsatadifferentlevel.

*Action:

Eitherremovetheuniquerestrictionordonotinsertthekey.

 

9、删除掉这个约束。

altertableloandropunique(amount);

10、在loan表上建立一个check约束,保证amount必须为正数。

altertableloanaddcheck(amount>0);

11、运行以下SQL语句:

insertintoloanvalues(‘L-003’,’XiangtanUniversity’,-2000);

脚本:

在行1上开始执行命令时出错:

insertintoloanvalues('L-003','XiangtanUniversity',-2000)

错误报告:

SQL错误:

ORA-02290:

违反检查约束条件(2013960833.SYS_C0051122)

02290.00000-"checkconstraint(%s.%s)violated"

*Cause:

Thevaluesbeinginserteddonotsatisfythenamedcheck

*Action:

donotinsertvaluesthatviolatetheconstraint.

分析:

插入的amount数据小于0,违反检查约束条件出错。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1