数据库实验三.docx

上传人:b****5 文档编号:6022324 上传时间:2023-01-03 格式:DOCX 页数:13 大小:474.62KB
下载 相关 举报
数据库实验三.docx_第1页
第1页 / 共13页
数据库实验三.docx_第2页
第2页 / 共13页
数据库实验三.docx_第3页
第3页 / 共13页
数据库实验三.docx_第4页
第4页 / 共13页
数据库实验三.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

数据库实验三.docx

《数据库实验三.docx》由会员分享,可在线阅读,更多相关《数据库实验三.docx(13页珍藏版)》请在冰豆网上搜索。

数据库实验三.docx

数据库实验三

实验三

实验名称:

表的完整性约束(2课时)

一、实验目的

理解并掌握关系的完整性约束,熟练使用T-SQL语句为每张表添加表约束。

二、实验环境

采用Client/Server模式,学生为客户端,是MSSQLSERVER2000的中文客户端。

登录用户名是:

学号;密码为:

******。

用户名和密码以任课老师给出为准。

三、实验内容与步骤

1、通过企业管理器修改表约束,并生成脚本。

2、通过T-SQL语句修改表约束。

①分别为每张表建立主键约束。

②为相关表建立外键约束。

③ 在表employee加入CHECK约束:

输入的员工编号必须以E开头的5位数编号,性别只能为M/F。

④为销售主表sales中的发票编号字段建立UNIQUE约束。

四、实验结果

1.通过企业管理器修改表约束,并生成脚本。

为相关表建立外键约束。

①通过企业管理器为sales表建立外码,字段为:

cust_id,被参照表为customer

②在表employee加入CHECK约束:

输入的员工编号必须以E开头的5位数编号,性别只能为M/F。

通过企业管理器在表employee加入CHECK约束:

输入的员工编号必须以E开头的5位数编号,性别只能为M/F。

首先建立check约束:

CK_employee:

(emp_nobetween‘E0000’and‘E9999’)

CK_sex(sex=’M’orsex=’F’)

实验图如下:

测试CK_employee约束

测试语句:

insertintoemployee

(emp_no,emp_name,sex,dept,title,date_hired,salary)

values('D0003','张三','M','业务','职员',1900/01/21,43200)

测试CK_sex约束

测试语句:

insertintoemployee

(emp_no,emp_name,sex,dept,title,date_hired,salary)

values('E0003','张三','D','业务','职员',1900/01/21,43200)

 

③为销售主表sales中的发票编号字段建立UNIQUE约束。

创建unique约束,如下图:

测试unique约束:

测试语句:

insertintosales

(order_no,cust_id,sale_id,tot_amt,order_date,ship_date,invoice_no)

values(1,'00001','00001',25343,2012-11-11,2012-11-11,'000001');

insertintosales

(order_no,cust_id,sale_id,tot_amt,order_date,ship_date,invoice_no)

values(2,'00002','00001',25343,2012-11-11,2012-11-11,'000001');

脚本如下:

USE[test]

GO

/******Object:

Table[dbo].[customer]ScriptDate:

2012/11/2815:

00:

29******/

SETANSI_NULLSON

GO

SETQUOTED_IDENTIFIERON

GO

CREATETABLE[dbo].[customer](

[cust_id][nchar](5)NOTNULL,

[cust_name][nchar](20)NOTNULL,

[addr][nchar](40)NOTNULL,

[tel_no][nchar](10)NOTNULL,

[zip][nchar](6)NULL,

CONSTRAINT[PK_customer]PRIMARYKEYCLUSTERED

[cust_id]ASC

)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]

)ON[PRIMARY]

GO

/******Object:

Table[dbo].[employee]ScriptDate:

2012/11/2815:

00:

29******/

SETANSI_NULLSON

GO

SETQUOTED_IDENTIFIERON

GO

CREATETABLE[dbo].[employee](

[emp_no][nchar](5)NOTNULL,

[emp_name][nchar](10)NOTNULL,

[sex][nchar]

(1)NOTNULL,

[dept][nchar](4)NOTNULL,

[title][nchar](6)NOTNULL,

[date_hired][datetime]NOTNULL,

[birthday][datetime]NULL,

[salary][int]NOTNULL,

[addr][nchar](50)NULL,

[Mod_date][datetime]NOTNULL,

CONSTRAINT[PK_employee]PRIMARYKEYCLUSTERED

[emp_no]ASC

)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]

)ON[PRIMARY]

