数据库实验六

合集下载

数据库实验六-综合实验

数据库实验六-综合实验

实验六数据库原理综合实验1实验目的(1)运用所学的数据库设计技术,针对一个具体的应用系统,完成系统数据库的概念模型、逻辑模型和物理模型的设计。

以巩固理论课程上所学的知识,更好地掌握数据库设计技术方法。

(2)对前面章节所学的知识加以综合应用。

2实验内容给定一个应用环境,如学生选课系统、超市管理系统、某企业库存管理系统、学校图书管理系统、学校综合积分管理系统等等。

(同学们课从上述选定一个题目,也可以选取一个自己较熟悉的应用环境)。

完成下面的工作2.1 数据库概念模型设计(1)进行需求分析。

-对系统的语义进行描述(包括功能、所需的数据及他们之间的关系和处理方法)(2)识别系统中的实体及实体的属性,分析实体之间的联系。

(3)设计数据库概念模型,画出E-R图。

2.2 数据库逻辑模型设计(1)根据数据库概念模型设计数据库的逻辑模型。

-将E-R模型转化到逻辑模型(2)根据应用需要和规范化理论对逻辑模型进行优化。

2.3 数据库物理模型设计(1)针对某种DBMS,设计数据库物理模型,包括表空间、表和索引等于物理存储有关的设计。

(2)优化物理模型(3)生成某种DBMS的SQL语句,创建数据库及其表。

2.4 装载数据(1)收集真实数据或者生成模拟数据。

(2)批量加载数据到数据库中。

(3)设计一系列SQL语句,尤其是连接查询、嵌套查询等SQL语句,已测试数据库性能。

3实验要求(1)可以借助POWERDESIGNER等系统分析与设计辅助工具进行数据库设计,也可以使用WORD文件直接生成各种设计文档。

(2)选择的数据库应用系统应该规模适中,不宜太大太复杂,可能做不完;也不宜太小太简单,甚至仅有三两个表组成。

(3)要设计良好的数据库完整性约束。

(4)思考题:数据库设计通常由哪些辅助工具?各有哪些优缺点?4实验步骤4.1 数据库概念模型设计(1)进行需求分析。

(2)设计数据库概念模型,画出E-R图。

4.2 数据库逻辑模型设计(3)根据数据库概念模型设计数据库的逻辑模型。

数据库技术实验六

数据库技术实验六

课程名称数据库技术实验成绩实验名称存储过程和触发器的使用学号XX 班级日期实验目的:1.掌握存储过程的使用方法;2.掌握触发器的实现方法;实验平台:利用RDBMS(SQL Server 2008)与其交互查询工具(查询分析器)来操作T-SQL语言;实验内容:1.存储过程(1)创建存储过程,要求当一个员工的工作年份大于6年时将其转到经理办公室工作。

alterprocedure yuangong_infolEmployeeID char(6),name nchar(20)asbegindeclare year intset year=(select WorkYearfrom Employeeswhere EmployeeID=EmployeeID)declare DepartmentID char(3)set DepartmentID=(select DepartmentIDfrom Departmentswhere DepartmentName=name)if (year>6)update Employeesset DepartmentID=DepartmentIDwhere EmployeeID=EmployeeIDEndexec dbo.yuangong_infol'000000','经理办公室'(2)创建存储过程,根据每个员工的学历将收入提高500元。

alterproc SA_INenu char(6)asbeginupdate Salaryset InCome=InCome+500from Salary,Employeeswhere Employees.EmployeeID=Salary.EmployeeID and Education=enuendselect InComefrom Salary,Employeeswhere Salary.EmployeeID=Employees.EmployeeID and Education='本科'goexec dbo.sa_in'本科'goselect InComefrom Salary,Employeeswhere Salary.EmployeeID=Employees.EmployeeID and Education='本科'select InComefrom Salary,Employeeswhere Salary.EmployeeID=Employees.EmployeeID and Education='本科'(3)创建存储过程,使用游标计算本科与以上学历的员工在总员工数中的比例。

数据库原理与应用实验6(二版)

数据库原理与应用实验6(二版)

数据库原理与应用实验6(二版)实验六 T-SQL数据库单表查询一、实验目的及要求本实验主要目的是让学生通过本实验掌握基于一个表的SELECT语句的使用语法及使用规则,并能运用各种常用的查询方式及其形式。

●掌握SELECT语句的基本语法结构。

●掌握SQL语句中基于一个表的SELECT语句的使用规则和方式。

