数据库实验一到实验七邯院专_第1页
数据库实验一到实验七邯院专_第2页
数据库实验一到实验七邯院专_第3页
数据库实验一到实验七邯院专_第4页
数据库实验一到实验七邯院专_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、邯 郸 学 院实验教学讲稿20132014学年 第一学期分院(系、部):信息工程学院教 研 室:网络工程课 程 名 称:数据库原理授 课 班 级:网络工程2011级本科班主 讲 教 师: 李 娜职 称:讲师使 用 教 材:数据库系统概论邯郸学院制实验1 认识DBMS系统、数据库及数据库表的建立实验一、 实验目的本实验的目的是使学生熟悉SQL Server Management Studio的使用方法,熟悉SQL SERVER的常用数据类型,加深对SQL语言的数据定义语句的理解。熟练掌握数据库及数据库表的创建、修改和删除。二、 实验时数: 2学时三、 实验内容分别使用SQL语言和对象资源管理器完

2、成以下操作:1. 创建数据库创建数据库名为COMPANY1 ,主数据文件的逻辑名称为COMPANY_DATA,操作系统文件的名称为D:MSSQLDATACOMPANY.MDF,大小为20MB,最大为50MB,以25%的速度增长。日志文件的逻辑名称为COMPANY_LOG,操作系统文件的名称为D:MSSQLDATACOMPANY.LDF,大小为3MB,最大为10MB,以1MB的速度增长。Create database company1On primary(name=company1_data,Filename=D:MSSQLDATACOMPANY.MDF,Size=20mb,Maxsize=50

3、mb,Filegrowth=25%)Log on(name=company_log,Filename=D:MSSQLDATACOMPANY.LDF,Size=3mb,Maxsize=10mb,Filegrowth=1mb)2. 修改数据库(1)将数据库COMPANY1的主数据文件的初始分配空间大小扩充到40MB.use company1goalter database company1modify file(name='D:MSSQLDATACOMPANY.MDF',size=40mb)(2) 将数据库COMPANY1改名为COMPANYExec sp_renamedbcomp

4、any1,company3. 创建表在名为COMPANY数据库中创建以下四个表:(1)部门表,表名DEPA列名数据类型描述DNODECIMAL(2)部门编号 DNAMEVARCHAR(16)部门名称ADDRVARCHAR(20)部门地址(2)雇员表,表名EMPL列名数据类型描述ENODECIMAL(4)员工编号 ENAMECHAR(8) 员工姓名BIRTHDATE DATETIME出生日期SALARYDECIMAL(7,2)工资DNODECIMAL(2)所在部门编号 (3)项目表,表名PROJ列名数据类型描述PNODECIMAL(3)项目编号 PNAME VARCHAR(24)项目名称(4)工

5、作表,表名JOB列名数据类型描述ENODECIMAL(4)员工编号 PNODECIMAL(3)项目编号 DAYSINT工作天数use companygocreate table (列名+类型)4. 修改表结构1)修改部门表DEPA,添加一列部门电话,列名Telephone,数据类型VARCHAR(15)。use companygoalter table depaadd Telephone varchar(15) nullgo2) 为项目表PROJ添加Begindate和Enddate列,数据类型为DATETIME。use companygoalter table projadd beginda

6、te datetime nullAdd enddate datetime nullgo3) 删除项目表PROJ中的Enddate列。use companygoalter table projdrop column enddatego5. 删除表1)删除项目表PROJ。drop table proj6、添加记录:1)向DEPA表添加14号部门,客户中心,地址为开发区紫光路2号。use companyinsert into depavalues('14','客户中心',开发区紫光路2号,,null)go2)向DEPA表添加 15号部门,技术支持部,地址未详。use

