北京理工大学数据库串讲

合集下载

北理工《实用数据库》课程学习资料(七) 66

北理工《实用数据库》课程学习资料(七) 66

北理工《实用数据库》FAQ(七)第九章窗体设计第十一章 VBA编程1.简述窗体的分类和作用。

答案:按照窗体的功能来分,窗体可以分为数据窗体、切换面板窗体和自定义对话框三种类型。

数据窗体主要用来输入、显示和修改表或查询中的数据;切换面板窗体一般是数据库的主控窗体,用来接受和执行用户的操作请求、打开其他的窗体或报表以及操作和控制程序的运行;自定义对话框用于定义各种信息提示窗口,如警告、提示信息、要求用户回答等。

2.Access中的窗体共有几种视图?答案:Access中的窗体共有五种视图:设计视图、窗体视图、数据表视图、数据透视表视图和数据透视图视图。

3.创建窗体有哪两种方式,如何进行创建窗体能够达到满意的效果?答案:创建窗体有两种方式:利用向导创建新窗体和利用设计视图创建新窗体。

一般可以先利用向导创建新窗体,再用设计视图对窗体进行修改,这样创建窗体既简单,又可以达到比较满意的效果。

4.简述文本框的作用与分类。

答案:文本框控件用于显示数据,或让用户输人和编辑字段数据。

文本框分为绑定型、非绑定型和计算型三种。

5. 试简述VBA 的数据库操作技术。

答案:Access 的代码基础是VBA 程序设计。

随着Access 版本的不断更新及VBA 数据操作技术的发展,Access 系统的数据库处理也经历了DAO(数据存取对象)、RDO(远程数据对象)到ADO(活动数据对象)的转换。

从Access2000 开始,已经普遍采用了ADO+OLE DB 的数据处理方式。

6. 设计人员在编写VBA 应用程序时,应该遵循那些原则?答案:下面是开发者在编写程序中应该注意的几点:1) 在应用程序的开发期,不要想是在编写Visual Basic程序代码。

大多数程序除了少数的用户定义的函数外,不需要任何的程序代码。

即使那些真的需要程序代码的程序,也不会需要很多程序代码。

2) 使用指令按钮(Command Button)及相关的宏操作,来代替传统的菜单指令。

数据库实验5

数据库实验5
(5)PAD_INDEX:用于指定索引中间级中每个页(节点)上保持开 放的空间。必须和填充因子同时使用。
(6)FILLFACTOR =填充因子:用于指定在创建索引时,每个索引页 的数据占索引页大小的百分比,fillfactor的值为1到100。
北京理工大学管理与经济学院
人力资源管理
CREA参(T数7E)说IIN明GND:OREEX_D命UP令_KEY:用于控制当往包含于一个唯一聚集索引中
DROP INDEX 选课表.IX_选课表_成绩 --如果存在IX_选课表_成绩索引删除 CREATE NONCLUSTERED INDEX IX_选课表_成绩 ON 选课 表(成绩 DESC)
11
北京理工大学管理与经济学院
人力资源管理
5.2 删除索引
1.删除索引的方法 SQL Server删除索引的主要方法有:利用对象资源管理器删除索
WITH(
PAD_INDEX=ON,
--保持索引开放的空间
FILLFACTOR=90,
--填充因子90
IGNORE_DUP_KEY=ON, --忽略重复键值
DROP_EXISTING=ON) --如果存在IX_学号_开课号索引
--则删除,如果不存在,则提示错误
--中断索引创建
10
北京理工大学管理与经济学院
人力资源管理
例5 为数据库“教学管理”中数据表关于选课表.成绩降 序建立非聚集索引IX_选课表_成绩。
方法一:使用对象资源管理器 创建过程请参照上例,见前图创建索引窗口。 方法二:使用SQL命令
USE 教学管理 GO
IF EXISTS (SELECT name FROM sysindexes WHERE name='IX_选课表_成绩')

北理工《SQL Server 数据库应用》课程学习资料(七)63

