实验6 数据库完整性的管理

实验6 数据库完整性的管理
实验6 数据库完整性的管理

实验6 数据库完整性的管理

一、实验目的

●掌握域完整性的实现方法。

●掌握实体完整性的实现方法。

●掌握参照完整性的方法。

二、实验内容

1、数据库的完整性设置。

三、实验步骤

●可视化界面的操作方法:

实体完整性

1.将student表的“sno”字段设为主键:在表设计界面中,单击左边的行选定块,选定“sno”字段,单击工具按钮设置主键。如图1所示:

图1

2.将“sc”表的“sno”和“cno”设置为主键:在表设计界面中,单击并按住Ctrl键拖动左边的行选定块,选定sno和cno字段,单击工具按钮设置主键。如图2所示:

图2

域完整性

3.将“ssex”字段设置为只能取“男”,“女”两值:在表设计界面,点击鼠标右键——CHECK约束——添加约束,添加CK_student_sex名称,然后在约束表达式框中输入“s sex in ('男','女')”。如图3所示。

图3

参照完整性

4.将“student”表和“sc”表中的“sno”字段设为参照:打开“sc”表的设计界面, 点击工具栏按钮,在弹出的属性(properties)对话框中点击“新建”按钮,在“主键表(Primarykeytable)”下拉框中选择“student”表,在其下的字段选择框中选择“sno”,在“外键表(Foreignkeytable)”下拉框中选择“sc”表,在其下的字段选择框中选择“sno”,单击关闭即可。见图4。

图4

●命令方式操作方法:

实体完整性

1.将“student”表的“sno”字段设为主键:

当“student”表已存在则执行:

Alter table student add constraint pk_sno primary key (sno)

当“student”表不存在则执行:

Create table student(sno CHAR(5) primary key,

sname CHAR(10) NOT NULL,

ssex CHAR(2),

sage int,

sdept CHAR(4))

注:可用命令“drop table student”删除“student”表

2.添加一身份证号字段,设置其惟一性(注:操作前应删除表中的所有记录) Alter table student add id char(18) unique (id)

3.将“sc”表的“sno”和“cno”设置为主键:

当“sc”表已存在则执行:

alter table sc add constraint PK_SnoCno primary key (sno,cno)

当“sc”表不存在则执行:

Create table sc(sno CHAR(5),

cno CHAR(2),

grade INT NULL,

constraint PK_SnoCno primary key (sno,cno))

域完整性

4.将“ssex”字段设置为只能取“男”,“女”两值:

当“student”表已存在则执行:

alter table student add constraint CK_Sex check (ssex in ('男','女'))

当“student”表不存在则执行:

Create table student(sno CHAR(5) primary key,

sname CHAR(10),

ssex CHAR(2) check (ssex in ('男','女')) ,

sage int, sdept CHAR(4))

5.设置学号字段只能输入数字:

alter table student add constraint CK_Sno_Format check (sno like

'[0-9][0-9][0-9][0-9][0-9]')

6.设置身份证号的输入格式:

alter table student add constraint CK_ID_Format check ((id like

'[0-9][0-9][0-9][0-9][0-9][0-9][1-2][0-9][0-9][0-9][0-1][0-9][0-3][0-9][0-9][0-9][0-9] _') OR (id like

'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9][0-9][0-9][0-9]')) 7.设置18位身份证号的第7位到第10位为合法的年份(1900-2050)

alter table student add constraint CK_ID_Format2 check (len(id)=18 and

( (convert(smallint,substring(id,7,4) )>=1900)

and(convert(smallint,substring(id,7,4) )<=2050)) )

8.设置男生的年龄必须大于22,女生的年龄必须大于20。

Alter table student add constraint CK_age check (ssex='男' and sage>=22 or ssex='女' and sage>=20 )

参照完整性

9.将“student”表和“sc”表中的“sno”字段设为参照:

当“sc”表已存在则执行:

alter table sc add constraint FP_sno foreign key (sno) references student(sno ) 当“sc”表不存在则执行:

Create table sc(sno CHAR(5) constraint FP_sno

foreign key references student(sno),

cno CHAR(2),grade INT NULL,

constraint PK_SnoCno primary key (sno,cno) )

完整性验证

1.实体完整性:在“student”表数据浏览可视化界面中输入学号相同的两条记录将会出现错误如图5所示:

图5

或者在命令窗口输入下面两条命令也会出现错误提示:

insertinto student values('95003','张三','男',24,'CS','422229************')

insertinto student values('95001','李四','女',21,'CS','422229************')

图6

下面的语句用来验证“sc”表中的实体完整性:insert into sc values('95002', '10',65)

insert into sc values('95002', '10',90)

图7

2.域完整性:

使用下面的语句验证“ssex”字段的域完整性:

insert into student values('95009','张匀','大',20,'CS',‘422229************’)

3.参照完整性:

使用下面的语句“验证”sc表中的“sno”字段的域完整性(假设student表中没有学号为“95998”的学生记录):

insert into sc values('98998', '10',98)

四、实验任务:

1、建立课程的实体完整性,和课程号cno的参照完整性;

2、对HRM数据库,练习建立三个表的主外键约束、唯一约束、取空值约束、用户自定义的约束(参考HRM数据库表定义图中说明);

3、建立salary表的Income字段限定在0-9999之间。

五、实验报告要求