●能正确设置各种常用查询条件。

●掌握分组汇总查询的使用。

●要求学生不但写出语句,而且要执行语句,得到结果。

二、实验原理及背景知识1、了解SQL中SELECT语句的基本使用方式。

详情参考第一篇第三章。

2、理解关系代数中投影运算和选择运算的概念及原理。

简单来讲,SELECT实现的是投影,where实现选择运算。

3、实验前需要了解所使用的数据库中表的结构。

4、实验前需要在stuManag数据库中输入模拟数据。

三、实验内容及步骤Ⅰ:基本实验内容(一)输入下面的查询语句,执行后验证实验结果1、查询100165专业的学生的学号、姓名、性别和出生年月信息SELECT sno,sname,ssex,sbirthFROM studentWHERE mno=‘100165’2、查询职称不是教授的所有教师的全部信息SELECT *FROM teacherWHERE trank< >‘教授’3、查询不姓陈的学生学号和姓名信息SELECT sno,snameFROM studentWHERE sname NOT LIKE ‘陈%’4、查询100165专业中1991年之前出生的学生的学号、姓名、性别及出生年月信息SELECT sno,sname,ssex,sbirthFROM studentWHERE (mno=‘100165’) AND (sbirth <‘1991/01/01’)5、查询所有学生的序号、姓名及年龄信息,其中年龄由出生年月转换得到SELECT sno,sname,CAST((GETDATE()-sbirth)AS int)/365 AS ‘年龄’FROM student6、查询所有学生的学号、姓名、性别及出生年月信息,按照专业号升序、出生年月降序排列SELECT sno,sname,Ssex,sbirth,mnoFROM studentORDER BY mno,sbirth DESC7、查询091650102同学的所有课程的平均分、最高分和最低分SELECT AVG(grade) AS 平均分,MAX(grade) AS 最高分,MIN(grade) AS 最低分FROM skcWHERE sno=‘091650102’(二)输入下面查询语句,然后运行,根据结果思考并记录其功能1、SELECT *FROM skcWHERE Grade between 80 and 85功能:_________________________________________________2、SELECT count(*) as ‘0916501班人数’FROM studentWHERE sno like ‘0916501%’功能:_________________________________________________3、SELECT COUNT(*) AS ‘信管专业女学生人数‘FROM studentWHERE mno=‘100165’ AND ssex=‘女’功能:_________________________________________________4、SELECT DISTINCT SUBSTRING(sname,1,1)FROM student功能:_________________________________________________5、SELECT sno,sname,ssex,mnoFROM studentWHERE mno IN (‘100165’,’201148’,’100838’)功能:_________________________________________________6、SELECT sno,snameFROM studentWHERE sname LIKE ‘[陈李]%’功能:_________________________________________________7、SELECT kno,avg(Grade ) as ‘平均分’from skcWHERE sno like ‘09165%’GROUP BY kno功能:_________________________________________________(三)阅读并分析下面查询语句,根据其功能,补全语句之后进行验证1、查询0916502班超过5人选修的课程选修人数及平均分。

数据库实验报告(7个实验完整附截图)

数据库实验报告(7个实验完整附截图)

福建农林大学计算机与信息学院实验报告课程名称:数据库原理及应用姓名:系:计算机科学与技术专业:计算机科学与技术年级:2012 级学号:指导教师:***2014 年5月18 日实验项目列表实验一:数据库的定义实验一、实验目的:1、理解MySQL Server 6.0 服务器的安装过程和方法;2、要求学生熟练掌握和使用SQL、T-SQL、SQL Server Enterpriser Manager Server 创建数据库、表、索引和修改表结构,并学会使用SQL Server Query Analyzer,接收T-SQL 语句和进行结果分析。

二、实验环境:硬件:PC机软件:Windows操作系统、MySQL Server 6.0 和Navicat for MySQL 9.0三、实验内容和原理:1、安装MySQL以及相应的GUI工具2、用SQL命令,建立学生-课程数据库基本表:学生Student(学号Sno,姓名Sname,年龄Sage,性别Ssex,所在系Sdept);课程Course(课程号Cno,课程名Cname,先行课Cpno,学分Ccredit);选课SC(学号Sno,课程号Cno,成绩Grade);要求:1) 用SQL命令建库、建表和建立表间联系。

2) 选择合适的数据类型。