北理工《SQL Server 数据库应用》课程学习资料(七)63

北理工《计算机动画技术》拓展资源(七)第九章数据库完整性数据库完整性(Database Integrity)是指数据库中数据在逻辑上的一致性、正确性、有效性和相容性。

数据库完整性由各种各样的完整性约束来保证,因此可以说数据库完整性设计就是数据库完整性约束的设计。

数据库完整性约束可以通过DBMS或应用程序来实现,基于DBMS的完整性约束作为模式的一部分存入数据库中。

通过DBMS实现的数据库完整性按照数据库设计步骤进行设计,而由应用软件实现的数据库完整性则纳入应用软件设计(本文主要讨论前者)。

原理编辑数据库完整性对于数据库应用系统非常关键,其作用主要体现在以下几个方面:1.数据库完整性约束能够防止合法用户使用数据库时向数据库中添加不合语义的数据。

2.利用基于DBMS的完整性控制机制来实现业务规则,易于定义,容易理解,而且可以降低应用程序的复杂性,提高应用程序的运行效率。

同时,基于DBMS的完整性控制机制是集中管理的,因此比应用程序更容易实现数据库的完整性。

3.合理的数据库完整性设计,能够同时兼顾数据库的完整性和系统的效能。

比如装载大量数据时,只要在装载之前临时使基于DBMS的数据库完整性约束失效,此后再使其生效,就能保证既不影响数据装载的效率又能保证数据库的完整性。

4.在应用软件的功能测试中,完善的数据库完整性有助于尽早发现应用软件的错误。

数据库完整性约束可分为6类:列级静态约束、元组级静态约束、关系级静态约束、列级动态约束、元组级动态约束、关系级动态约束。

动态约束通常由应用软件来实现。

不同DBMS 支持的数据库完整性基本相同。

关系模型关系完整性的用于保证数据库中数据的正确性。

系统在进行更新、插入或删除等操作时都要检查数据的完整性,核实其约束条件,即关系模型的完整性规则。

在关系模型中有四类完整性约束:实体完整性、域完整性、参照完整性和用户定义的完整性,其中实体完整性和参照完整性约束条件,称为关系的两个不变性。

数据库的完整性 07

数据库的完整性 07

第7章数据库的完整性北京理工大学计算机学院张文耀zhwenyao@主要内容7.1数据库的完整性概述7.2实体完整性7.3参照完整性7.4用户定义的完整性7.5触发器7.6SQL Server中数据库完整性的实现7.7小结7.1数据库的完整性概述⏹数据库完整性的含义⏹正确性指数据的合法性⏹有效性指数据是否属于所定义的有效范围⏹相容性表示同一事实的两个数据应相同⏹保持完整性的目的⏹防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据⏹防范对象:不合语义的、不正确的数据⏹数据库的完整性是一种语义概念⏹加在数据库数据之上的语义约束条件称为完整性约束条件或完整性规则⏹DBMS检查数据库中的数据是否满足完整性条件的机制称为完整性检查⏹在关系数据库中,对数据的各种限制是以完整性约束条件的形式在关系数据库模式中指定的。

⏹完整性约束条件是对数据库中数据本身的某种语义限制、数据间的逻辑约束和数据变化时所遵循的规则等⏹关系数据库的完整性约束条件分为:⏹实体完整性约束⏹参照完整性约束⏹其他(用户定义的)完整性约束⏹完整性约束条件的作用对象⏹关系⏹元组⏹属性列⏹列级约束主要是对属性的数据类型、数据格式和取值范围、精度等的约束。

具体包括:⏹对数据类型的约束,包括数据类型、长度、精度等的约束。

例如学生姓名的数据类型是字符型,长度是8。

⏹对数据格式的约束,例如规定日期的格式为YYYY/MM/DD⏹对取值域的约束,例如学生成绩的取值范围必须是0~100。