7、companyinsert into depavalues('15',技术支持部',null,null)go3)向DEPA表添加 13号部门,财务部,地址未详。use companyinsert into depavalues('13','财务部',null,null)go4) 向EMPL表添加1401号员工,张山,出生日期1977年9月1日,工资4050元,14号部门。use companyinsert into emplvalues('1401','张山','1977-9-1','

8、;4050','14')go5)向EMPL表添加1402号员工,何宜,生日不祥,工资不祥,15号部门。use companyinsert into emplvalues('1402','何宜',null,null,'15')go6) 向PROJ表添加103号项目,历史学院档案库管理系统。use companyinsert into projvalues('103','历史学院档案库管理系统')go7) 向PROJ表添加104号项目,ATM机管理系统。use companyinsert int

9、o projvalues('104','ATM机管理系统')go8) 向JOB表添加1401号员工,参与了104号项目35天。use companyinsert into jobvalues('1401','104',35')go9)向JOB表添加1402号员工,参与了103号项目20天。use companyinsert into jobvalues('1402','103','20')go7、修改记录:1)把DEPA表中客户中心的地址改为大连甘井子区红岭路;use com

10、panyupdate depaset ADDR='大连甘井子区红岭路'where DNO=142) 把DEPA表中15号部门的地址用沈阳东郊路120号填充。use companyupdate depaset ADDR=沈阳东郊路120号'where DNO=153) 把EMPL表中何宜的生日、工资用1981年12月20日,3000元填充。use companyupdate emplset BIRTHDATE='1981-12-20',SALARY='3000'where ENAME='何宜'GO4) 把EMPL表中张山的部

11、门号改为15号。use companyupdate emplset DNO='15'where ENAME='张山'GO5) 把JOB表中参与104号项目的每人增加5天。use companyupdate jobset DAYS=DAYS+5where PNO='104'GO6) 把JOB表中参与103号项目的每人天数乘以系数0.8。use companyupdate jobset DAYS=DAYS*0.8where PNO='103'GO8、删除记录:1)删除地址为空的部门。delete from depa where ADD

12、R=null2)删除JOB表中参与104号项目的员工。delete from job where PNO='104'3) 删除JOB表中天数低于25天的员工。delete from job where DAYS<254) 删除生于1980年后,且工资低于4000的员工。5) 删除属于14号部门的员工。delete from empl where DNO=146) 删除15号部门的信息。delete from empl where DNO=159使用对象资源管理器分离和附加数据库COMPANY实验2 数据库的单表查询、分组查询与聚集函数的使用一、 实验目的本实验的目的是使学

13、生熟悉SQL Server Management Studio的使用方法。加深对SQL语言的查询语句的理解。熟练掌握数据库的单表查询(包括投影、选择条件表达,数据排序,模糊查询等), 熟练掌握数据库的分组、统计、计算和集合的操作方法。二、 实验时数 2学时三、 实验内容1.简单的SELECT查询1)查询雇员表Empl中所有员工的详细信息,并且列名用汉字表示。select ENO AS 员工编号,ENAME AS 员工姓名, BIRTHDATE AS 生日,SALARY AS 薪资, DNO AS 部门编号from empl2)查询项目表Proj中所有项目的详细信息,并且列名用汉字表示。sele

14、ct PNAME AS 项目名称, PNO AS 项目编号from proj2.使用WHERE子句进行查询1)查询雇员表Empl中李强的员工编号。use COMPANYselect ENOfrom EMPLwhere ENAME='李强'2)查询项目表Proj中项目编号为“101”的项目名称。use COMPANYselect PNAMEfrom PROJwhere PNO='101'3.使用DISTINCT关键字去掉重复行1)查询雇员表Empl中出现的所有部门编号,要求无重复。use COMPANYselect distinct DNOfrom EMPL2)查

15、询工作表Job中参与过项目开发的所有员工编号,要求无重复。use COMPANYselect distinct ENOfrom JOBwhere PNO is not null4.使用ORDER BY子句对查询结果进行排序1)查询雇员表Empl中所有员工的详细信息,结果按员工姓名降序排列。use COMPANY select ENO AS 员工编号,ENAME AS 员工姓名, BIRTHDATE AS 生日,SALARY AS 薪资from EMPLorder by ENAME desc2)查询工作表Job中的工作信息,结果按工作天数升序排列。use COMPANY select ENO A