3) 定义必要的索引、列级约束和表级约束.四、实验步骤:1、运行Navicat for MySQL,然后进行数据库连接,进入到GUI界面;2、利用图形界面建立基础表:student 表的信息:course表的信息:sc表的信息:字段名类型长度约束条件Sno varchar9非空、主键、与student表中Sno外键关联,级联删除Cno varchar 4Grade smallint6非空、主键、与course表中Cno外键关联(1)连接数据库,在 localhost 中点击鼠标右键(如图1所示),点击“新建数据库”,在弹出的窗口中输入数据库名称(如图2所示),然后单击“确定”,就完成了数据库的建立。

数据库实验六报告

数据库实验六报告

实验项目SQL Server 2000中数据库完整性约束触发器设置所属课程数据库原理实验目的1)熟悉通过SQL对数据进行完整性约束触发器控制。

2)完成作业的上机练习。

实验环境SQL Server 2000 window XP实验内容要求:在SQLSERVER2000中利用SQL语句完成以下操作。

1)通过SQL对表建立完整性约束。

2)通过SQL创建插入触发器。

3)通过SQL创建删除触发器。

4)通过SQL创建更新触发器实验过程1)复制生成xscj数据库的代码并运行。

2)为student表的年龄字段增加名为Checkage约束条件,限制年龄介于15到25之间。

3)为student表建立触发器Sinsert,如果student表中插入一条记录,则取消插入并提示错误。

4)为student表建立触发器Smodi,如果student表中某一学生年龄加1,则SC表中该学生的各门成绩都加15)为student表建立触发器Sdel,如果student表中某一学生删除,则SC表中该学生记录也删除。

实验结果及分析1.首先打开SQL查询分析器,复制生成xscj数据库的代码并运行实验操作步骤通过SQL Server 2000软件运行后所得截图如下:2:新建约束条件checkage:3:测试sinsert触发器:4.建立触发器Smodi:运行smodi触发器,当学好为2002151121的学生的年龄加一,sc表中,该同学的成绩加1.5:创建触发器sdel:运行sdel触发器,如图,删除学号为2002151121的在student表中的学生记录,相应的SC表中的记录也删除了。

实验心得总结通过这次的实验,我熟悉掌握了通过SQL对表建立完整性约束,了解了创建插入触发器,更加深入地学习了数据库的一些知识,充分地运用SQL软件的功能。

在为student表建立触发器Sdel,如果student表中某一学生删除,则SC表中该学生记录也删除的过程中存在着很多困难,多次运行失败,我通过查询资料以及翻阅课本知识,深入了解触发器的一些知识,对问题有了一些头绪,能够运行成功,基本解决的这个问题。

数据库 实验报告(实验六)

数据库 实验报告(实验六)

沈阳工程学院学生实验报告(课程名称:数据库原理及应用)实验题目:数据库设计班级软件本111 学号2011417104姓名吴月芬日期2012-11-27地点F606 指导教师孙宪丽祝世东一、实验目的利用PowerDesigner,熟练掌握数据库设计的步骤和方法。

二、实验环境安装能进行PowerDesigner操作的微机。

三、实验内容与要求工厂物资管理系统数据库中涉及到仓库、零件、供应商、项目和职工信息存储。

具体如下:(1)仓库包含属性仓库号、面积、电话号码,本实验涉及的属性数据类型和长度自己确定。

(2)零件包含属性零件号、名称、规格、单价、描述。

(3)供应商包含属性供应商号、姓名、地址、电话号码、帐号。

(4)项目包含属性项目号、预算、开工日期。

(5)职工包含属性职工号、姓名、年龄、职称。

在工厂物资管理系统中一个仓库可以存放多种零件,一种零件可以存放在多个仓库中,用库存量来表示某种零件在某个仓库中的数量;一个仓库有多个职工当仓库保管员,一个职工只能在一个仓库工作;职工之间具有领导-被领导关系,即仓库主任领导若干保管员;一个供应商可以供给多个项目多种零件,每个项目可以使用多个供应商供应的零件,每种零件可由不同供应商供给,同时记录某个供应商供给某个项目的零件数量。

进行此工厂物资管理系统的数据库设计。

具体要求:(1)在CDM工作区中设计出给定的概念模型,检查合理性。

(2)自动产生物理模型,检查是否正确。

(3)自动产生数据库中的表。

四、实验过程及结果分析1.进入PowerDesigner2.选择“Welcome to PowerDesigner”窗口中的“Create Model”选项或选择“File”/“New”,或单击,打开“New Model”窗口,点击“Model types”,选择“Conceptual Data Model”。

3.单击“OK”,进入CDM工作区。