GO

/******Object:

Table[dbo].[product]ScriptDate:

2012/11/2815:

00:

29******/

SETANSI_NULLSON

GO

SETQUOTED_IDENTIFIERON

GO

CREATETABLE[dbo].[product](

[prod_id][nchar](5)NOTNULL,

[prod_name][nchar](20)NOTNULL,

CONSTRAINT[PK_product]PRIMARYKEYCLUSTERED

[prod_id]ASC

)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]

)ON[PRIMARY]

GO

/******Object:

Table[dbo].[sale_item]ScriptDate:

2012/11/2815:

00:

29******/

SETANSI_NULLSON

GO

SETQUOTED_IDENTIFIERON

GO

CREATETABLE[dbo].[sale_item](

[order_no][int]NOTNULL,

[prod_id][nchar](5)NOTNULL,

[qty][int]NOTNULL,

[unit_price][numeric](9,2)NOTNULL,

[order_date][datetime]NULL,

CONSTRAINT[PK_sale_item]PRIMARYKEYCLUSTERED

[order_no]ASC,

[prod_id]ASC

)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]

)ON[PRIMARY]

GO

/******Object:

Table[dbo].[sales]ScriptDate:

2012/11/2815:

00:

29******/

SETANSI_NULLSON

GO

SETQUOTED_IDENTIFIERON

GO

CREATETABLE[dbo].[sales](

[order_no][int]NOTNULL,

[cust_id][nchar](5)NOTNULL,

[sale_id][nchar](5)NOTNULL,

[tot_amt][numeric](9,2)NOTNULL,

[order_date][datetime]NOTNULL,

[ship_date][datetime]NOTNULL,

[invoice_no][nchar](10)NOTNULL,

CONSTRAINT[PK_invoice_no]PRIMARYKEYCLUSTERED

[order_no]ASC

)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]

)ON[PRIMARY]

GO

ALTERTABLE[dbo].[employee]ADDCONSTRAINT[DF_employee_Mod_date]DEFAULT(getdate())FOR[Mod_date]

GO

ALTERTABLE[dbo].[sales]WITHCHECKADDCONSTRAINT[FK_sales_customer]FOREIGNKEY([cust_id])

REFERENCES[dbo].[customer]([cust_id])

GO

ALTERTABLE[dbo].[sales]CHECKCONSTRAINT[FK_sales_customer]

GO

ALTERTABLE[dbo].[employee]WITHCHECKADDCONSTRAINT[CK_employee]CHECK(([emp_no]>='E0000'AND[emp_no]<='E9999'))

GO

ALTERTABLE[dbo].[employee]CHECKCONSTRAINT[CK_employee]

GO

ALTERTABLE[dbo].[employee]WITHCHECKADDCONSTRAINT[CK_sex]CHECK(([sex]='M'OR[sex]='F'))

GO

ALTERTABLE[dbo].[employee]CHECKCONSTRAINT[CK_sex]

GO

2.通过T-SQL语句修改表约束。

①分别为每张表建立主键约束。

为product表建立主键约束:

usetest

Go

altertableproduct

addprimarykey(prod_id)

GO

usetest

Go

altertablesale_item

addprimarykey(order_no,prod_id)

GO

usetest

Go

altertablesales

addprimarykey(order_no)

GO

usetest

Go

altertablecustomer

addprimarykey(cust_id)

GO

usetest

Go

altertableemployee

addprimarykey(emp_no)

GO

②为相关表建立外键约束。

为sales表建立外键约束

语句为:

usetest

Go

altertablesales

addforeignkey(cust_id)REFERENCEScustomer(cust_id)

GO

③ 在表employee加入CHECK约束:

输入的员工编号必须以E开头的5位数编号,性别只能为M/F。

语句为:

usetest

Go

altertableemployee

addconstraintCK_employeeCHECK(emp_nobetween'E0000'and'E9999')

GO

usetest

Go

altertableemployee

addconstraintCK_sexCHECK(sex='M'orsex='F')

GO

实验结果:

④为销售主表sales中的发票编号字段建立UNIQUE约束。

 

语句为:

usetest

Go

altertablesales

addconstraintIX_invoice_noUNIQUE(invoice_no)

实验截图:

实验总结:

通过对通过企业管理器和用T-SQL创建外码,创建check约束,以及unique约束有了进一步的了解和使用。

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

当前位置:首页 > 求职职场 > 简历

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

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