16、S 员工编号,PNO AS 项目名称, DAYS as 工作天数from JOBorder by DAYS ASC5.使用LIKE子句进行模糊查询1)查询所有姓王的员工的编号及姓名,并且以员工编号及员工姓名作为列名。use COMPANY select ENO AS 员工编号, ENAME AS 员工姓名from EMPLwhere ENAME like '王_'2)查询雇员表Empl中姓名以“伟”字结尾的员工信息。use COMPANY select ENO AS 员工编号,ENAME AS 员工姓名, BIRTHDATE AS 生日,SALARY AS 薪资from EMP

17、Lwhere ENAME like '%伟'6.使用聚集函数MIN、MAX进行查询1)查询雇员表Empl中员工的最低工资,并且列名用“最低工资”表示。use COMPANY select min(SALARY) AS 最低工资from EMPL2)查询雇员表Empl中员工的最高工资,并且列名用“最高工资”表示。use COMPANY select max(SALARY) AS 最高工资from EMPL7.使用聚集函数COUNT进行查询1)查询雇员表Empl中所有员工的总人数,并且列名用“员工总数”表示。use COMPANY select count(ENAME) AS 员工

18、总人数from EMPL2)查询14号部门的人数,并且列名用“客户中心部人数”表示。use COMPANY select count(DNO) AS 客户中心部人数from EMPLwhere DNO=148.使用分组子句GROUP BY与聚集函数MIN、MAX进行查询1)查询每个部门中年龄最大的员工,显示部门编号和出生日期。use COMPANY select min(BIRTHDATE) as 出生日期, DNO as 部门编号from EMPLgroup by DNO2)分别统计雇员表Empl中各部门员工的最高工资,并且列名分别用“部门编号”及“最高工资”表示。use COMPANY s

19、elect max(SALARY) as 最高工资, DNO as 部门编号from EMPLgroup by DNO9.使用分组子句GROUP BY与聚集函数SUM、AVG进行查询1)分别统计雇员表Empl中各部门员工的工资总额,并且列名分别用“部门编号”及“各部门工资总额”表示。use COMPANY select sum(SALARY) as 各部门工资总额, DNO as 部门编号from EMPLgroup by DNO2)分别统计雇员表Empl中各部门员工工资的平均数,并且列名分别用“部门编号”及“各部门工资平均数”表示。use COMPANY select avg(SALARY)

20、 as 各部门工资平均数, DNO as 部门编号from EMPLgroup by DNO10.使用分组子句GROUP BY与聚集函数COUNT进行查询1)统计员工人数多于4人的部门信息,并且列名分别用“部门编号”及“员工人数”表示。use COMPANY select count(ENAME) as 员工人数, DNO as 部门编号from EMPLgroup by DNOhaving count(ENAME)>42)分别统计工作表Job中各项目的参与开发的员工人数,并且列名分别用“项目编号”及“员工人数”表示。use COMPANY select PNO as 项目编号,coun

21、t(PNO) as 员工人数from JOBgroup by PNOHaving PNO is not null实验3 数据库的多表连接和子查询一、 实验目的本实验的目的是使学生加深对SQL和SQL语言的查询语句的理解。熟练掌握数据库的多表连接查询和子查询。二、 实验时数 2学时三、 实验内容多表连接查询:1.对两张数据表使用内连接进行查询1)查询姓名为“王一伟”的员工所在部门的名称,并且列名用汉字表示。use companyselect DEPA.DNAME as 部门名称,EMPL.ENAME as 姓名from EMPL inner join DEPAon DEPA.DNO=EMPL.D

22、NOwhere EMPL.ENAME='王一伟'2)查询编号为“1002”的员工姓名及该员工所在部门的名称,并且列名用汉字表示。use companyselect EMPL.ENO as 部门编号,DEPA.DNAME as 部门名称,EMPL.ENAME as 姓名from EMPL inner join DEPAon DEPA.DNO=EMPL.DNOwhere EMPL.ENo='1202'2.对多张数据表使用内连接进行查询1)查询姓名为“陈晨”的员工参与过的所有项目的名称,并且列名用汉字表示。use companyselect EMPL.ENAME as