1、写出与上述任务相对应的SQL语句

2、并记录在实验过程中遇到的问题、解决办法及心得体会。

数据库实验

数据库实验 集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)

数据库原理实验指导 实验前准备: 请设计一个企业销售管理据库,其中需要保存的信息如下: 员工信息,包括:员工编号、员工姓名、性别、所属部门、职称、到职日、生日、薪水、填表日期; 客户信息,包括:客户号,客户名称,客户住址,客户电话、邮政编码; 产品信息,包括:产品编号,产品名称; 员工和客户可以签订订单,每签订一个订单,就要保存订单信息,包括:订单编号、客户号、业务员编号、订单金额、订货日期、出货日期、发票号码。 此外,每个订单可能涉及到多种产品,每种产品可能被多个订单订购。因此需要每个订单中每类产品的销售明细,包括每种产品的销售数量、单价、订单日期; 要求: (1)给出系统的ER图(可以用word或其它画图工具,如Visio画),要求画出所有的实体,联系,属性以及联系的类型; (2)将ER图转换为关系模型; 实验一 实验名称:数据定义(2课时) 一、实验目的

1、理解数据库模式的概念,通过使用SQL SERVER企业管理器或者My Sql建立数据库和基本表。模式为人事表、客户表、销售表、销售明细表、产品表。熟悉SQL SERVER企业管理器的使用,并将得到的表生成脚本,然后保存。 2、理解上述基本表之间的关系,建立关系表。 3、掌握修改表结构的基本方法 4、掌握索引和视图的创建方法 二、实验环境 MS SQL SERVER或者My Sql。 三、实验内容与步骤 1、建立一个数据库和五张表的表结构。 (1)/*员工人事表employee */ Create datebase sale; create table employee( emp_no char(5) Not null primary key, emp_name char(10) Not null, sex char(1) Not null,

数据库原理实验报告-实验三-数据完整性与安全性控制

一、实验内容、步骤以及结果 1.利用图形用户界面对实验一中所创建的Student库的S表中,增加以下的约束和索引。 (18分,每小题3分) (1)非空约束:为出生日期添加非空约束。 非空约束:取消表S中sbirth的勾。可能需要重建表。 (2)主键约束:将学号(sno)设置为主键,主键名为pk_sno。 设主键:单击数据库Student-->单击表-->单击S-->右击sno-->选择‘修改’命 令-->对话框中右击sno-->选择‘设置主键’-->修改主键名为‘pk_sno’ -->保 存 (3)唯一约束:为姓名(sname)添加唯一约束(唯一键),约束名为uk_sname。 唯一约束:单击数据库Student-->单击表-->单击S-->右击sname-->选择‘修改’命令→右击sname-->选择‘索引和键’命令-->打开‘索引和键’框图-->添加--> 是否唯一改为‘是’-->名称改为‘us_sname’ -->关闭。

(4)缺省约束:为性别(ssex)添加默认值,其值为“男”。 设默认约束:单击数据库Student→单击表→单击S→右击sno→选择‘修改’命令→单击cno-->在默认值栏输入‘男’→保存

(5)CHECK约束:为SC表的成绩(grade)添加CHECK约束,约束名为ck_grade,其检查 条件为:成绩应该在0-100之间。

(6)外键约束:为SC表添加外键约束,将sno,cno设置为外键,其引用表分别是S表 和C表,外键名称分别为fk_sno,fk_cno。 2.在图形用户界面中删除以上小题中已经创建的各种约束,用SQL语言分别重新创建第1题中的(2)-(6)小题.(15分,每小题3分,提示:alter table add constraint) 删除约束:单击数据库Student-->表-->单击S-->展开键、约束。一一删除即可。

实验:数据库综合查询

实验六:数据库综合查询 一、实验目的 1.掌握SELECT语句的基本语法和查询条件表示方法; 2.掌握查询条件种类和表示方法; 3.掌握连接查询的表示及使用; 4.掌握嵌套查询的表示及使用; 5.了解集合查询的表示及使用。 二、实验环境 已安装SQL Server 2005 企业版的计算机(13台); 具有局域网环境,有固定IP; 三、实验学时 2学时 四、实验要求 1.了解SELECT语句的基本语法格式和执行方法; 2.了解连接查询的表示及使用; 3.了解嵌套查询的表示及使用; 4.了解集合查询的表示及使用; 5.完成实验报告; 五、实验内容及步骤 以数据库原理实验5数据为基础,请使用T-SQL 语句实现进行以下操作:1.查询以‘DB_’开头,且倒数第3个字符为‘s’的课程的详细情况; USE student SELECT'课程号'=Cno,'课程名'=Cname,'先行课号'=Cpno,'学分'=Ccredit FROM course WHERE SUBSTRING(Cname,1,3)='DB_'AND SUBSTRING(RIGHT(RTRIM(Cname),3),1,1)='s' 2.查询名字中第2个字为‘阳’的学生姓名和学号及选修的课程号、课程名;USE student SELECT'姓名'=student.Sname,'学号'=student.Sno,'课程号'=https://www.360docs.net/doc/b36925853.html,o,'课程名'=https://www.360docs.net/doc/b36925853.html,ame FROM student,course,sc

student.Sno=sc.Sno AND https://www.360docs.net/doc/b36925853.html,o=https://www.360docs.net/doc/b36925853.html,o AND SUBSTRING(LTRIM(student.Sname),2,1)='阳' 3.列出选修了‘数学’或者‘大学英语’的学生学号、姓名、所在院系、选修课程号 及成绩; USE student SELECT '学号'=student.Sno, '姓名'=student.Sname, '所在院系'=student.Sdept, '课程号'=https://www.360docs.net/doc/b36925853.html,o, '成绩'=sc.Grade FROM student,course,sc WHERE student.Sno=sc.Sno AND https://www.360docs.net/doc/b36925853.html,o=https://www.360docs.net/doc/b36925853.html,o AND (https://www.360docs.net/doc/b36925853.html,ame='数学'OR https://www.360docs.net/doc/b36925853.html,ame='大学英语') 4.查询缺少成绩的所有学生的详细情况; USE student SELECT student.* FROM student,sc

201509-实验三:数据库的安全性课案

实验三:数据库的安全性 一、实验目的 熟悉通过SQL对数据进行安全性控制。 二、实验平台 SQL Server 2008 三、实验内容和要求 1、掌握Windows登录名和SQL SERVER登录名的建立与删除方法; 2、掌握数据库用户创建与管理的方法; 3、掌握服务器角色的用法; 4、掌握数据库权限授予、拒绝和撤销的方法; 四、实验步骤 (一)授权与回收。 [例1]授权。在SQL Sever 中建立多个用户,给他们赋予不同的权限,然后查看是否真正拥有被授予的权限了。 1)建立用户U1、U2、U3、U4、U5、U6、U7。 2)以系统管理员身份对这7个用户进行授权。 [例1-1]把查询Student 表的权限授给用户U1。 GRANT SELECT ON Student TO U1; [例1-2]把对Student 表和Course 表的全部操作权限授予用户U2 和U3。 GRANT ALL PRIVILEGES ON Student TO U2,U3; GRANT ALL PRIVILEGES ON Course TO U2,U3; [例1-3]把对表SC 的查询权限授予所有用户。 GRANT SELECT ON SC TO PUBLIC; [例1-4]把查询Student 表和修改学生学号的权限授给用户U4。 GRANT UPDATE (Sno) , SELECT ON Student TO U4; [例1-5]把对表SC 的INSERT 权限授予U5,并允许U5 将此权限再授予其他用户。 GRANT INSERT ON SC TO U5

