SQL SERVER 2000数据库完整性约束实验报告
- 格式:doc
- 大小:610.93 KB
- 文档页数:17
实验D05:数据完整性约束实验一、实验名称和性质二、实验目的1.掌握数据完整性约束的类型;2.掌握SQL SERVER中的相关完整性约束;三、实验的软硬件环境要求硬件环境要求:PC机(单机)使用的软件名称、版本号以及模块:Windows XP下的SQL Server 2000(或SQL Server 2005)四、知识准备1.SQL SERVER中的完整性约束a)Primary key约束:利用表中的一列或多列来唯一标识一行数据.能确保primary key对应的数据列不为空,且数据不重复.b)default约束:处理用户不包含全部数据列的数据插入.c)check约束通过检查输入数据的值来维护数据的完整性.d)unique约束确保主键外的列数据的唯一性e) Foreign key主要用来维护两个表之间的数据一致性.规则的创建:Create rule 规则名As布尔表达式规则的绑定:Sp_bindrule rulename, ‘table.column’Sp_unbindrule ‘talbe.column’2.创建数据表时指明完整性约束CREATE TABLE <表名>(<列名> <数据类型>[ <列级完整性约束条件> ][,<列名> <数据类型>[ <列级完整性约束条件>] ] …[,<表级完整性约束条件> ] );<列级完整性约束条件>:涉及相应属性列的完整性约束条件<表级完整性约束条件>:涉及一个或多个属性列的完整性约束条件五、实验内容1.建立新表时增加完整性约束。
2.为已有表添加完整性约束。
3.为两表建立关联,实现参照完整性。
六、验证性实验每小题语句输入好后执行,观察执行后有什么结果?想想为什么?1.PRIMARY KEY主键约束的建立(1)建立表时加主键约束(2)在已有的表上添加约束2.DEFAULT约束3.CHECK 约束4.UNIQUE 唯一性约束的建立5.FOREIGN KEY外键约束的建立6.规则的建立建立规则:规则的绑定:七、设计性实验1.实验要求(1)在S表中添加完整性约束:SNO设置为主键,SEX 的缺省值为‘女’,AGE 的有效值为16-25。
数据库原理及应用实验报告实验题目:定义表和数据库的完整性和表数据的插入,修改和删除系:经济学班级:、、、、、、、、、、学号:、、、、、、、、、、、姓名:、、、、、、、、任课教师:、、、、、、、、、、时间:2012年11月一、实验目的(1)了解SQL Server 2000的基本数据类型,空值的概念,以及表的结构特点。
(2)学会使用T-SQL语句和企业管理器创建表结构和修改表结构。
(3)学会使用SQL Server 2000提供的数据完整性功能,并在创建表是定义表的数据的完整性。
通过实验进一步理解数据完整性的概念和分类。
(4)掌握使用T-SQL语句和企业管理器对数据表进行插入,修改和删除数据的操作,并体会数据完整性约束的作用,加深对数据完整性及其约束的理解。
通过本实验,要熟练掌握INSERT,UPDATE,DELETE语句和使用方法。
二、实验环境装有SQL Server 2000的实验机。
三、实验前准备1.要明确能够创建数据库的用户必须是系统管理员,或是被授权使用CREATE DATABASE语句的用户。
2.创建数据库必须要确定数据库名、所有者、数据库大小和存储数据的文件。
3.确定数据库包含哪些表以及包含的各表的结构并且弄明白各表之间的关系。
还要了解SQL Server 的常用数据类型,以创建数据库的表。
4.了解常用的创建数据库和表的方法。
企业管理器创建和语句创建都要会。
5 .要会进行数据的插入、删除、修改的操作方法。
四、实验内容(1)用企业管理器在数据库中创建名称为“020李”的数据库,在其中创建学生表student,课程表course,学生选课表sc,根据课本中的表结构创建后,如下图所示Student表Sc表Course表(2)用T-SQL语句在“020李”数据库中创建客户基本信息表customers,货品信息表goods,订单信息表orders,它们定义如下:create table customers(customerID int identity(1,1) primary key,Cname varchar(8) not null,address varchar(50),city varchar(10),tel varchar(50),birthday datetime,type tinyint default 1);create table goods( goodsid int constraint C1 primary key, goodsname varchar (20)not null,price money ,description varchar(200),storage int,provider varchar(50),Status tinyint default(0));create table orders(orderid int identity(1,1) constraint c2 primary key ,goodid int not null references goods(goodsid) on delete cascade,customerid int not null foreign key(customerid)references customers (customerid) on delete no action,quantity int not null constraint c3 check(quantity>0),ordersum money not null,orderdate datetime default(getdate())); customers表Goods表Orders表(3)、使用SQL语句在SPJ数据库中创建第2章习题10中的四张表;供应商表S,零件表P、项目表J和供应情况表SPJ,数据类型自行设计,注意同时定义主键、外键和其他的数据完整性。
实验六数据完整性1.创建“教学成绩表”,并建立一个IDENTITY列,种子为200501,递增量为2,2.修改课程信息表,设置课程名称为unique约束3.修改课程信息表,设置类别列,类型为nchar(4),check约束值只能为(公共基础课,选修课,专业基础课,专业课),且不允许为空4.修改学生信息表,为列籍贯添加default约束,默认值为‘山西省’5.修改学生信息表,添加检查约束,限定联系电话的格式为区号‘0351’加7位电话号码6.修改教学成绩表,设置列学号为外键,参照学生信息表的学号列,课程编号外键参照课程信息表的编号列2. ALTER TABLE 课程信息表add constraint uq_名称unique(名称)3. ALTER TABLE 课程信息表ALTER COLUMN 类别nchar(14)goALTER TABLE 课程信息表addCONSTRAINT ck_类别CHECK(类别IN ('公共基础课', '选修课', '专业基础课', '专业课'))4. ALTER TABLE 学生信息表ADD CONSTRAINT df_籍贯DEFAULT '山西省' FOR 籍贯5. ALTER TABLE 学生信息表ADD CONSTRAINT ck_电话CHECK(联系电话LIKE '(0351)-[0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9]’)6. ALTER TABLE 教学成绩表ADDCONSTRAINT fk_学号FOREIGN KEY(学号)REFERENCES 学生信息表(学号)GOALTER TABLE 教学成绩表ADDCONSTRAINT fk_课程编号FOREIGN KEY(课程编号)REFERENCES 课程信息表(编号)use教学成绩管理数据库create table教学成绩表(ID INT IDENTITY(200501,2)NOT NULL primary key,学号char(6)not null,课程编号char(6)not null,教师编号char(6)not null,学年学期char(11)not null,成绩char(10)not null check (成绩in('优','良','中','及格','不及格','补考及格','缓考','缺考','缺课','免修','未修','重修','作弊')),分数numeric(5,1)not null check (分数like'[0-100]'),考试类别nchar(4)not null check (考试类别in('期末考试','期初考试','回校补考')),考试考查类型nchar(2)not null check(考试考查类型in('考试','考查')),考试日期datetime not null,录入日期datetime not null)ALTER TABLE教学成绩表ADDCONSTRAINT fk_教学成绩表_学号FOREIGN KEY(学号)REFERENCES学生信息表(学号)ALTER TABLE教学成绩表ADDCONSTRAINT fk_教学成绩表_课程编号FOREIGN KEY(课程编号)REFERENCES课程信息表(编号)ALTER TABLE教学成绩表ADDCONSTRAINT fk_教学成绩表_教师编号FOREIGN KEY(教师编号)REFERENCES教师信息表(编号)alter table学生信息表addconstraint pk_学生信息表_学号primary key(学号)alter table课程信息表alter column编号char(6)not nullalter table课程信息表addconstraint pk_课程信息_编号primary key(编号)alter table教师信息表addconstraint pk_教师信息表_编号primary key(编号)use pubscreate table宽带申请表(申请ID int not null primary key,学号nchar(10)not null,姓名nvarchar(20)not null,申请时间datetime not null,联系电话nvarchar(20)not null,宿舍编号nchar(8)not null)gocreate table宽带信息报表(月份nchar null,月申请量int not null)gocreate table申请备案记录表(申请ID int not null primary key,学号nchar(10)not null,姓名nvarchar(20)not null,申请时间datetime not null,联系电话nvarchar(20)not null,宿舍编号nchar(8)not null)gocreate trigger application on dbo.宽带申请表after insertasbeginset nocount ondeclare@aplicationDate datetimedeclare@month varchar(7)declare@count intselect@aplication=inserted.申请时间from insertedset@AccMonth=convert(varchar(7),@aplication,111)select@count=count(*)from宽带信息报表where月份=@AccMonthif@count<>0update宽带申请报表set月申请量=月申请量+1 where月份=@AccMonth elseinsert into宽带申请报表(月份,月申请量)values (@AccMonth,1) end。
实验三、四 创建表及输入数据及完整性约束本实验需要4学时。
一、实验目的要求学生熟练掌握和使用Transact-SQL、SQL Server企业管理器创建表、索引和修改表结构,并学会使用SQL Server 查询分析器接收Transact-SQL语句和进行结果分析。
学生熟练掌握使用 SQL、Transact-SQL和SQL Server企业管理器向数据库输入数据、修改数据和删除数据的操作。
二、实验内容1 创建表、确定表的主码和约束条件。
为主码建索引。
2 查看和修改表结构。
3 输入数据、修改数据和删除数据三、实验步骤(1)通过企业管理器,在建好的图书借阅数据库中建立图书、读者和借阅3个表,其结构为;图书(书号,类别,出版社,作者,书名,定价,作者).读者(编号,姓名,单位,性别,电话).借阅(书号,读者编号,借阅日期)要求为属性选择合适的数据类型,定义每个表的主码.是否允许空值和默认值等列级数据约束。
(2)在企业管理器中建立图书、读者和借阅3个表的表级约束.每个表的主码约束.借阅表与图书表间、借阅表与读者表之间的外码约束,要求按语义先确定外码约束表达式.再通过操作予以实现.实现借阅表的书号和读者编号的惟一性约束:实现读者性别只能是“男”或“女”的Check(检查)约束。
(3)通过企业管理器,在图书借阅数据库的图书、读者和借阅3个表中各输入10条记录。
要求记录不仅满足数据约束要求.还要有表间关联的记录。
(4)通过企业管理器实现对图书借阅数据库的图书、读者和借阅3个表中数据的插入。
删除和修改操作。
(5)通过企业管理器实现对学生选课库的数据增加、数据删除和数据修改操作、要求学生、课程和选课表中各有10条以上的记录。
四、实验方法1 新建表在 SQL Serve 2000的数据库中,文件夹是按数据库对象的类型建立的.文件夹名是该数据库对象名。
当在企业管理器中选择服务器和数据库文件夹,并打开已定义好的图书.读者数据库后,会发现它自动设置了关系图、表、视图、存储过程、用户、角色、规则、默认等文件夹。
实验报告课程名称:数据库原理与应用上机实验名称:数据库的完整性控制专业班级:计算机科学与技术1103 指导教师:卫凡学生姓名:贾梦洁学期:2013-2014学年第一学期实验报告课程名称数据库原理与应用实验名称数据库的完整性控制姓名贾梦洁学号 201107010330专业班级计1103实验日期2013年12月19日成绩指导教师卫凡一、实验目的1. 加深对数据库完整性控制作用的认识和各种完整性约束概念的理解。
2. 熟练掌握数据库完整性约束方法。
二、实验环境硬件环境:PC机软件环境:操作系统为Microsoft Windows 2000或以上版本。
数据库管理系统为Microsoft SQL Server 2000标准版或企业版。
三、实验容1. 熟悉利用企业管理器为列创建DEFAULT约束、为列创建CHECK约束、为列创建UNIQUE 约束、为列创建不允许为空约束、创建PRIMARY KEY约束、创建FOREIGN KEY约束。
2. 熟悉利用企业管理器将各种完整性约束删除。
3. 熟悉利用SQL为列创建DEFAULT约束、为列创建CHECK约束、为列创建UNIQUE约束、为列创建是否为空、创建PRIMARY KEY约束、创建FOREIGN KEY约束。
4. 熟悉利用SQL将各种完整性约束删除。
四、实验步骤1.在实验1中已经对学生_课程数据库中建立了学生、课程和选课3个表,其表结构为:学生S(学号,,性别,年龄,所在专业名称)课程C(课程号,课程名,任课教师名,开设的学期)选课SC(学号,课程号,成绩)利用企业管理器增加如下的完整性约束:(1)限定学生“性别”列的值只能是“男”或“女”的CHECK约束;(2)为“性别”列上创建一个默认约束,默认值为“男”;(3)为“”列上创建一个惟一性约束(即UNIQUE约束);(4)将“年龄”列设置为允许为空字段。
2.利用企业管理器建立学生、课程和选课3个表的表级约束(包括主键约束和外键约束)。
数据库实验报告西安邮电大学(计算机学院)课内实验报告实验:数据库及数据库中表的建立实验课程:数据库系统原理与应用班级:经济学1601班学号:学生姓名:冯丹娜任课教师:樊珊SQL Server 2000管理工具的使用和创建数据库一、实验目的1.熟悉SQL Server 2000的环境。
2.掌握企业管理器的基本使用方法,对数据库及其对象有基本了解,了解对SQL Server 2000进行配置的方法。
3.掌握查询分析器的基本使用方法以及在查询分析器中执行T-SQL 语句的方法。
4.了解SQL Server 2000数据库的逻辑结构和物理结构。
5.学会在企业管理器中创建数据库及查看数据库属性。
6.学会使用T-SQL语句创建数据库。
二、实验内容1.学会使用企业管理器和查询分析器管理工具。
2.使用企业管理器创建数据库。
创建一个教务管理数据库,名称为JWGL,数据文件的初始大小为20MB,文件增长方式为自动增长,文件增长增量设为5MB,文件的增长上限为500MB。
日志文件的初始大小为10MB,文件增长增量设为1MB,文件的增长限制设为100MB。
数据文件的逻辑文件名和物理文件名均采用默认值,分别为JWGL_data 和d:\Microsoft SQL Server\MSSQL\data\JWGL_data.mdf;事务日志文件的逻辑文件名和物理文件名也采用默认值,分别为JWGL_log和d:\Microsoft SQL Server\MSSQL\data\JWGL_log.ldf。
3.在查询分析器中使用T-SQL语句创建数据库。
创建一个名为Market的数据库(注意e盘下应存在sql_data目录)。
CREATE DATABASE MarketON(NAME=Market_Data,FILENAME='e:\sql_data\Matket_Data.mdf',SIZE=10,MAAXSIZE=50,FILEGROWTH=10%)LOG ON(NAME=Market_Log,FILENAME='e:\sql_data\Market_Log.ldf',SIZE=5,MAXSIZE=15,FILEGROWTH=10%);4.使用T_SQL语句或企业管理器创建一个图书借阅管理数据库,数据库名为TSGL,数据文件和日志文件的初始大小、增长方式、文件的增长上限等均可采用默认值。
实验四数据库完整性与安全性一.实验目的:理解并掌握利用SQL Server 2000进行完整性和安全性控制的基本操作和命令。
并熟悉触发器的使用。
二.实验属性:设计性。
三.实验仪器设备及器材:装有SQL Server 2000的电脑。
四.实验要求1. 预习SQL Server 2000中触发器的概念和使用方法,以及利用create trigger语句定义触发器的方法。
2. 预习SQL Server 2000中安全性架构,以及创建安全性账户和数据库角色等的方法。
2. 实验前仔细阅读实验指导书,理解实验要求。
3. 实验中要求完成如下工作(其中涉及的表是实验一中建立的表):五.实验内容1.触发器的使用1.1创建一个insert触发器,当在Student表中插入一条新记录时,给出‘你已经插入了一条新记录!!!’的提示信息。
1.2 创建一个insert触发器,当在SC表中插入一条新记录时,Sno和Cno必须是student和Course中存在的学号和课程号,且Grade应该在0----100之间。
1.3 创建一个after触发器,在Student表中删除某学生的记录时,删除其相应的选课记录。
1.4 创建一个instead of 触发器,当在Course表中删除记录时,不允许删除Course 表中的数据。
2. 数据库安全性2.1 在企业管理器中创建数据库用户U1、U2、U3和数据库角色R1、R2、R3,并对其操作权限进行设置。
2.2 使用SQL语言对数据库用户和角色的权限的授予。
(1)把查询Student表的权限授给用户U1:(2)把对Student表和Course表的全部操作权限授予用户U2和U3(3)把对Student表的Insert操作权限授予用户U2,并允许将此权限再授予其它用户。
2.3 使用SQL语言进行数据库对用户和角色权限的收回。
2.3.1把用户U2对Student表的Insert的权限收回。
2.3.2 收回所有用户对表student的查询权限2.3.3 通过角色来实现将一组权限授予一个用户。
实验5 数据库的安全性与完整性一、实验目的(1)理解数据库的安全性与完整性概念(2)掌握数据库的安全性控制技术(3)掌握数据库的完整性控制技术二、实验环境Windows XP+SQL Server 2000三、实验内容1.设置安全认证模式方法:服务器组上右键“属性”|“安全性”。
2.创建登录用户(1)利用企业管理器创建登录用户方法:安全性|登录,右键。
【例1】创建4个登录用户U1、U2、U3、U4,创建U1和U2时均选中数据库访问为SP,使他们成为SP数据库的用户,创建U3和U4时不选中任何数据库。
(2)使用T-SQL语句创建登录用户语法为:sp_addlogin 登录名[,登录密码[,默认数据库]]注意:未指定默认数据库时,默认数据库是master。
【例2】创建登录用户,登录名为丁勇,密码为dy,默认数据库为SP。
3.修改登录用户(1)利用企业管理器修改登录用户(2)使用T-SQL语句修改登录用户语法为:sp_password 旧密码,新密码,登录用户名【例3】以sa登录服务器,修改登录用户丁勇的密码。
4.删除登录用户(1)利用企业管理器删除登录用户(2)使用T-SQL语句删除登录用户语法为:sp_droplogin 登录用户名【例4】删除登录用户U4。
注意:若待删除登录用户已是某数据库用户,则需先删除数据库用户,再删除登录用户。
5.创建数据库用户(1)利用企业管理器创建数据库用户(2)使用T-SQL语句创建数据库用户语法为:sp_adduser 登录用户名【例5】创建SP的数据库用户U36.删除数据库用户(1)利用企业管理器删除数据库用户(2)使用T-SQL语句删除数据库用户语法为:sp_dropuser 数据库用户名【例6】删除SP的数据库用户U2。
7.创建数据库角色(1)使用企业管理器创建数据库角色(2)使用T-SQL语句创建数据库角色语法为:sp_addrole 数据库角色名sp_addrolemember 角色名用户sp_droprolemember 角色名用户【例7】为SP数据库创建数据库角色R2,将用户U1添加至R2中,再从R2中删除U1。
数据库完整性约束
实验报告
1.实验内容(如果是小组协同完成的实验,请指出本人承担的实验任务)实验4.1实体完整性约束
实验4.2域完整性约束
实验4.3参照完整性约束
2.实验环境(软件、硬件及条件)
学校机房80606
软件:SQL Sever 2000
3.实验过程分析(包括主要步骤和主要截图)
实验4.1实体完整性约束
1、用企业管理器为数据库表S创建PRIMARY KEY 约束
启动企业管理器,展开数据库jxsk中的“表”节点。
在右窗格中选择表S,
单击鼠标右键,打开快捷菜单,选择“设计表”选项,打开表设计器,选择SNO列,单击工具栏中的按钮
2、用企业管理器创建新表TEST_SC,并创建PRIMARY KEY 约束
3、用SQL为现有表T在TNO列上PRIMARY KEY 约束
用表设计器打开表T,确保TNO列属性设置不为空
打开查询分析器,在查询窗口输入SQL语句为表T在TNO上创建主键
4、用SQL创建新表TEST_C,并以列约束形式创建PRIMARY KEY 约束打开查询分析器,在查询窗口输入SQL语句创建新表TEST_C,并以列约束的形式在列CNO上创建主键
查看表TEST_C,查看各列的定义
5、用SQL创建新表TEST_TC,并以列约束形式创建PRIMARY KEY 约束
打开查询分析器,在查询窗口输入SQL语句创建新表TEST_TC,并以列约束的形式在列TNO和CNO上创建主键
查看表TEST_TC,查看各列的定义
6、用企业管理器为现有表TEST_TC中的CNO和TNO列创建“UNIQUE 约束”
创建索引IX_TEST_TC,设置TNO和CNO为UNIQUE约束
7、用SQL为现有表TEST_C中的CN列创建“UNIQUE约束”
查看表TEST_C的变化
8、用企业管理器为现有表TEST_C增加新列ID_SC,并创建此列属性为IDENTITY
9、用SQL为现有表TEST_TC增加新列ID_TC,并创建此列属性为
IDENTITY
10、在企业管理器中删除现有表TEST_SC的主键PK_TEST_SC和取消
ID_SC列的标识属性
选中SNO和CNO列,单击工具栏中的设置主键的钥匙按钮,删除主键约束
11、用SQL删除
表TEST_C中的CN列的“UNIQUE约束”UNIQUE_C
实验4.2 域完整性约束
1、用企业管理器为现有表T创建DEFAUL T和CHECK约束(要求CHECK 约束对已有数据不做检查)
用表设计器打开表T,给性别列SEX设DEFAUL T约束值“男”
打开表T属性对话框,创建PROF列与COMM列之间限定取值关系的CHECK约束
2、用SQL给现有表S中的年龄AGE创建取值范围在14~40岁之间的
CHECK约束,并检查表中的现有数据是否符合此CHECK约束
查看表S的约束
3、用SQL语句创建一新表TEST_S,包含DEFAUL T和CHECK约束
查看表TEST_S中的对象
4、用SQL删除表中PROF与COMM之间的CHECK约束
5、用企业管理器删除表TEST_S中列SEX的DEFAUL T约束和AGE列的CHECK约束
实验4.3参照完整性约束
1、用企业管理器创建表S与SC之间的参照关系
2、用SQL创建T表与TC表之间的参照关系
3、创建jxsk中5个表之间的关联关系图
“创建关系”对话框
保存
4、用企业管理器删除C表与表TC之间的参照关系
4.实验结论(实验过程中发现的问题或实验后的感想等)
附件(附程序代码的文件名,代码文件存放在该报告的同一文件夹下)。