23、 姓名,EMPL.ENO as 员工编号,JOB.PNO as 项目名称from EMPL inner join JOBon EMPL.ENO=JOB.ENOwhere EMPL.ENAME='李晨'2)查询编号为“1202”的员工姓名及该员工参与过的所有项目的名称,并且列名用汉字表示。use companyselect EMPL.ENAME as 姓名,EMPL.ENO as 员工编号,JOB.PNO as 项目名称from EMPL inner join JOBon EMPL.ENO=JOB.ENOwhere EMPL.ENO='1202'3.对两张数据表使

24、用左连接进行查询1)使用左连接查询所有员工的基本信息及参与项目开发情况,如果某员工参与过项目开发,则列出该员工所参与的所有项目的编号,否则该项以空值表示。use companyselect EMPL.ENO as 员工编号,EMPL.ENAME as 姓名,EMPL.BIRTHDATE as 出生日期,EMPL.SALARY as 工资,Empl.DNO as 部门编号,JOB.PNO as 项目编号from EMPL left outer join JOBon EMPL.ENO=JOB.ENO2)使用左连接查询所有员工的基本信息及所在部门名称,如果某员工尚未分配到任何部门,则该员工的部门名称

25、项以空值表示。use companyselect EMPL.ENO as 员工编号,EMPL.ENAME as 姓名,EMPL.BIRTHDATE as 出生日期,EMPL.SALARY as 工资,Empl.DNO as 部门编号,DEPA.DNAME as 部门名称from EMPL left outer join DEPAon EMPL.DNO=DEPA.DNO4.对两张数据表使用右连接进行查询1)使用右连接查询所有员工的基本信息及参与项目开发情况,如果某员工参与过项目开发,则列出该员工所参与的所有项目的编号,否则该项以空值表示。use companyselect EMPL.ENO as

26、 员工编号,EMPL.ENAME as 姓名,EMPL.BIRTHDATE as 出生日期,EMPL.SALARY as 工资,Empl.DNO as 部门编号,JOB.PNO as 项目编号from EMPL RIGHT outer join JOBon EMPL.ENO=job.ENO2)使用右连接查询所有员所在部门名称,如果某员工尚未分配到任何部门,则该员工的部门名称项以空值表示。use companyselect EMPL.ENO as 员工编号,EMPL.ENAME as 姓名,EMPL.BIRTHDATE as 出生日期,EMPL.SALARY as 工资,Empl.DNO as

27、部门编号,DEPA.DNAME AS 部门名称from EMPL right outer join DEPAon EMPL.DNO=DEPA.DNO子查询:1.多表单值子查询1)查询编号为1001的员工的部门名。use companyselect DNAMEfrom DEPAwhere DNO=(select DNO from EMPL where ENO='1001')2)查询客户中心部门的员工数。use companyselect count(DNO) as 员工数 from EMPL where DNO=(select DNO from DEPA where DNAME=

28、'客户中心')3)查询陈晨所在的项目编号。use COMPANYselect PNO as 项目编号from JOBwhere ENO=(select ENO from EMPL where ENAME='李晨')2.多表多值子查询1)查询1985年以后出生的员工在所在项目的工作天数。use COMPANYselect DAYS as 工作天数from JOBwhere ENO in (select ENO from EMPL where BIRTHDATE>'1985')2) 查询参与项目天数超过40天的员工姓名。use COMPANYs

29、elect ENAME as 员工姓名from EMPLwhere ENO in (select ENO from JOB where DAYS>'40')3) 查询工资低于2000的员工的所属部门。use COMPANYSELECT DNAME AS 部门 from DEPAwhere DNO in (select DNOfrom EMPL where SALARY<'2000')3.多层嵌套子查询1)查询客户中心'部门中,收入高于平均工资的员工。select empl.ename as 工资高于平均工资的员工from emplwhere