WITH GRANT OPTION; [例1-6]用户U5 将对表SC 的INSERT 权限授予U6,并允许将权限转授给其他用户。 首先应该以U5 的身份重新登录数据库,然后再进行授权。 GRANT INSERT ON SC TO U6 WITH GRANT OPTION; [例1-7]用户U6 将对表SC 的INSERT 权限授予U7。 首先应该以U6 的身份重新登录数据库,然后再进行授权。 GRANT INSERT ON SC TO U7; 3)在授权之后验证用户是否拥有了相应的权限。 在执行完上面七个语句之后,我们可以分别以不同用户的身份登录数据库,进行相关操作,检查系统是否许可。例如: [例1-8]U4 更新Student 表的学生学号。 UPDATE Student SET SNO = ‘95101’ WHERE SNO = ‘95001’; 显示更新 1 条记录,即U4 用户拥有了对Student 表Sno 的更新权限。[例1-9]U7 向SC 表中插入一条数据:(95020,20,88)。 INSERT INTO SC V ALUES(‘95020’,’20’,88); 显示插入 1 条记录,即用户U7 拥有了对SC 表的插入权限。 [例2]回收权限。将[例1]授予的权限部分收回,检查回收后,该用户是否真正丧失了对数据的相应权限。 1)回收权限。 [例2-1]收回用户U4 修改学生学号的权限。 当前用户为SYSTEM,直接执行下列语句: REVOKE UPDATE (SNO) ON Student FROM U4; [例2-2]收回所有用户对表SC 的查询权限。 REVOKE SELECT ON SC FROM PUBLIC; [例2-3]收回用户U5 对SC 表的INSERT 权限。 将权限INSERT 授予给用户U5 时,允许该用户将权限再授予给其他用户;之后,用户U5 将INSERT 权限转授给了U6,U6 又将权限转授给U7。因此,将用户U5 的INSERT 权限收回的时候必须级联收回,不然系统将拒绝执行该命令: REVOKE INSERT ON TABLE SC FROM U5 CASCADE;

数据库实验1-6参考答案

实验一SQL Server使用初步 一、实验目的 1、熟悉SQL Server2000的组成及基本功能。 2、掌握SQL Server2000的登录及注册。 3、掌握SQL Server2000企业管理器的使用方法。 4、熟悉查询分析器的基本使用。 二、实验预习 1、什么是数据库管理系统DBMS?你所知道的DBMS有哪些? 答:DBMS是位于用户和操作系统之间的一层数据管理软件。常见的DBMS主要有:Oracle、db2、SQL Server、MySQL、PostgreSQL、SQLite、Firebird等等。 2、SQL Server 2000(2005)的安装步骤? 答:以企业版安装为例,步骤为: 将企业版安装光盘插入光驱后,出现以下提示框。请选择“安装 SQL Server 2000 组件” 出现下面对话框后,选择 "安装数据库服务器" 。 选择 "下一步",然后选择 "本地计算机" 进行安装。 在 "安装选择" 窗口,选择 "创建新的SQL Server实例..."。对于初次安装的用户,应选用这一安装模式,不需要使用 "高级选项" 进行安装。 "高级选项" 中的内容均可在安装完成后进行调整。 在 "用户信息" 窗口,输入用户信息,并接受软件许可证协议。 在“安装定义”窗口,选择“服务器和客户端工具”选项进行安装。 在“实例名”窗口,选择“默认”的实例名称。 在“安装类型”窗口,选择“典型”安装选项,并指定“目的文件夹”。 在 "服务账号" 窗口,请选择 "对每个服务使用统一账户..." 的选项。 在 "身份验证模式" 窗口,选择 "混合模式..." 选项,并设置管理员"sa"账号的密码。 最后按“下一步”即可完成安装。 检测安装:如果安装成功,应该能成功启动SQL Server,并且能和SQL Server 客户端连接上。 可以通过服务管理器来进行启动。