⏹对空值的约束⏹元组约束元组中各个属性之间的约束关系例如:订货关系中发货日期不能小于订货日期,发货量不得超过订货量等。

⏹关系约束一个关系的各个元组之间、或者多个关系之间存在的各种联系或约束。

常见的关系约束有:⏹实体完整性约束⏹参照完整性约束⏹函数依赖约束⏹统计约束等⏹数据库的完整性控制是DBMS的基本功能之一⏹DBMS实现完整性控制的子系统称为完整性子系统⏹为维护数据的完整性,DBMS必须:⏹提供定义完整性约束条件的机制⏹提供完整性检查的方法⏹违约处理(提供违反完整性约束条件的处理措施)⏹拒绝执行⏹按照完整性控制策略处理⏹在关系数据库系统中,数据完整性控制策略包括默认值、规则、约束、触发器和存储过程等⏹默认值(Default)⏹如果在插入行中没有指定列的值,那么默认值指定列中所使用的值,例如:自动增长值,内置函数、数学表达式等⏹约束(Check)⏹约束是自动强制数据完整性的方法。

北京理工大学计算机学院数据库开发实验报告2

北京理工大学计算机学院数据库开发实验报告2

数据库系统开发实验报告1.2 实验二:触发器的创建与测试1.2.1内容检查订单明细表Sales.SalesOrderDetail中的信息,如果修改记录中的产品单价UnitPrice大于产品公开报价(Production.Product.ListPrice),则不能进行修改并抛出错误信息,否则,进行修改并将修改的有关信息写到Production.ProuctUpdateLog表中。

1.2.2要求1.使用RAISEERROR抛出错误信息。

2.修改信息记录表Production.ProductUpdateLog的内容:记录编号、订单编号、订单明细编号、产品编号、产品的公开报价、修改前产品的单价、修改后产品的单价、修改者的登录名。

使用存储过程完成该功能,并在存储过程中调用该存储过程。

3.给出触发器和存储过程的源代码和简要的说明(可以在代码中使用注释进行说明)。

4.设计触发器测试方案并给出测试的命令和结果,必要时可对测试结果进行分析。

实验内容:首先,用Windows系统下的登录,附加数据库AdventureWorks按照实验内容,我们先来查询一下AdventureWorks中的订单明细表Sales.SalesOrderDetail。

语句:USE AdventureWorksGOSELECT*FROM Sales.SalesOrderDetailGO查询结果如下:根据实验内容,创建名为Production.ProuctUpdateLog(产品更新日志)的表。

其属性分别为记录编号,订单编号,订单明细编号,产品编号,产品公开报价,修改前产品的单价,修改后产品单价,修改者登录名。

语句:/*记录编号,订单编号,订单明细编号,产品编号,产品公开报价,修改前产品的单价,修改后产品单价,修改者登录名*/USE AdventureWorksGOCREATE TABLE Production.ProductUpdateLog(记录编号int IDENTITY primary key,订单编号int not null,订单明细编号int not null,产品编号int not null,产品公开报价money,修改前产品单价money,修改后产品单价money,修改者登录名nvarchar(50) not null)GO运行结果如下:将修改者登录名设为不准为空,同时用IDENTITY关键字设主键“记录编号”为自动增长。

北京理工大学-数据库-实验_4-存储过程、触发器

北京理工大学-数据库-实验_4-存储过程、触发器