30、salary > (select avg(empl.salary) from empl ) and empl.dno in (select depa.dno from depa where depa.dname='客户中心')2) 查询“开发系统”项目的参与部门。SELECT T1.DNAMEFROM PROJ S1,JOB S2,EMPL S3,DEPA T1WHERE T1.DNO = S3.DNO AND S3.ENO = S2.ENO AND S2.PNO = S1.PNO AND S1.PNAME = '开发系统'3) 查询'宣传'

31、;部门雇员参加的项目名称。SELECT T1.PNAMEFROM PROJ T1,JOB S1,EMPL S2,DEPA S3WHERE T1.PNO = S1.PNO AND S1.ENO = S2.ENO AND S2.DNO = S3.PNO AND S3.PNAME = '宣传'4相关子查询1)查询参与两个项目以上的员工姓名。SELECT T1.ENO,T2.ENAMEFROM ( SELECT ENO,COUNT(PNO) COUNTFROM JOBGROUP BY ENOHAVING COUNT >=2 )T1,EMPL T2WHERE T1.ENO = T2

32、.ENO 2)查询所有未参与项目的员工姓名。SELECT T1.ENAMEFROM EMPL T1WHERE T1.ENO NOT IN(SELECT ENO FROM JOB)实验4 数据库的视图与索引定义一、 实验目的本实验的目的是使学生掌握索引与视图的定义与维护操作,加深对索引与视图在关系数据库中的作用的理解。 二、 实验时数 2学时相关知识建立索引是加快查询速度的有效手段。用户可以根据应用环境的需要,在基本表上建立一个或多个索引,以提供多个存取路径,加快查找速度。视图是根据子模式建立的虚拟表。一个视图可以由一个表构造,也可以由多个表构造。查看和修改视图就如同对表的操作一样,非常容易。三

33、、 实验内容索引1.创建索引1)为PROJ表的PNAME列创建非聚集索引Pindex。use COMPANYgocreate nonclustered index Pindex on PROJ(PNAME)go2)为DEPA表的DNAME(降序),ADDR两列创建唯一非聚集索引Dindex。use COMPANYgocreate unique nonclustered index Dindex on DEPA(DNAME desc,ADDR)go3)在PROJ表的PNAME列上创建唯一非聚集索引Pindex,若该索引已存在则删除后重建。use COMPANYgocreate unique no

34、nclustered index Pindex on PROJ(PNAME)go2查看索引1)查看DEPA表的索引信息。use COMPANYgoexec sp_helpindex DEPA2)查看数据库COMPANY索引使用的空间信息use COMPANYgoexec sp_spaceused3.索引更名1)将DEPA表的索引Dindex名更改为Dindex1。Use COMPANYGoSp_rename DEPA.Dindex,Dindex1go4.删除索引1)删除DEPA表的索引Dindex1。use COMPANYgodrop index DEPA.Dindex1视图1.创建视图1)创

35、建14号部门员工的视图EMPL_14(ENO,ENAME,SALARY)。CREATE VIEW EMPL_14(ENO,ENAME,SALARY)ASSELECT EN0,ENAME,SALARYFROM EMPLWHERE DN0='14'2) 创建包含项目名与员工名及工作天数的视图Prjemp。CREATE VIEW PrjempASSELECT PROJ.PNAME,EMPL.ENAME,J0B.DAYSFROM PROJ,J0B,EMPLWHERE EMPL.EN0=J0B.EN0 AND J0B.PN0=PROJ.PNO3)在视图EMPL_14上创建工资在3000以

36、上的员工的视图EMPL_14H3。CREATE VIEW EMPL_14H3ASSELECT ENO,ENAME,SALARYFROM EMPL_14WHERE SALARY>30004)创建每个部门的平均工资的视图E_AVG(DNO,SAVG)。CREATE VIEW E_AVG(DNO,SAVG)ASSELECT DN0,AVG(SALARY)FROM EMPLGROUP BY DN02.查询视图1)根据视图Prjemp查询做'设计系统'项目的所有员工及工作天数。SELECT ENAME,DAYSFROM PrjempWHERE PNAME=N'设计系统