数据库实验报告完整

华北电力大学 实验报告 | | 实验名称数据库实验 课程名称数据库 | | 专业班级:学生姓名: 学号:成绩: 指导教师:实验日期:2015/7/9

《数据库原理课程设计》课程设计 任务书 一、目的与要求 1.本实验是为计算机各专业的学生在学习数据库原理后,为培养更好的解决问题和实际动手能力 而设置的实践环节。通过这个环节,使学生具备应用数据库原理对数据库系统进行设计的能力。 为后继课程和毕业设计打下良好基础。 2.通过该实验,培养学生在建立数据库系统过程中使用关系数据理论的能力。 3.通过对一个数据库系统的设计,培养学生对数据库需求分析、数据库方案设计、系统编码、界 面设计和软件调试等各方面的能力。是一门考查学生数据库原理、面向对象设计方法、软件工程和信息系统分析与设计等课程的综合实验。 二、主要内容 针对一个具有实际应用场景的中小型系统(见题目附录)进行数据库设计,重点分析系统涉及的实体、实体之间的联系,实现增加、删除、更新、查询数据记录等基本操作。大致分为如下步骤: 1. 理解系统的数据库需求,分析实体及实体间联系,画出E-R图: 1)分析确定实体的属性和码,完成对该实体的实体完整性、用户自定义完整性的定义。 2)设计实体之间的联系,包括联系类型和联系的属性。最后画出完整的E-R图。 2.根据设计好的E-R图及关系数据库理论知识设计数据库模式: 1)把E-R图转换为逻辑模式; 2)规范化设计。使用关系范式理论证明所设计的关系至少属于3NF并写出证明过程;如果不属于3NF则进行模式分解,直到该关系满足3NF为止,要求写出分解过程。 3)设计关系模式间的参照完整性,要求实现级联删除和级联更新。 4)用SQL语言完成数据库内模式的设计。 3.数据库权限的设计: 1)根据系统分析,完成授权操作; 2)了解学习收回权限的操作。 4.完成用户界面的设计,对重要数据进行加密。

数据库安全性和完整性实验

实验9:数据库安全性实验 一、实验目的 加深对数据库安全性的理解,并掌握SQL Server中有关用户、角色及操作权限的管理方法。 二、实验内容 1.数据库的安全性实验。在SQL Server企业管理器中,设置SQL Server 的安全认证模式,实现对SQL Server的用户和角色的管理,设置和管理 数据操作权限。 三、实验原理和步骤 1.设置SQL Server的安全认证模式,选择混合模式。 右键服务器属性-安全性:选择SQL Server和Windows身份验证模式。 重启服务,生效。 2.账号: sa账号登录 3.登录帐号的管理

1)将Windows帐号添加到SQL Server 2005中 创建操作系统用户- 4.数据库用户的管理 1)dbo用户; 查看banking数据库的dbo用户,查看用户权限。 2)U1用户; 创建banking数据库的U1用户,查看用户权限。 5.权限管理 1)赋予所创建的U1用户db_datareader角色,查看用户权限 2)赋予所创建的U1用户db_datawriter角色,查看用户权限 3)赋予所创建的U1用户db_owner角色,查看用户权限 4)两种方法赋予所创建的U1用户对banking数据库表customer的select 权限,验证并写出sql语句 5)两种方法赋予所创建的U1用户对banking数据库表branch的select 和对branch_name修改的权限,验证并写出sql语句 6)把对loan表的update权限授予所创建的U1用户用户,并允许将此 权限再授予其他用户,验证并写出sql语句 7)两种方法回收所创建的U1用户对banking数据库表customer的select 权限,验证并写出sql语句 8)两种方法回收所有用户对banking数据库表loan的update权限,验 证并写出sql语句 四、实验报告要求 要求写出如下设计报告: 1.用Transact-SQL写出实验操作的语句 2.实验步骤和实验结果。 3.实验中的问题和提高。 4.SQL Server中有的安全性功能。 五、注意事项 1.用户、角色和权限的职能,以及它们之间的关系。

数据库实验六