北京理工大学数据库实验4主讲老师:赵晓林学生:李经2012/11/21实验 4:存储过程、触发器 (1)4.1 作业声明 (1)4.2 实验目的 (1)4.2.1 建立“学籍与成绩管理系统”表格 (1)4.3 实验过程 (1)4.3.1 在“学籍与成绩管理系统”表格中输入不符合系统要求的数据 (1)4.3.2 建立存储过程,计算学生的总学分、总成绩,并保存在另一张表中 (2)4.3.3 查询总成绩表,并进行排序 (3)4.3.4 在相关的表上建立触发器,实现主外键的功能 (3)4.3.5 讨论触发器与主外键的异同 (4)4.3.6 在表上建立触发器实现对数据录入、修改的限制 (4)4.3.7 讨论视图、存储过程、触发器、用户自定义函数的使用范围及优缺点 (4)4.4 实验结论 (5)4.5 实验体会 (5)实验 4:存储过程、触发器4.1 作业声明本次作业全部由本人完成,若存在抄袭或雷同现象,本人愿意接受老师相应的处理4.2 实验目的4.2.1建立“学籍与成绩管理系统”表格•不建立表之间的参照关系•输入数据,以便在表上进行各种操作4.3 实验过程建立“学籍与成绩管理系统”表格操作,输入数据操作同实验三4.3.1在“学籍与成绩管理系统”表格中输入不符合系统要求的数据(如学生学籍表中学号重复),建立适当的存储过程,分别查找和删除这些不合法的数据4.3.1.1 sql代码insert into xs values('孙悟空','2120100030','05','08111005','1990-5-1','男'); --插入一行非法数据,假设学号合法范围为~1120100099create proc check_xh@start char(10),@end char(10)asbegindelete from xswhere xs.xh<@startor xs.xh>@endendselect*from xswhere xs.xh<'1120100001'or xs.xh>'1120100099'exec check_xh'1120100001','1120100099' --调用存储过程select*from xswhere xs.xh<'1120100001'or xs.xh>'1120100099'4.3.1.2 结果调用前后对比,非法数据已经被删除4.3.2建立存储过程,计算学生的总学分、总成绩,并保存在另一张表中4.3.2.1 sql代码create table cjd(xm varchar(8)not null,xf decimal(5,1),cj decimal(5,1),)create proc cjd_show@start char(10),@end char(10)asbegininsert into cjdselect xs.xm,sum(kc.xf),sum(xk.cj)from xs,kc,xkwhere xs.xh>=@start and xs.xh<=@endand xs.xh=xk.xhand xk.kcbh=kc.kcbhgroup by xs.xmEndexec cjd_show'1120100001','1120100099'select*from cjd4.3.2.2 结果4.3.3查询总成绩表,并进行排序4.3.3.1 sql代码select*from cjd order by cj4.3.3.2 结果成绩表按照总成绩升序排列4.3.4在相关的表上建立触发器,实现主外键的功能4.3.4.1 Sql代码create trigger xdh_pk on xb--模拟主键after insertasif (select COUNT(*)from xb,inserted where xb.xdh=inserted.xdh)>1beginprint'插入数据重复'rollback transactionendcreate trigger xdh_fk on js--模拟外键after insertasif (select COUNT(*)from xb,inserted where xb.xdh=inserted.xdh)=0beginprint'插入数据不合法'rollback transactionEndinsert into xb values('05','德语'); --插入重复数据insert into js values('姜子牙','9920100005','一级','09'); --非法数据,xdh09不存在于系表中4.3.4.2 结果插入以上两行数据时,结果分别为,系统显示:“插入数据重复消息3609,级别16,状态1,第1 行事务在触发器中结束。

北理工《实用数据库》课程学习资料(二)63

北理工《实用数据库》课程学习资料(二)63

北理工《实用数据库》拓展资源(二)第二章数据库设计面向对象的关系数据库设计一、概念的区分有些人把面向对象的数据库设计(即数据库模式)思想与面向对象数据库管理系统(OODBMS)理论混为一谈。

其实前者是数据库用户定义数据库模式的思路,后者是数据库管理程序的思路。

用户使用面向对象方法学可以定义任何一种DBMS数据库,即网络型、层次型、关系型、面向对象型均可,甚至文件系统设计也照样可以遵循面向对象的思路。

面向对象的思路或规范可以用于系统分析、系统设计、程序设计,也可以用于数据结构设计、数据库设计。

OOSE自上至下、自始至终地贯彻面向对象思路,是一个一气呵成的统一体。

面向对象的数据库设计只是 OOSE 的一个环节。