4.添加实体,设置属性.同样的方法完成其他的实体的建立。

数据库实验报告(6)

数据库实验报告(6)

数据库实验报告(6)一实验题目1.存储过程的定义和使用2。

触发器的创建和使用二实验目的1.掌握存储过程的定义、执行和调用方法。

2.掌握触发器的创建和使用。

三实验内容1.存储过程的定义和使用(1)创建存储过程查找姓李的学生的选修课成绩信息。

(2)创建一个存储过程,计算每个学生选修课的总分,并显示得分最高的三名学生的分数。

(3)创建一个存储过程以查找课程的最高分数(带有输入参数的存储过程)。

(4)创建一个存储过程来计算同学的平均分数并返回统计结果。

(带输入和输出参数的存储过程)(5)创建一个存储过程,计算选修课的数量,然后返回数字。

(6)用存储过程统计选修课,用存储值最多的学生。

(存储过程的嵌套)2.触发器的创建与使用(1)如果学分大于5,在为表格C插入新课程信息时,定义行前级别的触发学分uu触发器分,自动修改为5分。

(2)定义行后级别触发器。

当SC表的等级发生变化时,它将自动出现在等级变化表SC_uu增加日志中加一条新的纪录,该新纪录包括:操作者名称、操作日期、操作类型。

(3)建立一个delete触发器,针对于sc表,每次只能删除一条信息。

(4)创建不允许用户更改学号的更新触发器。

如果学生号被更改,将给出提示信息:学生号不允许更改。

(5)执行相应的SQL语句来触发上面定义的触发器。