数据库上机实验六 实验名称:视图的建立与使用(续)和数据库的安全性控制 一、实验目的 1.加深掌握视图的定义与工作原理。 2.理解SQL SERVER 2000登录账户、数据库用户、角色、权限的概念及管理方法。 二、实验内容与步骤 1.对视图的操作 (1)创建一个视图,该视图只含上海客户信息,即客户号、客户姓名、住址。 create view cus_SH as select cust_id, cust_name, addr from customer where addr = '上海' (2)删除题1建立的视图中所有姓“王”的客户数据。 delete from cus_SH where cust_name like '王%' (3)对题(1)建立的视图添加一条记录数据(注意:分别查看customer表和该视图的结果)。 insert into cus_SH values ('10010','叶秀玲','武汉') /* 无法将 NULL 值插入列 'tel_no',表 'Sale_Manage.dbo.customer';该列不允许空值。 INSERT 失败。 语句已终止。 */

(4)通过题(1)建立的视图修改表内某一客户的姓名。 update cus_SH set cust_name = '王子' where cust_name = '王' (5)有两个基本表employee和sales,创建一个视图,该视图包含相同业务员的编号、姓名、订单号、销售总金额。 create view emp_sale as select emp_no, emp_name, order_no, tot_amt from employee, sales where emp_no = sale_id (6)给题(5)建立的视图添加一条记录数据。 insert into emp_sale values ('E1000', '肖萧', '1009', '900.00') --视图或函数 'emp_sale' 不可更新,因为修改会影响多个基表。 (7)将题(5)建立的视图中订单号为1001的记录的销售总金额改为60000。 update emp_sale set tot_amt = 60000 where order_no = '1001' (8)删除题5建立的视图。 drop view emp_sale; 2.数据库的安全性控制

数据库的安全性实验报告

西安邮电大学 (计算机学院) 课内实验报告 实验:数据库的安全性实验 课程:数据库原理及应用B 班级:网络1203 学号: 学生姓名: 任课教师:孟彩霞

一、实验目的 (1)理解SQL Server验证用户身份的过程,掌握设置身份验证模式的方法(2)理解登录帐号的概念,掌握混合认证模式下登录帐号的建立与取消方法 (3)掌握混合认证模式下数据库用户的建立与取消方法 (4)掌握数据库用户权限的设置方法 (5)理解角色的概念,掌握管理角色技术 二、实验内容 (1)在企业管理器中打开“SQL Server属性(配置)”对话框,设置身份验证模式为“SQL Server”和“Windows”模式(即混合模式)。 (2)创建、管理数据库服务器的登录账号。 (3)创建、管理数据库用户。 (4)管理用户权限。 (5)创建、管理数据库角色。 三、实验环境 Windows7 SQL SERVER 2012 四、实验前准备 课本 上机使用代码 五、实验步骤 1.在企业管理器中打开“SQL Server属性(配置)”对话框,设置身份验证模式为“SQL Server”和“Windows”模式(即混合模式)。 2.创建、管理数据库服务器的登录账号。用T-SQL语句创建、查看、删除登录账号。 创建一个名为Student、密码为111、使用的默认数据库为JWGL的登录账号。 EXEC sp_addlogin ‘student’,’111’,’JWGL’查看登录账号EXEC sp_helplogins 删除登录账号为EXEC sp_droplogins ‘student’ 3.创建、管理数据库用户。 用T-SQL语句创建、查看、删除数据库用户。 为数据库JWGL创建一个用户user1,该用户登录SQL Server服务器的账号为wang,登录密码为secret,相应的程序代码为: EXEC sp_addlogin ‘wang’, ‘secret’, ‘JWGL’ GO EXEC sp_grantdbaccess ‘wang’, ‘user1’查看数据库用户为EXEC sp_helpuser 删除数据库中的“wang”用户为EXEC sp_revokedbaccess ‘wang’ 4.管理用户权限。 使用T-SQL语句完成第3章习题12中(1)~(3)的用户管理和用户权限管理。企业管理器: (1)允许用户李明对Orders表进行插入、删除操作。 GRANT INSERT ,DELETE ON Orders TO ‘李明’

实验六 访问数据库

实验六访问数据库 一、实验目的 1、熟悉通过嵌入式SQL(主语言为C++语言)编程访问数据库,及掌握游 标的使用方法 2、熟悉通过ODBC接口访问异构数据库并对异构数据库进行操作 3、学会配置ODBC数据源 4、学会各种数据库的访问方法 二、实验要求 1、编写一个嵌入式C++程序,实现对SQL Server2005数据库中的“学生课 程数据库”的Student表中的年龄进行更新,即系统每输出一个学生记录,询问用户是否更新。如果要更新,就输入新的年龄。要求:提交源程序并标识必要的注释。 答:create table provider ( Sno char(5)primary key, Sname char(20)not null, Ssex char(4), Sage int ); insert into provider values('S1','李刚',’男’,20); insert into provider values('S2','李红',’男’,21); insert into provider values('S3','李飞',’男’,25); insert into provider values('S4','李春',’男’,21); #include #include #include #include #include #include #include #include EXEC SQL BEGIN DECLARE SECTION; char deptname[20]; char HSno[9]; char HSname[20]; char HSsex[2]; int HSage; int NEWAGE;

数据库实验6数据库系统设计