37、9;2)根据视图E_AVG查询客户中心的平均工资。SELECT DNO,SAVGFROM E_AVGWHERE DNO=(SELECT DN0 FROM DEPA WHERE DNAME=N'客户中心')3更新视图1)在视图EMPL_14中将1042号员工的姓名改为李立春。UPDATE EMPL_14SET ENAME=N'李立春'WHERE ENO=14022)向视图EMPL_14中插入一条新记录(1050,赵英,3500)。INSERT INTO EMPL(EN0,ENAME,SALARY,DN0)VALUES(1050,N'赵英',3500

38、,14)3)删除视图EMPL_14中1042号员工的记录。DELETE FROM EMPL_14WHERE ENO=14024.删除视图1)删除视图Prjemp。DROP VIEW Prjemp实验5 数据库的安全性控制一、 实验目的 本实验的目的是通过实验使学生加深对数据安全性的理解,并掌握SQL Server中有关用户,角色及操作权限的管理方法。二、 实验时数 2学时三、 实验内容分别使用SQL语言和对象资源管理器完成以下操作:1. 建立数据库登录帐户S1和D1,密码均为1234,登录帐户S1默认数据库分别为COMPANY,其它保持默认值。EXEC sp_addlogin 'S1&

39、#39;, '1234', 'COMPANY' EXEC sp_addlogin 'D1', '1234'2. 将S1映射为COMPANY数据库的同名数据库用户。USE COMPANYGOCREATE USER S1 FOR LOGIN S1GO3. 将D1映射为COMPANY数据库的数据库用户,数据库用户名为S2。USE COMPANYGOCREATE USER S2 FOR LOGIN D1GO3 对数据库用户授予权限1)授予S1对EMPL表插入数据的权限,并验证该权限(方法:通过登录帐户S1登录SQL Server,然后插入

40、一条数据来验证该权限)。GRANT INSERTON EMPLTO S1;2)授予S2创建表的权限,并验证该权限(方法:通过登录帐户D1登录SQL Server,然后创建-张表来验证该权限)。GRANT create tableTO S2;3)收回S1对EMPL表插入数据的权限,并验证该权限(方法:通过登录帐户S1登录SQL Server,然后插入一条数据来验证该权限)。REVOKE INSERTon EMPLfrom S14. 创建用户角色1)在COMPANY数据库中创建角色MYROLE,授予该角色查询和修改EMPL表的权限。CREATE ROLE MYROLEGRANT SELECT,UP

41、DATEON EMPLTO MYROLE2)将S1添加为角色MYROLE的成员,并验证s1是否能够查询EMPL表。exec sp_addrolemember MYROLE,S13)将S2添加为角色MYROLE的成员,并验证s2是否能够修改EMPL表。exec sp_addrolemember MYROLE,S25收回数据库用户权限1)采用用户角色方法收回S1和S2修改EMPL表的权限,并验证S1是否还能修改EMPL表。REVOKE UPDATEON EMPLFROM MYROLE 2)拒绝S2查询 EMPL表的权限,并验证S2是否还能查询EMPL表。REVOKE SELECTON EMPLFR

42、OM S2实验6 数据完整性一、实验目的本实验的目的是通过实验使学生加深对数据完整性的理解,掌握数据完整性的约束条件,学会创建和使用触发器。二、 实验时数 2学时相关知识SQL Server实现数据完整性的具体方法有4种:约束、缺省、规则和触发器。触发器是实施复杂完整性的特殊类型的存储类型。触发器不需要专门语句调用,当对它所保护数据进行修改时自动激活,以防止对数据进行不正确,未授权或不一致的修改。三、 实验内容1.创建包含非空约束字段的表创建一个员工联系信息表Contact,一共有3个字段:雇员号(Eno)数据类型为4位长定长字符串;电话(Tel)数据类型为8位长定长字符串;地址(Addr)数