二、数据库设计的重要性一般数据库设计方法有两种:即属性主导型和实体主导型。

属性主导型从归纳数据库应用的属性出发,在归并属性集合(实体)时维持属性间的函数依赖关系。

实体主导型则先从寻找对数据库应用有意义的实体入手,然后通过定义属性来定义实体。

一般现实世界的实体数在属性数 1/10 以下时,宜使用实体主导型设计方法。

面向对象的数据库设计是从对象模型出发的,属于实体主导型设计。

一般数据库应用系统都遵循以下相关开发步骤:1.设计应用系统结构;2.选择便于将应用程序与 DBMS 结合的DBMS体系结构,如RDBMS;3.根据应用程序使用的环境平台,选择适宜的DBMS(如Oracle)和开发工具(如PB) ;4.设计数据库,编写定义数据库模式的SQL程序;5.编写确保数据正确录入数据库的用户接口应用程序;6.录入数据库数据;7.运行各种与数据库相关的应用程序,以确认和修正数据库的内容。

对以上各步骤,有几点需要说明:(1) 这不是瀑布模型,每一步都可以有反馈。

以上各步骤不仅有反馈、有反复,还有并行处理。

比如一些数据库表在数据录入时,另一些数据库表设计还在修改。

这与我们的递增式开发方法有关,也与面向对象的特征有关。

北理工《实用数据库》期末考试精选题汇总【含答案解析】81

北理工《实用数据库》期末考试精选题汇总【含答案解析】81

《实用数据库》课程复习提纲第1章数据库系统概述本章要点掌握数据库最常用的术语和基本概念明确常用数据模型组成要素明确最常用的数据模型的区别及优缺点掌握数据库系统的三级模式结构了解数据库系统的组成具体内容1.在数据库方式下,信息处理中占据中心位置的是数据。

2.数据库在磁盘上的基本组织形式是文件。

3.DBS是指数据库系统。

4.数据库系统中,最早出现的数据模型是层次模型。

5.数据库技术的主要目的是有效地管理和存取大量的数据资源。

6.与“文件”结构相比,“数据库”结构有些什么不同?•数据的结构化。

文件由记录组成,但各文件之间缺乏联系。

数据库中数据在磁盘中仍以文件形式组织,但这些文件之间有着广泛的联系。

数据库的逻辑结构用数据模型来描述,整体结构化。

数据模型不仅描述数据本身的特点,还要描述数据之间的联系。

•数据独立性。

文件只有设备独立性,而数据库还具有逻辑独立性和物理独立性。

•访问数据的单位。

访问文件中的数据,以记录为单位。

访问数据库中的数据,以数据项(字段)为单位,增加了系统的灵活性。

第2章数据库设计本章要点•了解数据库设计的任务与步骤•了解需求分析阶段的任务•掌握实体-联系模型•掌握E-R图的概念及设计方法•掌握关系模型的概念•了解数据库的实施、使用与维护具体内容1.实体集的联系类型有如下3种类型:(1)一对一联系设有实体集A与实体集B,如果A中的一个实体,至多与B中的一个实体关联,反过来,B中的一个实体,至多与A中的一个实体关联,称A与B是“一对一”联系类型,记作(1:1)。

(2)一对多联系设有实体集A与实体集B,如果A中的一个实体,与B中可以有多个实体关联,反过来,B中的一个实体,至多与A中的一个实体关联,称A与B是“一对多”联系类型,记作(1∶n)。

(3)多对多联系设有实体集A与实体集B,如果A中的一个实体,与B中可以有多个实体关联,反过来,B中的一个实体,与A中可以有多个实体关联,称A与B是多对多联系类型,记作(m∶n)。

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

1\数据库系统(Database System,DBS)由4个组成部分,即数据库(DB),数据库管理系统(DBMS),数据库应用和数据库管理员(DBA)2\能够唯一标识一个元组的属性或属性组,成为超码。