实验报告 学院:计信学院专业:网络工程班级:091 姓名学号实验组实验时间2012-6-1 指导教师成绩实验项目名称实验六:数据库系统设计实 验目的 要求掌握数据库设计的基本技术,熟悉数据库设计的每个步骤中的任务和实施方法,并加深对数据库系统概念和特点的理解。 实 验 要 求 本实验属于设计型实验,通过实验,加强对课堂讲授知识的理解。 实验原理 必须按照数据库设计的四个阶段进行:需求分析(分析用户要求)、概念设计(信息分析和定义)、逻辑设计(设计实现)和物理设计(物理数据库设计)。概念模型设计时采用自底向上的方法,即自顶向下的进行需求分析,然后再自底向上地设计概念结构,和自底向上的设计方法;概念模型必须用E-R图进行表示。在逻辑设计阶段,将E-R图转换成关系模式,然后进行关系模式的规范化。在物理设计阶段,将关系模式转化成SQL Server中的具体的数据库表,并建立表间的关系,表的索引,及相关的约束。 实 验仪器(1)硬件条件:个人计算机。 (2)软件条件:Windows 2000NT Server; MS SQL Server 2000。 实验步骤1、完成系统需求分析报告 在系统需求分析报告中包括采用的设计方法、数据流图和数据字典。 2、完成数据库信息要求和关系数据模型设计 使用E-R图表示对数据库中要存储的信息及语义进行详细描述,对数据约束和数据之间的关联进行

详细描述。详细描述系统需要的基本表及属性、视图和索引,对基本表的主码、候选码、外码及被参照表进行说明,对基本表中数据的约束条件进行说明。 3、完成数据库的操作和应用要求报告 在数据库的操作和应用要求报告中,详细描述数据库的数据操作要求、处理方法和处理流程,画出系统功能模块图。 4、在机器上完成整个数据库的设计。 实 验内容 要求根据周围的实际情况,自选一个自己熟悉的小型数据库应用项目,并深入到应用项目的现实世界中,进行系统分析和数据库设计。例如选择学籍管理系统、图书管理系统、材料管理系统或仓库管理系统等。 实验数据我设计的是车站售票管理系统,主要用于车站日常的票务处理。 一、需求分析 车站售票管理系统 员工 管理 模块 汽车 管理 模块 线路 管理 模块 车票 管理 模块 票务 信息 管理 模块 员 工 信 息 添 加 员 工 信 息 删 除 员 工 信 息 修 改 汽 车 信 息 添 加 汽 车 信 息 修 改 汽 车 信 息 删 除 线 路 信 息 添 加 线 路 信 息 修 改 线 路 信 息 删 除 添 加 车 票 删 除 车 票 查 询 车 票 信 息 购 买 / 预 订 车 票员 工 信 息 查 询 汽 车 信 息 查 询 线 路 信 息 查 询 车 票 信 息 查 询 功能模块图 1.员工管理模块: 员工有两种身份,售票员和系统管理员。系统管理员可以进行系统用户的添加,密码的修改操作,汽车,线路,车票信息的更新等,售票员可以查询以上信息和购买车票等。 2.线路信息管理模块:

数据库实验报告

数据库实验报告 集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)

课程名称:数据库原理与应用 实验内容:数据库安全性管理 作者所在系部:网络工程系 作者所在专业:网络工程 作者所在班级: B13521 作者姓名:李文阳 作者学号: 指导教师姓名:王振夺 北华航天工业学院教务处制 实验四数据库安全性管理 一、实验目的 1、理解数据库的安全性机制; 2、掌握SQL Server 2005的验证模式、登录管理、用户管理、角色 管理以及权限管理; 二、实验内容 (一)附加上次实验所创建的数据库“db_Library”,并回顾该库的数据表信息。 (二)设置SQL Server的安全验证模式,并以两种方式尝试登录。

(三)登录账户管理 1、以管理员身份登录SQL Server,修改sa的密码。 2、使用SQL语句创建一个SQL Server登录账户,账户名为你的名字拼音,密码自定义。创建完成后,以该账户来进行登录。 3、使用SQL语句来修改上述登录账户的密码。 4、禁用上述登录账户连接SQL Server,并进行验证。 (四)数据库用户管理 1、使用SQL语句添加db_Library数据库用户User2,其登录账户为上题所创建的SQL Server登录账户,使用默认dbo架构,并赋予该用户能够运行Select语句的权限。 (五)权限管理 1、使用SSMS将创建数据表和创建视图的权限授予User2。 2、使用SQL语句将对db_Library数据库中图书信息表的查询、插入、以及对书名和作者列的修改权限授予用户User2。 3、使用SSMS收回User2创建数据表和创建视图的权限。 4、使用SQL语句收回User2修改书名和作者列的权限。 (六)删除上述所建立的数据库用户以及登录账户。 三、实验步骤 主要实现的SQL语句。 使用T-SQL语句创建一个SQL Server登录账户,账户名为你的名字拼音,密码自定义。创建完成后,以该账户来进行登录。

数据库安全性与完整性实验