43、据类型为20位变长字符串;要求雇员号和电话不能为空。use COMPANYcreate table Mail(Eno char(4) not null,Mail char (8) not nullAddr varchar(20) )2.创建包含唯一约束字段的表创建员工邮箱表Mail,一共有2个字段:雇员号(Eno)数据类型为4位长定长字符串;邮箱地址(Mail)数据类型为20位变长字符串;要求雇员号非空,邮箱地址唯一。use COMPANYcreate table Mail(Eno char(4) not null,Mail varchar (20) )alter table Mailalte

44、r table Mailadd constraint Em unique(Mail)3.创建包含主码约束字段的表创建一个员工卡信息表Card,一共有3个字段:雇员号(Eno)数据类型为4位长定长字符串;卡号(Cno)数据类型为8位长定长字符串;开卡日期(Startday)日期格式;要求雇员号和卡号联合做主键。use COMPANYcreate table Card(Eno char(4) not null,Cno char (8) not null,Startday datetime )alter table Cardadd constraint Ca primary key (Eno,Cno

45、)4.创建包含检查约束字段的表完成百分比用小数表示且数值小于1;创建包含检查约束字段的表,完成百分比用小数表示且数值小于1;创建包含检查约束字段的表3个字段:项目号(Pno)数据类型为4位长定长字符串;完成百分比用小数表示且数值小于1;创建包含检查约束字段的表(Percentage)数据类型为DECIMAL(3,2);已用费用(Pem)数据类型为INT;要求:完成百分比用小数表示且数值小于1;创建包含检查约束字段的表1;已用费用的取值为0-100000(用规则实现)use COMPANYcreate table Process(Pno char(4) not null,Percentage d

46、ecimal(3,2) not null,Pem int )alter table Processadd constraint Pr check(Percentage<1)create rule Proas Pem>=0 and Pem<=100000。5.创建包含默认值约束字段的表创建通勤表Commudity,一共有2个字段:雇员号(Eno)数据类型为4位长定长字符串;通勤标志(Flag)数据类型为1位定长字符串;要求通勤标志默认为Y。use COMPANYcreate table Commudity(Eno char(4) not null,Flag nvarchar(1

47、) not null, )alter table Commudityadd constraint Co default 'Y' for Flag6.创建包含外码约束字段的表1) 创建部门经理表Mgr,一共有2个字段: 部门号(Dno)数据类型为4位长定长字符串经理员工号(Eno)数据类型为4位长定长字符串要求部门号是主键(用CONSTRAINT 约束实现)use COMPANYcreate table Mgr(Dno char(4) not null,Eno nvarchar(4) not null, )alter table Mgradd constraint Mg Prim