例如学生表的一个超码<学号+姓名+x 性别>3、候选码是最小的超码4、在一个关系中有多个候选码,可以选取一个候选码作为主码来唯一的标识每一个元组5、主码的值必须是唯一的和确定的,才能有效的标识一个元组。

主码不能取空置NULL6、参照完整性是确保数据库中不含有无效外码。

定义是:外码必须关系主码的有效值或是“空值“7、DBMS并发控制的任务是保证事物的执行是可串行化8、事物的隔离性是由DBMS的并发控制子系统实现的。

9、完全恢复模型是以后援副本和事务日志为基础的恢复方法。

10、在数据库系统中,角色管理机制可以简化授权和回收权限的工作量。

11、只转储上次备份后变化数据的方法称为增量转储。

12、两段封锁协议规定事物在锁增长阶段可以获得锁。

13、数据库的完整性是指数据的正确有效和相容性14、SQL中,域检查子句是check15、在数据库系统中,域完整性约束是对属性值有效性的约束。

16、允许用户把已获得的权限再转授给他人的SQL短语是with grant option选择题1、当关系R和S做自然连接时,能够保留R中不满足连接条件元组的操作是(左外连接)2、下列聚合函数中不忽略空值(NULL)的是(COUNT(*))3、当关系R和S自然联接时,能够把R和S原该舍弃的元组放到结果关系中的操作是(外连接)4、下列设计控制操作的短语,不正确的是(AGE=NULL)5、下面对关系性质中错误的是(表中任意两行可能相同)6、“元数据“是指(数据结构的描述)7、已知关系R和S,R交S等价于(S-(S-R))8、从关系中选择指定的属性组成新关系运算是(投影)9、若关系R1和R2的结构相同,各有10个元组,则R1并R2的元组个数为(小于等于20)10、设关系R和S的属性个数分别为2和3,则与关系代数表达式RΔΔS等价的是(σ1>4(R×S))11、当关系R和S自然连接时,能够把R和S中不满足连接条件的元组保留在结果关系总的运算是(全外连接)12、设关系R(A,B)和S(B,C)中分别有10个和15个元组,属性B是R的主码,则RS中元组数目范围是(0,15)13、设有关系R和S如图2.26所示,则关系R B<D S 的元组数目是(8)14、关系R和S分别有20、15个元组,则R并S、R-S、R交S的元组数不可能是(29,13,6)(注:R交S=R-(R-S))15、设关系R和S的属性数目分别是a和b,则关系R*S的属性数据是(a+b)16、SQL的COMIMIT和ROLLBACK语句的主要用途是实现事物的(原子性)17、“视图“可用于数据库系统的(安全性控制)18、P166、3、有图书关系R(书号,类别,定价)如果教材类图书的平均定价大于30,则显示“平均价格超过30元”,反之显示“平均价格不超过30元”并列出所有教材类的书名,编写一个SQL程序完成这个任务。

If(select avg(定价) from R where 类别=’教材类’)>30Print ‘平均价格超过30元’ElsebeginPrint ’平均价格不超过30元’Select 书名from R where 类别=’教材类’End4、依据上题中的关系R,如果所有教材类图书的平均价格高于30元,则执行循环,将高于平均值的教材类图书的价格下调1%,直至所有教材类图书的平均价格小于或等于30元为止。

编写一个SQL程序完成这个任务。

While(select avg(定价)from R where类别=’教材类’)>30BeginUpdate R set定价=定价*(1-0.01)where定价>(select avg(定价)from R where类别==’教材类’)If(select avg(定价)from R where类别==’教材类’)<=30BreakElseContinueEnd5、假设有银行帐户关系R(账号,客户姓名,余额)转账业务规定,当一个帐户的余额大于等于转出余额时,则执行转账业务,并通知客户转出的金额和账面余额,否则不执行转账操作,通知客户不转账的理由。

试编写转账业务的存储过程,该存储过程有转出账号,转入账号和转账金额3个参数,要求保证事物的原子性。