(6)删除触发信用触发四实验步骤1.存储过程的定义和格式:createproc[edure]procedure_name[;number][{@parameterdata_type}[变化][=默认值][输出][with[用于复制]assql_statement[...n]创建存储过程以查找姓李的学生的选修课分数信息。

(1)创建存储过程,统计每个学生的选修课的总成绩,显示成绩最好的前3名学生成绩。

SC表的基本信息如图1所示:图表1代码:createprocp_sumscoreas从SCGroupByNo中选择Top 3Sum(成绩)作为总分execp_sumscore运行结果:命令已成功完成。

实验六答案数据库综合查询[精品文档]

实验六答案数据库综合查询[精品文档]

1、查询以‘DB_’开头,且倒数第三个字符为‘s’的课程的详细情况select*from coursewhere cname like'DB\_%s__'2、查询名字中第二个字为“阳”的学生姓名和学号及选修的课程号、课程名select student.sno,student.sname,o,cnamefrom student,course,scwhere sname like'_阳%'and student.sno=sc.sno and o=o 3、列出选修了‘数学’或‘大学英语’的学生学号、姓名、select student.sno,sname,sdept,o,cname,gradefrom student,sc,coursewhere student.sno=sc.sno and o=o andsc.sno in(select sc.sno from sc,course where (cname='大学英语'or cname='数学')and o=ogroup by sc.sno)select student.sno,sname,sdept,cno,gradefrom student,scwhere Cno in(select Cno from coursewhere cname='数学'or cname='大学英语')and sc.sno=student.sno4、查询缺少成绩的所有学生的详细情况;select*from student,scwhere Grade is null and student.sno=sc.sno5、查询与‘张力’(假设姓名唯一)年龄不同的所有学生的信息;select*from studentwhere sage<>(select sagefrom studentwhere sname='张力')6、查询所选课程的平均成绩大于张力的平均成绩的学生学号、姓名及平均成绩select student.sno,sname,平均成绩=AVG(grade)from student,scwhere student.sno=sc.snogroup by student.sno,snamehaving AVG(Grade)>(select AVG(Grade)from sc,student where sname='张力'and student.sno=sc.sno)7、按照“学号,姓名,所在院系,已修学分”的顺序列出学生学分的获得情况。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

6 综合型实验项目索引和数据完整性
匹配课程代码及名称:070785,数据库应用设计
适用专业及本项目实验学时:计算机科学与技术专升本,6学时
一、实验目的及要求
(1)掌握索引的使用方法;
(2)掌握索引的设计与实现方法。

(3)掌握数据完整性的类型;
(4)掌握数据完整性的实现方法。

二、实验内容
在已建好的YGGL数据库中,设计并创建索引,并进行索引的重建、删除操作。

提交程序源代码(电子版,1周内)和实验报告(纸制、1周内)。

三、实验条件及设备要求
已安装SQL Server 2008数据库管理系统的实验机。

四、实验相关知识点
数据库实体完整性、索引。

五、实验实施步骤
(一)建立索引
1、对YGGL数据库的Employees表中的DepartmentID列建立索引。

createindex depart_ind
on Employees(DepartmentID)
2、在Employees表的Name列和Address列上建立复合索引。

create index ad_ind on Employees(Name,Address)
3、对Departments表上的DepartmentName列建立唯一非聚集索引。

go
create unique index dep_ind on Departments(DepartmentName) go
(二)重建索引
1、重建表Employees中的所有索引。

alter index all on Employees rebuild
(三)删除索引。

1、使用DROP INDEX语句删除表Employees上的索引Depart_ind。

drop index Depart_ind on Employees
2、使用DROP INDEX一次删除Employees表上的多个索引。

go
drop index Departments.Dep_ind,Employees.Ad_ind
go
(四)数据完整性操作
1、创建一个表Employees5,只含EmployeesID,Name,Sex和Education列。

将Name,设为主键,作为列Name的约束。

对EmployeesID列进行UNIQUE约束,并作为表的约束。

create table Employees5(
EmployeesID char(6)not null,
Name char(10)not null primary key,
Sex tinyint,
Education char(4),
constraint UK_id unique(EmployeesID)
)
2、删除上题中创建的UNIQUE约束。

alter table Employees5
drop constraint UK_id
3、使用T-SQL命令创建一个新表,使用一个复合列作为主键,作为表的约束,并为其命名。

create table Employees7
(
EmployeeID char(6)not null,
Name char(10)not null,
Education char(4)not null,
Birthday date not null,
Sex bit not null default 1,
WorkYear tinyint null,
Address varchar(40)null,
PhoneNumber char(12)null,
DepartmentID char(3)not null,
primary key (EmployeeID,DepartmentID),
constraint ED_UK unique(EmployeeID,DepartmentID)
)
4、使用语句为表ALTER TABLEEmployees5添加一个新列Address,并为该列定义UNIQUE约束,并了解如何使用图形向导方式删除主键和UNIOQUE约束。

alter table Employees5
add Address varchar(40),
constraint AD_UK unique (Address)
5、创建新表student,只考虑“号码”和“性别”两列,性别只能包含男或女。

向该表插入数据,“性别”列插入“男”和“女”以外的字符,查看会发生什么情况。

create table student(
号码char(6)not null,
性别char(2)check(性别='男'or性别='女')
)
6、创建新表Salary2,结构与Salary相同,但Salary2表不可以OutCome列大于Income列。

向表中插入数据,查看OUTCOME值比INCOME值大是会有什么情况。

create table Salary2
(EmployeeID char(6)not null,
InCome float not null,
OutCome float not null,
check(InCome>=OutCome)
)
7、创建一个表Employees6,只考虑“学号”和“出生日期”两列,出生日期必须晚于1980年1月1日。

create table Employees6
(
学号char(6)not null,
出生日期date not null check(出生日期>'1980-01-01'),
)
8、对YGGL数据库中的Employees表进行修改,为其增加“DepartmentID”字段的CHECK约束。

约束条件为DepartmentID值应大于等于1且小于等于5。

测试CHECK约束的有效性。

alter table Employees
add constraint depart check(DepartmentID>=1 and DepartmentID<=5)
9、创建一个表Salary3,要求所有Salary3表上EmployeeID列的值都要出现在Salary表中,利用参照完整性约束实现,要求当删除或修改Salary表上的EmployeeID列时,Salary3表中的EmployeeID值也会随之变化。

create table Salary3
(
EmployeeID char(6)not null primary key,
InCome float not null,
OutCome float(8)not null,
foreign key(EmployeeID)
references Salary(EmployeeID)
on update cascade
on delete cascade
)
六、实验报告要求
1、按照山东女子学院实验报告格式书写。

2、关键部分的内容规范和要求如下:
(一)、实验目的及要求
指导教师给出的实验目的及具体实验要求。

(二)、实验使用的主要设备(含软件系统)
设备:名称、规格型号、数量;
软件:系统、软件名称、版本;
其他实验器材。

(三)、实验操作过程及内容
按照实验步骤写出操作要求,能够实现要求的语句及结果。

(四)、实验结论、问题与建议(含取得的成果)
总结实验过程,记录实验过程中所遇的问题及调试过程、处理方法,简述实验效果,回答实验思考题等。

七、实验成绩评定办法
主要评分点:实验流程、调试过程、解决问题的能力、实验结果、实验效果等。

相关文档
最新文档