48、ary key clustered(Dno)2) 创建部门收支表CHARGE,一共有2个字段: 部门号(Dno)数据类型为4位长定长字符串收支(CHARGE)数据类型为DECIMAL(7,2)要求部门号是外键use COMPANYcreate table charge(Dno char(4) not null,CHARGE decimal(7,2)alter table chargeadd constraint Mg1 foreign key (Dno)references Mgr (Dno)7创建触发器 在表EMPL上创建一个触发器EMPL_date,当更改员工编号时同步更改Job表中对应的

49、员工编号。实验7 数据库设计一、实验目的使学生能够对给定的实际需求,选择一种编程语言或开发工具,完成数据库设计,并实现数据的查询等操作,从而掌握数据库应用系统的设计方法和步骤。熟悉大型数据库管理系统的结构与组成;熟悉数据库应用系统的设计方法和开发过程;掌握一种大型数据库管理系统(SQL SERVER或ORACLE)的应用技术和开发工具的使用;熟悉数据库设计工具的使用;熟悉数据库安全的相关知识和技术;熟悉数据库系统的管理和维护。二、实验时数 4学时三、实验内容完整实践数据库应用系统设计的工程过程:需求分析概念设计逻辑设计物理设计实施编写应用程序:(1)需求分析:选定一个应用,对所设计的数据库系统

50、有一定的调研分析,其结果应该以简单的需求分析说明书数据字典和数据流图(2级数据流即可)表示;(2)概念分析:使用E-R图作为描述工具.描述出局部和全局的E-R图;(3)逻辑设计:将E-R图转化为相应的关系模式,并根据范式理论进行优化分析,关系模式不少于3个;(4)物理设计:根据需要设计必要的索引等结构;(5)实施:以某种DBMS为工具创建出完整的数据库.在数据库中要表现出的知识点包括:设置数据完整性(参照完整性、实体完整性、自定义完整性(包括触发器)。设置用户,并相应设计用户的权限和角色(用户设计至少3个,有不同的权限) 。建立存储过程完成相关操作至少2个,以文件方式保存。(6) 编写应用程序

51、:利用开发工具C+、 JAVA、.NET平台或其它动态网页开发工具编写应用程序;(7)以上内容,请详细描述,并有必要抓图;(8) 提交系统的源码程序、设计性实验报告。数据库实验原理七:数据库设计姓名:赵明瑶班级:2011级网络工程学号:1需求分析(1) 数据管理功能是设置和管理基础数据,包括加班、请假考勤类别的定义,实现对员工出勤数据的添加、删除和修改。(2) 出勤管理包括上班时间、下班时间、缺勤记录的增、删、改、查。(3) 加班管理对员工的加班时间进行统计,记录开始时间和结束时间,对加班信息实现添加,删除等操作。(4) 请假管理可以提出请假申请,并完善请假信息,如请假开始时间,请假结束时间,

52、请假的次数进行管理。2 概念结构设计2.1局部E-R图(1)员工E-R图年龄姓名编号性别职工(2)出勤E-R图职工编号下班时间缺勤记录上班时间出勤记录(3)加班E-R图加班编号职工编号开始时间加班记录加班统计结束时间(5)请假E-R图请假编号编号开始时间请假记录请假统计结束时间2.2 整体E-R图结束时间统计天数如图3.7所示,图为整体E-R图开始时间请假信息请假编号n请假m结束时间起始时间年龄性别m姓名n加班信息加班职工m职工编号出勤时间统计n加班编号下班时间上班时间缺勤记录出勤记录3 逻辑结构设计3.1 关系模式职工(职工编号,姓名,性别,年龄)出勤记录(职工编号,出勤编号,上班时间,下班

53、时间,缺勤记录)加班信息(职工编号,加班编号,加班开始时间,加班结束时间,加班时间统计)请假信息(职工编号,请假编号,请假开始时间,请假结束时间,请假时间统计)4数据实施4.1数据表的创建(1)员工信息表(worker)CREATE TABLE worker( 职工编号CHAR(4) not null, 职工姓名CHAR(6) not null, 性别CHAR(2) not null, 年龄INT not null,)(2) 出勤记录表(work_note)CREATE TABLE work_note( 职工编号CHAR(4) not null,出勤编号 int not null,上班时间da

54、tetime,下班时间datetime,缺勤记录int ) (3)加班记录表(over_note) CREATE TABLE over_note( 职工编号CHAR(4), 加班编号int , 开始时间datetime, 结束时间datetime, 时间统计int )(4) 请假记录表(off_note)CREATE TABLE off_note( 职工编号 CHAR(4), 请假编号 int , 请假开始时间datetime, 请假结束时间datetime, 统计天数int, )4.2数据的输入(1)worker 表insert into worker(职工编号,职工姓名,性别,年龄) va

55、lues('1','张三','男','23')insert into worker(职工编号,职工姓名,性别,年龄) values('2','李四','男','24')insert into worker(职工编号,职工姓名,性别,年龄) values('3','李毅','男','32')insert into worker(职工编号,职工姓名,性别,年龄) values('4','陈彤','女','26')insert into worker(职工编号,职工姓名,性别,年龄) values('5','张宁','女','25')select * from worker(2)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论