if exists(select name from sysobjects where name='TransferAccounts') drop procedure TransferAccountsgoCreate procedure TransferAccounts @TMoney numeric(6,2),@Account1char(20),@Account2 char(20)AsBegin transactionIf(select 余额from R where账号=@account1)>=@TMoneyBeginUpdate R set余额=余额-@TMoney where sid=@Account1Update R set余额=余额+@TMoney where sid=@Account2commit transactionEndElseBeginPrint'余额不足,转账失败!'Rollback transactionEnd6、有学生和成绩关系S(学号,姓名,性别,专业)R(学号,课程号,课程名称,分数)Create procedure @学号char(10),@课程号char(10)AsSelect S.学号,S.姓名,S.性别,R.课程名称,R.分数from S,R where S.学号=R.学号and S.学号=@学号and R.课程号=@课程号Go7、有产品关系R(产品号,品名,库存量),在R上创建一个触发器,实现当修改库存量时,测试修改后的值,若低于100,则发出来购买该产品的通知,弱高于1000,则发出’积压’的消息。

同时要求设计一个SQL程序,验证触发器的作用。

if exists(select name from sysobjects where name='Test')drop trigger TestgoCreate trigger Test on RFor updateASIf(select库存量from inserted)<100Print'需要购买'ElseIf(select库存量from inserted)>1000Print'库存积压'GOupdate R set库存量=库存量-1000go8、设有一组关系模式:部门(部门号,部门名称,电话号码) 职工(职工号,姓名,性别,职务,部门号)工程(项目号,项目名称,经费预算,部门号) 施工(职工号,项目号,工时)工资级别(职务,小时工资率)1)创建数据库MIS:if exists (select * from sysdatabaseswhere name ='MIS')drop database MISgocreate database MIS ----------------创建数据库go2)创建5个表,要求定义实体完整性和参照完整性。

Create table 部门(部门号 char(10) not null primary key,部门名称 char(10) not null,电话号码 char(15) not null)Create table 职工(职工号 char(10) not null primary key,姓名 char(20) not null,性别 bit not null,职务 char(10) not null,部门号 char(10) not null foreign key references 部门(部门号))Create table 工程(项目号 char(10) not null primary key,项目名称 char(20) not null,经费预算 numeric(10,2) not null,部门号 char(10) foreign key references 部门(部门号))Create table 施工(职工号 char(10) not null foreign key references 职工(职工号),项目号 char(10) not null foreign key references 工程(项目号)工时 numeric(4,1) not null)Create table 工资级别(职务 char(10) not null,小时工资率 numeric(6,2))3)按部门统计职工人数,按人数降序排列Select count(职工号) as num from 职工 group by 部门号 order by num4)修改职工表结构,增加一个“出生年月“属性,并填入数据Alter table 职工 add 出生年月 datetimeUpdate 职工 set 出生年月=getnow()5)检索经费预算超过平均预算的项目名称。

Select 项目名称 from 工程 where 经费预算>(select avg(经费预算) from 工程) 6)创建一个查询酬金的视图PAY,包含职工号、姓名、项目名称、工时、应发酬金(应发酬金=小时工资率*工时)Create view PAYAsSelect A.职工号,A.姓名,B.项目名称,C.工时,C.工时*D.小时工资率 as 应发酬金 from 职工 A,工程 B,职工 C,工资级别 D where A.部门号=B.部门号 and C.职工号=A.职工号and A.职务=D.职务7)统计每一个职工的酬金总额,按照降序排列Select A.职工号,sum(B.工时*C.小时工作率) from 职工 A,施工 B,工资级别 CWhere A.职工号=B.职工号 and A.职务=C.职务Group by A.职工号8)select A.姓名 from 职工 A,施工 B where A.职工号=B.职工号 and A.项目号=’P3’and B.工时>1009)将经费预算低于10万元的工程预算增加1倍Update 工程 set 经费预算=经费预算*2 where 经费预算<100000。

相关文档
最新文档