完整性约束讲解.docx
- 文档编号:5635325
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:12
- 大小:814.03KB
完整性约束讲解.docx
《完整性约束讲解.docx》由会员分享,可在线阅读,更多相关《完整性约束讲解.docx(12页珍藏版)》请在冰点文库上搜索。
完整性约束讲解
数据库实验报告三
完整性约束
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,违反检查约束条件出错。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整性 约束 讲解