数据库原理及应用 实验报告 题目:数据库安全性与完整性实验 专业:网络工程 班级: 学号: 姓名: 太原工业学院计算机工程系 2016年10 月15日一、实验目的与要求 目的: 使学生加深对数据安全性与完整性实验的理解,并掌握SQL Server中有关用户,角色及操作权限的管理方法,熟悉通过SQL语句副i数据进行完整性控制。 要求: 1.数据库的安全性实验,在SQL Server企业管理器中设置SQL server的安全认证模式,实现对SQL server的用户和角色管理,设置和管理数据操作权限。 2.指出用户和角色的区别 二、实验内容 1.设置SQL server的安全认证模式(windows或SQL server和Windows(s)认证模式)、。 2.登陆的管理 创建一个登录用户 3.数据库用户的管理 登录用户只有成为数据库(Database User)后才能访问数据库。每个数据库的用户信息都存放在系统表Sysusers中,通过查看Sysusers表可以看到该数据库所有用户的情况。SQL Server的数据库中都有两个默认用户:dbo(数据库拥有者用户)和(dba)。通过系统存储过程或企业管理器可以创建新的数据库用户。 4.角色的管理 创建一个角色,使创建的用户成为该角色的成员,并授予一定的操作权限。 5.在学生表中定义主键、外键约束 6.在课程表的“课程名”字段上定义唯一约束 7.在选课表的“成绩”字段上定义check约束,使之必须大于等于0且小于等于100. “课程号”字段只能输入数字字符 8.定义规则,并绑定到学生表的“性别”字段,使之只能取“男、女”值 9.在学生表中增加出生年月字段,定义缺省,并绑定到学生表的出生日期上,使之只能取当前日期。

数据库实验报告六_存储过程

HUNAN UNIVERSITY 数据库 实验报告 学生姓名 学生学号 专业班级 指导老师 2017 年5月24日

SELECT COUNT(*)INTO more90 FROM sc WHERE cno = countcno AND grade >= 90; /*将结果存入新表sumScore中*/ create table sumScore( scorestage char(10), number smallint); insert into sumScore values('x<60', less60); insert into sumScore values('60<=x<70', b60a70); insert into sumScore values('70<=x<80', b70a80); insert into sumScore values('80<=x<90', b80a90); insert into sumScore values('x>=90', more90); END$$ call sumScore(); /*调用上述存储过程*/ 首先创建存储过程,然后再调用存储过程。结果如下: (上述结果图截自Navicat软件) 可以看到,在stuinfo中新建了一个基本表sumscore,表中内容是数学课程成绩的各分数段的人数。 2、统计任意一门课的平均成绩。 代码如下: DELIMITER $$ CREATE PROCEDURE `scoreAvg`() BEGIN declare curname char(40) default null; /*临时存放课程名*/ declare curcno char(4) default null; /*临时存放课程号*/ declare curavg float; /*临时存放平均成绩*/ declare mycursor cursor for /*定义游标*/ select cno, cname from course;

云南大学-实验六-数据库完整性报告

云南大学软件学院 实验报告 课程:数据库原理与实用技术实验任课教师:刘宇、张璇 姓名:学号:专业:信息安全成绩: 实验6 数据库完整性 实验6-1 完整性约束 1、创建规则(用图形或者语句方法创建) (1)创建入学日期规则“Enter_University_date_rule”,假定该学校于1923年4月30日创建。要求:入学日期必须大于等于学校创建日期,并且小于等于当前日期 测试: (2)创建学生年龄规则“Age_rule”。要求:学生年龄必须在15~30岁之间

测试: (3)创建学生性别规则“Sex_rule”。要求:性别只能为“男”或“女” 测试:

(4)创建学生成绩规则“Score_rule”。要求:学生成绩只能在0~100之间 (5)用图形方法查看学生成绩规则“Score_rule”,截图为: 双击:成绩: (6)用语句方法查看学生成绩规则“Score_rule”,语句为:

2、删除规则Enter_University_date_rule 3、创建默认(用图形或者语句方法创建) (1)创建默认时间“Time_default”为当前系统时间 (2)创建默认入学年龄“Age_default”为18岁 (3)用图形方法查看默认入学年龄“Age_default”,截图为:

(4)用语句方法查看默认入学年龄“Age_default”,语句为: 4、删除默认入学年龄“Age_default” 5、创建声明式默认:在创建表的过程中创建声明式默认 (1)创建表“default_example”,表中包含字段pid、name、sex、age。要求设定sex的默认值为“男”、age的默认值为18。 编号姓名性别年龄 101 苏晴女 201 马拯山20 执行结果为: 输入数据:

数据库实验七实验报告

一.实验目的 熟练掌握SQL Server中变量、数据类型和表达式的定义和使用,掌握Transact—SQL中常用系统函数的使用,掌握流程控制语句和结构化程序设计方法,掌握分行处理表中记录机制以及利用游标对数据进行查询、修改和删除的方法。 二.实验准备 1.物理准备:安装了SQL sever的计算机一台,连接服务器;2.实验指导书:《数据库技术与应用》蓝皮书; 3.理论准备:掌握以下基础知识: (1)T ransact—SQL中变量、数据类型和表达式的使用。 (2)T ransact—SQL中常用系统函数的使用。 (3)利用程序控制语句实现结构化程序设计。 (4)利用游标分行处理机制实现数据的定位、查询、修改和删除三.实验题目 (1)定义局部变量@max,@min接收学生表studinfo中的最大出生日期和最小出生日期的查询结果。 实验过程:编写Transact—SQL语句 declare @max char(30),@min char(30) select @max=max(出生日期) , @min=min(出生日期) from student_xuesheng select @max as 最大,@min as 最小 运行结果:

(2)在学生表studinfo中增加一个字段,利用系统函数与出生日期信息计算每个同学的年龄。 实验过程:编写Transact—SQL语句 分析:先增加年龄字段,再将函数运算之后的年龄添加进去 --alter table student_xuesheng --add 年龄 int --GO if exists(select 出生日期 from student_xuesheng where 出生日期 is not null) begin update student_xuesheng set 年龄=year(getdate())-year(出生日期) end 运行结果:

数据库安全性实验

实验6:RDBMS的数据库安全性实验 【实验目的】 1.掌握user的创建与授权(all,select,update和delete等) 2.掌握收回权限 3.熟悉级联授权与级联收回 【实验条件】 1. 具有2台PC,接入LAN网络,1台作为数据库服务器,1台客户机。 2. 服务器端装有MySQL,防火墙允许3306端口,root密码可以远程访问。 【实验过程】 1. 创建账户并授权。 登录root账户后,创建user,5个账户,分别是mag、student1、student2、teacher1和teacher2。>>对mag的创建与授权。 命令:Grant <权限> to [identified by ‘密码’] [ with grant option] 说明:主机可以用本机表示方法:localhost或ip地址127.0.0.1,也可以用IP地址表示LAN 内的主机IP或wan内的主机IP 第一步:创建mag grant all on sc.* to 'mag'@'localhost' IDENTIFIED by 'Abc123' 说明:grant是授权命令的关键字,all是权限(指所有权限,可以换成其他的权限),on sc.*说明授权操作对象是sc数据库的所有内容(所有表,所有视图等),to mag@localhost说明授权给localhost主机上的mag用户(如果mag不存在,则创建mag,如果存在则直接授权给该用户),identified by ‘Abc123’设置mag用户的密码为后面的字符串。 第二步:查看https://www.360docs.net/doc/b36925853.html,er表

数据库系统应用与开发--实验六

实验JDBC进阶(2) 一、相关知识点 1、JDBC基本概念 2、视图、索引 二、实验目的: 理解视图和索引的概念,并通过视图设计简化程序设计,通过索引设计优化查询性能 三、实验容: 1、设计读者视图view_reader,并修改readerManager类中相关代码。 第一步:通过查询分析器建立读者视图,要求视图中包含读者类别名称; 第二步:改造ReaderManager类,将其中的连接查询用视图代替。 第三步:运行图书管理系统,进行各个功能的测试(读者类别管理、读者管理)【实验结果与分析】 A、写出视图创建代码。 create view view_reader as select readerid,readerName,r.readerTypeId,r.lendBookLimitted,createDate,creatorUserId,stopDate,s topUserId,rt.readerTypeName,r.removeDate from BeanReader r,BeanReaderType rt where r.readerTypeId=rt.readerTypeId B、给出改造后ReaderManager类的各个方法的代码。 String sql="select *" + " from view_reader where removeDate is null " + " and removeDate is null "; String sql="select *" + " from view_reader where readerid=?";

2、设计图书视图view_book,并修改BookManager类中相关代码。 第一步:通过查询分析器建立图书视图,要求视图中包含名称; 第二步:改造BookManager类,将其中的连接查询用视图代替。 第三步:运行图书管理系统,进行各个功能的测试 【实验结果与分析】 A、写出视图创建代码。 create view view_book as select b.barcode,b.bookname,b.pubid,b.price,b.state,p.publishername from beanbook b,beanpublisher p where b.pubid=p.pubid B、给出改造后ReaderManager类的各个方法的代码。 public class BookManager { public List searchBook(String keyword,String bookState)throws BaseException{ List result=new ArrayList(); Connection conn=null; try { conn=DBUtil.getConnection(); //改动处 String sql="select *" +

6实验六-数据库完整性

实验报告书 课程名《数据库原理与应用A 》题目:数据库完整性 班级: 学号: 姓名:

1、实验内容或题目 数据库完整性 2、实验目的与要求 (1)掌握sql server 2005 数据库完整性的机理,理解并掌握约束。 (2)进行实验操作。 3、实验步骤与源程序 ⑴实验步骤 掌握Sql server 2005基本语句的使用,主要是PRIMARY KEY约束、FOREIGN KEY约束、UNIQUE 约束、CHECK约束、NOT NULL。 练习Sql server 2005基本语句的使用。 完成实验报告。 ⑵编写源代码 SQLQuery1(例13.1,在test数据库中创建department表,其中指定dno为主键): use test go create table department ( dno int primary key, dname char(20), ) go SQLQuery2(例13.2,使用FOREIGN KEY子句进行相关操作): use test go create table worker (no int primary key, name char(8), sex char(2), dno int foreign key references department(dno) on delete no action, address char(30) )

go SQLQuery3(例13.3,在test数据库中创建table5表,其中指定c1列不能包含重复的值): use test go create table table5 ( c1 int unique, c2 int ) go insert table5 values(1,100) go /*插入下一行,则会出现错误消息*/ insert table5 values(1,200) SQLQuery4(例13.4,在test数据库中创建table6表,其中使用CHECK约束限定f2列为0-100分): use test go create table table6 ( f1 int, f2 int not null check(f2>=0 and f2<=100) ) go /*插入下一行,则会出现错误消息*/ insert table6 values(1,120) SQLQuery5(例13.5,在test数据库中创建table7表,其主键为c1和c2,将其中插入两个记录,输出这些记录): use test go create table table7 ( c1 int, c2 int, c3 char(5), c4 char(10), constraint c1 primary key(c1,c2) ) go use test insert table7 values(1,2,'ABC1','XYZ1') insert table7 values(1,2,'ABC2','XYZ2') go select*from table7 go

相关文档
最新文档