《数据库原理》教案高技_第1页
《数据库原理》教案高技_第2页
《数据库原理》教案高技_第3页
《数据库原理》教案高技_第4页
《数据库原理》教案高技_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、第1章 数据库系统基础知识1.1 数据库系统概述一、基本概念1数据2数据库(DB)3数据库管理系统(DBMS) Access小型 VFP SQL server Oracle大型DBMS MySQL DB24数据库系统(DBS) 数据库(DB) 数据库管理系统(DBMS) 开发工具 应用系统用户用户用户应用系统开发工具数据库管理系统操作系统数据库数据库管理员 二、数据库系统的体系结构 = 1 * GB3 单机结构:DBMS、数据库、开发工具、应用系统安装在一台计算机上。 = 2 * GB3 C/S结构:局域网结构客户机:装开发工具、应用系统服务器:装DBMS、数据库开发工具:VB、VC+、Del

2、phi、Powerbuilder、Java = 3 * GB3 B/S结构:Internet 结构服务器:装DBMS、数据库、开发工具、应用系统客户机:装IE即可开发工具:ASP、JSP、PHP、ASP.net三、数据管理的三个发展阶段人工管理文件系统数据库系统软硬件环境无磁盘、无OS出现磁盘、文件系统出现DBMS数据能否保存不能保存可以保存可以保存数据由谁管理由应用程序自己管理数据由文件系统管理数据由DBMS管理数据的共享程度不共享,一组数据只能对应一个应用程序。共享性差,一个数据文件只能对应一个应用程序。共享性高数据的独立性不独立,它是应用程序的一部分。独立性差数据库与应用系统完全分开四、

3、数据库管理系统的功能和组成1DBMS的功能:负责对数据库进行统一的管理与控制。 = 1 * GB3 数据定义:对数据库中各对象的结构进行定义。 = 2 * GB3 数据操纵:包括对数据库进行查询、插入、删除、修改等操作。 = 3 * GB3 数据控制:包括安全性控制、完整性控制、并发控制、数据库恢复。2DBMS的组成:DDL语言 DML语言DCL语言实用程序注意: = 1 * GB3 SQL集DDL,DML,DCL功能于一体; = 2 * GB3 SQL既是宿主型语言,又是嵌入式语言; = 3 * GB3 所有应用程序通过SQL语句才能访问数据库五、开发、管理、使用数据库系统涉及的人员开发单位

4、系统分析员:负责应用系统的需求分析和数据库设计程序员:编写代码使用单位数据库管理员(DBA):负责数据库的维护 最终用户 1.2 数据模型1.2.1 概念模型一、三个世界1现实世界:即具体事物2信息世界:对现实世界中的具体事物抽象为概念模型(即E-R图),E-R图与DBMS无关。3机器世界:将E-R图转换为某一种数据模型,数据模型与DBMS相关。二、实体及属性1实体:客观存在并可相互区别的人、事、物。2属性:3关键字(码、key):能唯一标识每个实体又不含多余属性的属性组合。一个表的码可以有多个,但主码只能有一个。例:借书表(学号,姓名,书号,书名,作者,定价,借期,还期)规定:学生一次可以借

5、多本书,同一种书只能借一本,但可以多次续借。4实体型:即二维表的结构 例 student(sno,sname,ssex,sage,sdept)5实体集:即整个二维表三、两实体集间实体之间的联系1:1联系:如果对于实体集A中的每一个实体,实体集B中至多有一个实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系。记为1:1。1:n联系:如果对于实体集A中的每一个实体,实体集B中有n个实体(n0)与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体B有一对多联系。记为1:n。m:n联系:如果对于实体集A中的每一个实体,实体集B中有n个实体(n0)

6、与之联系,反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m0)与之联系,则称实体集A与实体B具有多对多联系。记为m:n。四、概念模型:常用E-R图表示。实体型:属性:联系:说明: E-R图作为用户与开发人员的中间语言。 E-R图可以等价转换为层次、网状、关系模型。例:某商业集团管理系统涉及两个实体型,实体型“商店”有商店编号、商店名、地址和电话属性;实体型“顾客”有顾客编号、姓名、性别、出生年月和家庭地址属性。顾客与商店间存在着消费联系。假定一位顾客可去多个商店购物,多位顾客可以前往同一商店购物,必须记下顾客每次购物的消费金额。(1)试为此系统设计E-R图。(2)将此E-R图转换成

7、关系模式,并注明每个关系模式的主码和外码。性别电话地址商 店顾 客购买商店编号商店名地址电话地址顾客编号姓名电话地址出生年月家庭地址MN消费金额1.2.2 数据模型一、层次模型:用树型结构表示实体之间的联系。 = 1 * GB3 每个节点代表一个实体型。 = 2 * GB3 只能直接处理一对多(含一对一)的实体关系。 = 3 * GB3 查找层次数据库中的记录,速度较慢。二、网状模型:用图结构表示实体之间的联系。 = 1 * GB3 每个节点代表一个实体型。 = 2 * GB3 可以处理多对多的实体关系。 = 3 * GB3 查找网状数据库中的记录,速度最快。三、关系模型:用二维表表示实体之间

8、的联系。 = 1 * GB3 关系模型是建立在严格的数学概念的基础上的; = 2 * GB3 关系模型的存取路径对用户透明; = 3 * GB3 查找关系数据库中的记录,速度最慢。小结:数据有三种模型,DBMS就有三种类型,DB亦有三种类型。思考与练习1学校有若干个系,每个系有若干班级和教研室,每个教研室有若干教员,其中有的教授和副教授每人各带若干研究生。每个班有若干学生,每个学生选修若干课程,每门课程有若干学生选修。用E-R图画出概念模型。第2章 关系数据库系统2.1 关系模型的数据结构 关系:一个关系就是一个二维表; = 2 * GB3 关系模式:在实体型的基础上,注明主码。 = 3 *

9、GB3 元组:二维表的一行,即实体; 码、候选码:一个关系模式可以有多个候选码。 主码:任选候选码中的一个。 主属性:主码中包含的各个属性。 非主属性:不包含在主码中的各个属性。 外码:设F是关系R的一个属性,不是R的主码,但却是另一个关系S的主码,则称F是关系R的外码。例:student ( sno, sname, ssex, sage, sdept) Sc ( sno, cno, grade)Sc的主码为:(sno,cno);外码为:sno2.2 关系的完整性1实体完整性:指关系的所有主属性都不能取空值。 注意:实体完整性不仅仅是主码整体不能取空值。2参照完整性:指一个关系外码的取值必须是

10、相关关系中主码的有效值或空值。例:班级( 班号,人数) 学生(学号,姓名,性别,密码,班号)在学生表中,班号的取值必须是班级表“班号”的值或空值。其中班级称为“主键表”,学生称为“外键表”。3为了保证参照完整性,应该对数据库的修改加以限制,包括: 插入约束 删除约束(限制删除、级联删除) 更新约束(限制更新、级联更新)2.3 数据库设计(见P137)2.3.1 数据库设计的步骤一、数据库设计的步骤 需求分析:了解分析用户的需要、要求。 概念结构设计:根据需求分析的结果画总体E-R图。 逻辑结构设计:将总体E-R图转换为关系模式,并优化。 = 4 * GB3 物理结构设计:即决定为表中的哪些列创

11、建聚集索引还是非聚集索引。 数据库实施:定义数据库结构,组织数据入库,编写应用程序。 = 6 * GB3 数据库运行与恢复二、超类与子类教师教授副教授讲师助师 职工飞行员管理员工人 超类:包含子类的公共属性;子类:包含超类的主码以及子类本身特有的属性。职工(职工号,姓名,性别,密码,出生年月,身份证号)飞行员(职工号,飞行小时,健康检查,飞机型号)管理员(职工号,职务,职称)工人(职工号,技术等级)2.3.2 概念结构设计一、局部E-R图设计 1确定局部范围 通常把系统涉及的各个部门或各个主要功能作为局部。2联系的属性:必须包含相关联的各实体型的主码。3联系的主码1:1联系:可以是相关联的任一

12、实体型的主码。1:n联系:必须是n方实体型的主码。m:n联系:必须是相关联的各实体型的主码之和。二、合并成总体E-R图1消除各局部E-R图的冲突问题。2按公共实体名合并,生成初步E-R图。3消除冗余的属性和冗余的联系,生成总体E-R图。2.3.3 逻辑结构设计1把每个实体型转换为一个关系模式。21:1联系:可以消化到相关联的任一实体型对应的关系模式中。NLXMXHBHXHBHRS班级管理班长 11班长( XH, XM, NL,BH)班级(BH,RS)31:n联系:可以消化到n方实体型对应的关系模式中。 XHXMNL 学生 nXH组成BH1班级BHRS学生(XH,XM,NL,BH)班级(BH,R

13、S) 4m:n联系:必须转换为一个关系模式,并且不能消化。sagessexsname例:sdeptcnogradesno选修理工creditcnamecno课程sno学生 mn学生(sno,sname, ssex, sage, sdept)课程(cno, cname,credit)选修(sno, cno, grade)5多元联系:不能消化例:供应商m供应 nmk零件产品2.3.4 物理结构设计任务:在逻辑设计的基础上,为每个关系模式选择合适的存储结构与存储方式。 = 1 * GB3 选择存储结构:即决定每个表的记录顺序。 = 2 * GB3 选择存取方式:即决定为哪些属性建立非聚集索引,以便加

14、快查找速度。思考与练习1现有一个关系模式:借阅(书号,书名,库存数,读者号,借期,还期),假如同一本书允许一个读者多次借阅,但不能同时对一种书借多本。则该关系模式的主码是( ),主属性是( )。2某旅行社管理系统涉及的部分信息如下:(1)景点:景点编号、景点名称、地点、景点描述(2)线路:线路编号、线路名称、线路描述(3)导游:工号、姓名、等级(4)团队:团队编号、人数、开始日期、截止日期其中:每条线路由多个景点组成,不同线路的景点存在交叉;每条线路有多名导游,但一名导游只负责一条线路;每条线路可同时存在多个旅游团队,但每个团队只旅游一条线路。(1)建立一个反映上述局部应用的E-R图,要求标注

15、联系类型(可省略实体属性)。(2)将E-R图转换为关系模式,要求标注每个关系模式的主键和外键。3假设要为某个工厂的物资管理设计一个数据库。物资管理涉及的实体有:仓库(仓库号,仓库面积,电话号码)零件(零件号,名称,规格,单价,描述)供应商(供应商号,姓名,地址,电话号,账号)项目(项目号,预算,开工日期)职工(职工号,姓名,年龄,职称)这些实体之间的联系如下: = 1 * GB3 一个仓库可以存放多种零件,一种零件可以存放在多个仓库中。 = 2 * GB3 一个仓库有多个职工当仓库保管员,一个职工只能在一个仓库工作。 = 3 * GB3 职工之间具有领导被领导的关系,即仓库主任领导若干保管员。

16、 = 4 * GB3 一个供应商可以供应多种零件,一种零件可以由多个供应商供应。 = 5 * GB3 一个项目用到多种零件,而一种零件适用于多个项目。设想一下如何设计E-R图,将其转换成关系模式,并画出数据结构图。第3章 SQL Server数据库应用基础3.1 SQL server2000常用工具 服务管理器 企业管理器 查询分析器3.2 创建和使用数据库一、数据库文件(P33)1一个数据库至少有一个主要数据文件和一个事务日志文件。如果数据库很大,可以使用一个主要数据文件,多个次要数据文件和多个事务日志文件。用来存放数据库的各类对象2主要数据文件(.mdf )次要数据文件(.ndf ) 事务

17、日志文件(.ldf ):用来记录对数据库对象的所有更新操作。3文件组:当多个数据文件组成一个文件组时,就可以对它们整体进行管理。二、创建和使用数据库1创建数据库Create database 数据库名2打开数据库Use数据库名3删除数据库 Drop database数据库名三、管理数据库1分离和附加数据库2备份和还原数据库3数据的导入和导出 3.3 创建和使用数据表一、数据类型(P61)1整型取值范围所占字节数Bigint8Int4Smallint-32768 +327672Tinyint02551bit0,1即逻辑型2实型 = 1 * GB3 精确数值型Decimal(p,s)Numeric

18、(p,s)精度P:表示全部数字的位数(不计小数点和正负号)S:表示小数位数,若缺省S,则默认为0P-S:表示整数位数 = 2 * GB3 近似数值型Real 精确到7位有效数字 Float 精确到15位有效数字3字符型char(n) 定长字符型,n表示字符数,取值为18000。若缺省n,则默认为1。varchar(n) 变长字符型text 可以存储任意长的字符串标准字符型:每个英文字母、数字算1个字符,每个汉字算2个字符,每个字符占1个字节。4统一码字符型统一码字符型:每个英文字母、数字、汉字算1个字符,每个字符占2个字节。nchar(n) n表示字符数,取值为14000。nvarchar(n

19、)ntext 可以存储任意长的统一码字符串。例:设某表的结构如下: no char(6), name nchar(6)则no可以赋予3个汉字,name可以赋予6个汉字5二进制型:存放用十六进制数表示的图像、声音数据。binary(n) 定长二进制型,n表示字节数,取值为18000。varbinary(n) 变长二进制型image注意:十六进制数以0 x开头。6日期时间型Datetime、Smalldatetime = 1 * GB3 若省略日期部分,则默认为:1900-1-1若省略时间部分,则默认为:00:00:00 = 2 * GB3 日期格式:yyyy-mm-dd 时间格式:hh:mm:s

20、s7贷币型Money:占8个字节,保留4位小数Smallmoney:占4个字节,保留4位小数字符串常量:由单引号括住的字符序列贷币型常量:可以是一个实型常量二、使用企业管理器创建表1在一个表中只能定义一个标识字段。2只有整型和精确数值型(decimal、numeric)字段才能指定为标识字段。3把某个字段指定为公式字段。三、设置约束1主键约束:每个表中只能有一列或一个组合被指定为主键,主键中的各个列不能为空值。2外键约束:创建外键约束,就是定义两个表的永久关联,这两个表分别称为主键表、外键表。外键表中外键的值只能是主键表中主键的有效值或空值。3唯一性约束:主键约束与唯一性约束的区别是: 在一个

21、表中只能定义一个主键约束,但可定义多个唯一性约束; 指定为主键约束的列不能取空值,但指定为唯一性约束的列允许取空值。4检查约束:用于限制输入到一列或多列的值的范围,保证数据库的数据完整性。5默认值约束:思考与练习1使用企业管理器创建一个名为data的数据库,该数据库包含1个主要数据文件data1. mdf,2个次要数据文件data2.ndf、data3.ndf,1个事务日志文件data4.ldf,三个数据文件分别放在C、D、E盘上,并组成primary文件组。 事务日志文件放在E盘上。2什么是主键约束?什么是唯一性约束?两者有什么区别?3什么是外键,外键有什么作用?第4章 SQL语言4.1 S

22、QL语言的特点1SQL语言集数据定义、数据查询、数据操纵、数据控制的功能于一体。动词数据定义CREATE、DROP、 ALTER数据查询SELECT数据操纵INSERT、UPDATE、DELETE数据控制GRANT、REVOKE、DENY2所有的DBMS都支持SQL语言。4.2 数据定义1创建表create table 表名(属性名 类型,属性名 类型) = 1 * GB3 指定标识字段:identity(标识种子,标识增量) = 2 * GB3 指定公式字段:属性名 as 表达式例:create table student (no int identity(1,1),name char(6)

23、,chi smallint,mat smallint,score as chi+mat)2删除表drop table表名, 表名数据查询一、select语句select */表达式表into 新表名from 表名,表名where 条件group by 属性名having 条件order by属性名Asc/Desc1Select 子句 = 1 * GB3 *代表所有属性名 = 2 * GB3 若一个属性名来自多个表,则属性名前须冠以表名,格式为:表名. 属性名 = 3 * GB3 设置表达式的别名: 表达式 As 别名 = 4 * GB3 限制查询结果的记录行数:all 返回全部记录top n

24、返回前面n号记录distinct 表示取消重复行说明:top n只能放在关键字select的后面; all、distinct只能放在关键字select或聚合函数的后面。2Where 子句 = 1 * GB3 in的格式:属性名 not in (常量,常量) = 2 * GB3 like的格式:属性名 not like 通配字符串 通配符有: % 表示0个或多个字符 - 表示1个字符 = 3 * GB3 在Where 子句中指定连接:Where 表名1. 属性名=表名2. 属性名3Order by子句order by属性名1 Asc/Desc, 属性名2 Asc/Desc4聚合函数 = 1 *

25、GB3 sum(属性名):纵向求数值型属性之和。 = 2 * GB3 avg(属性名) = 3 * GB3 count(*) 返回表的记录行数(含重复行)。count(属性名) 返回指定列中取非NULL值的单元格数目。 count(distinct 属性名) 返回指定列中取非NULL值、非重复的单元格数目。 = 4 * GB3 max(属性名) = 5 * GB3 min(属性名)5Group by子句使用Group by子句时,Select 子句只能使用分组项字段和聚合函数例:以性别为分组项,求每一组的平均年龄。Select ssex, avg(sage) as 平均年龄From stude

26、ntGroup by ssex6Having子句 = 1 * GB3 Having子句只能跟在Group by子句之后,且只能使用聚合函数和分组项字段。 = 2 * GB3 where子句放在Group by子句之前,甚至可以没有Group by子句;且不能包含聚合函数。例:以系别为分组项,查询学生平均年龄大于19岁的系的系名,平均年龄。Select sdept,avg(sage) as平均年龄From studentGroup by sdeptHaving avg(sage)197into子句功能:将查询结果保存到新的基表中。二、连接查询1查询的分类单表查询连接查询嵌套查询2连接查询:在wh

27、ere子句中指定连接 = 1 * GB3 内连接:where 表名1.属性名=表名2.属性名 = 2 * GB3 自身连接:给一个表取两个别名,where子句的格式为:where 别名1.属性名=别名2.属性名 = 3 * GB3 左外连接:where 表名1.属性名*=表名2.属性名意义:查询结果包含了表1的全部记录和表2满足条件的记录。 = 4 * GB3 右外连接:where 表名1.属性名=*表名2.属性名意义:查询结果包含了表2的全部记录和表1满足条件的记录。三、嵌套查询 = 1 * GB3 嵌套查询的特点每级查询的from子句一般只包含一个表名。一个嵌套查询总可以分解为若干个单表查

28、询,总可以改写成连接查询。若查询结果显示的属性名来自一个表,才可以写成嵌套查询。子查询不能使用order by子句,order by只能用于最顶层的查询。 = 2 * GB3 在where子句中指定子查询where 属性名 not in(子查询):子查询返回一列多行。where 属性名=(子查询):子查询返回一列一行。where not exists(子查询):子查询返回多列多行。数据操纵1insert语句(1)插入一行记录insert into 表名(属性名表) values(表达式表)(2)插入多行记录insert into 表名(属性名表)子查询例:insert into student

29、select * from student12update语句update 表名 set 属性名=值,属性名=值 where 条件缺省where子句,默认为更新全部记录。3delete语句delete from 表名 where 条件4.5 安全性控制一、相关知识链接1安全性控制:使非法用户不能访问数据库中的数据,合法用户只能访问数据库中授权的数据。2一切权限来自sa,sa可以创建普通登录名,并可以把普通登录名指定为一个或多个数据库的用户。3在服务器上创建SQL Server登录名U1、U2、U3,并把它们指定为数据库stu的用户(不要选db_owner)。二、权限的种类1系统权限:包括cre

30、ate database、create table、create view、create procedure2对象权限:指对表、视图、存储过程的操作权限。各种对象的操作权限见下表。对象操作权限属性列select、update表和视图select、insert、update、delete存储过程execute三、使用企业管理器设置数据库用户的权限选择要设置权限的数据库,再展开“用户”节点。四、系统权限的授予和回收grant all|系统权限 ,.n to 用户名表 with grant optionrevoke all|系统权限 ,.n from 用户名表 注意: = 1 * GB3 all代表

31、所有的系统权限。 = 2 * GB3 create database只能在数据库master中执行,且只能是master的用户。 = 3 * GB3 with grant option表示被授权的用户可以将权限授予其它用户。五、对象权限的授予和回收grant all|对象权限 ,.n on 表名|视图名|存储过程名 to 用户名表 with grant optionrevoke all|对象权限 ,.n on 表名|视图名|存储过程名 from 用户名表思考与练习一、定义表1SQL server中建立一个数据库stu。2使用企业管理器中创建如下三个表。Student表Snosnamessexs

32、agesdept95001李勇男20CS95002刘晨女19IS95003王名女18MA95004张立男18CSCourse表cnocnamecredit1数据库原理42操作系统33Java程序设计34汇编语言2Sc表SnoCnograde9500118595001288950013829500219095002380二、查询表1查询全体学生的姓名及出生年份。2查询年龄小于19岁的男学生的学号,姓名。3查询选修了课程的学生人数。 提示:select count(distinct sno) from sc4查询所有选修过课的学生的学号、姓名。5查询数学系(MA)、计算机科学系(CS)的学生的姓名

33、和性别。6查询年龄最大的2名学生的学号和姓名7查询姓“刘”的学生的学号、姓名、系别。8以性别为分类项,查询每一类的平均年龄。9查询选修了课程名为“操作系统”的学生的学号、姓名。10查询年龄低于平均年龄的所有学生的姓名、系别三、操纵表1在企业管理器中创建一个新表student1:Snosnamessexsagesdept95005王虹女19CS95006万亮男20MA2将student1表插入到student表的后面。提示:insert into student select * from student1 3将 (95020,陈冬,男,18,IS) 插入到student表中。4删除studen

34、t1表中的所有记录,使之成为空表。5把student表中所有男生记录复制到空表student1中。6把student表中所有女生记录复制到新表student2中。7将所有学生的年龄增加1岁。8将计算机科学系全体学生的成绩置0。 提示:update sc set grade=0 where sno in (select sno from student where sdept=CS)9删除学号为95020的学生记录。10删除计算机科学系所有学生的选课记录。四、安全性控制首先在服务器创建登录账户U1、U2、U3、U4,并把它们指定为数据库stu的用户1把查询course表权限授给用户U1。2把查询

35、、插入course表的权限授给用户U2和U3。3把查询course表和修改课程号的权限授给用户U4。4把用户U1查询course表的权限收回。5把用户U4修改course表课程号的权限收回。6给用户U1授予创建数据库的权限。7把在数据库stu创建表、创建视图的权限授给用户U2,U3。第5章 数据库对象管理51 视图一、视图的特点: = 1 * GB3 视图只有结构,没有记录,是虚表; = 2 * GB3 一个视图总对应着一个select语句; = 3 * GB3 对视图的查询、更新,实际上是对基本表的查询、更新。二、定义视图:1创建视图:Create view 视图名 (属性名,属性名)As

36、子查询with check option说明:视图的属性个数必须与子查询中select子句的表达式个数相同。2删除视图:Drop view 视图名,视图名三、查询视图:select */表达式表from 视图名,视图名where 条件group by 属性名order by属性名Asc/Desc四、操纵视图:1向视图插入一条记录insert into 视图名(属性名表) values(表达式表)2修改视图中的数据update视图名set 属性名=值,属性名=值 where 条件缺省where子句,默认为更新全部记录。3删除视图中的记录 delete from 视图名 where 条件52 索引

37、一、索引的概念: = 1 * GB3 如果把数据表比作一本书,那么表的索引就是这本书的目录。可见,索引使用户能快速访问数据表的特定信息。 = 2 * GB3 索引包括两项:索引字段值、原记录号 = 3 * GB3 索引必须依附于某个基本表,不能单独存在。二、索引的类型:聚集索引:影响数据表的记录顺序非聚集索引:不会影响数据表的记录顺序注:一个表只能建立一个聚集索引,但可以建立若干个非聚集索引。三、创建索引1自动创建索引:如果在数据表的某个属性设置主键约束或唯一约束,则系统将在这些属性上自动创建唯一索引。自动创建的索引随约束的存在而存在,随约束的消失而消失。2使用SQL语句创建索引Create

38、unique clustered/nonclustered index 索引名On 表名(属性名asc/desc, 属性名asc/desc)注: = 1 * GB3 若未指定clustered,则创建非聚集索引; = 2 * GB3 若未指定排序方式,则为ASC;四、删除索引:Drop index 索引名,索引名思考题:创建主键时,如果使主键字段值不影响数据表的记录顺序?53 T-SQL语言基础一、常量字符型:由单引号括住,例:china整型实型日期型:由单引号括住的具有日期或时间意义的序列,格式为:yyyy-mm-dd, hh:mm:ss二、变量 局部变量:由用户定义和赋值,以 开头。 全局

39、变量:由系统定义和赋值,以 开头。1声明局部变量Declare 变量名 类型例:declare a int,b char(5)2给局部变量赋值 使用set语句: Set 变量名=表达式 使用select 语句 Select 变量名=表达式,,变量名=表达式 from 表名 若表达式中含有属性名,则必须使用from子句。例:declare a char(5),b char(6)Select a=95001 ,b=王名或:select a=sno,b=snameFrom student3.输出表达式的值: 使用print 语句 Print 表达式 使用select语句 Select 表达式,表达式

40、 from 表名例:select sno as 学号,sname as 姓名From student等价于:select 学号=sno, 姓名=sname From student三、流程控制语句1beginend语句Begin语句1 :语句nEnd2if-else语句 = 1 * GB3 格式:if 逻辑表达式 语句1 else 语句2 = 2 * GB3 当逻辑表达式包含子查询时,子查询必须用括号括住。 属性名 in (子查询) 子查询返回一列多行 属性名 = (子查询) 子查询返回一列一行 Exists(子查询) 子查询返回多列多行3while语句 = 1 * GB3 格式:While逻

41、辑表达式Begin语句组End = 2 * GB3 专用于循环体的语句:Break 强制退出while语句,执行其后续语句。Continue 返回while语句的入口。Break、Continue必须放在循环体内,并常与if-else语句结合使用。4Waitfor 语句54 存储过程1什么叫存储过程?将一组SQL语句,以一个名称存储在数据库中,就形成存储过程。2创建存储过程Create proc存储过程名形参名 类型 outputAs SQL语句序列例:create proc proc1a int,b int,c int outputas set c=a+bgo其中a,b称为输入参数,c称为输

42、出参数。输入参数用于接收外界提供的数据,输出参数用于将参数值传递给外界。3执行存储过程Exec 存储过程名 常量| 变量名| 变量名 output: 执行无返回值的存储过程Exec 变量名1=存储过程名 常量| 变量名| 变量名 output :执行有返回值的存储过程说明: = 1 * GB3 当实参为带output的局部变量时,形参必须为带output的局部变量。 = 2 * GB3 使用return语句时,一个存储过程只能返回一个整数值,格式为:Return (整数值)例:declare result intexec proc1 50,100,result outputprint resu

43、lt4删除存储过程Drop proc存储过程名, 存储过程名5查看存储过程exec sp_helptext存储过程名55 触发器一、维护数据完整性的措施:创建约束 基于一个表创建创建触发器二、触发器类型:1after触发器: = 1 * GB3 当对表实施插入、删除或修改操作以后,就自动触发after insert、after delete或after update触发器,并执行as后面的SQL语句。 = 2 * GB3 一个表可以建立多个after insert、after delete、after update触发器。 = 3 * GB3 after触发器只能基于表创建。2Instead

44、of触发器: = 1 * GB3 当对表实施插入、删除或修改操作之前,就自动触发Instead of insert、Instead of delete、Instead of update触发器,并执行as后面的SQL语句。 = 2 * GB3 一个表或视图只能建立一个instead of insert、instead of delete、instead of update触发器。 = 3 * GB3 instead of触发器基于表或视图创建。三、创建触发器:Create trigger 触发器名On 表名|视图名For | after | Instead of 触发操作As SQL语句序列说

45、明: = 1 * GB3 for 或after,表示创建after触发器。 = 2 * GB3 触发操作是指Insert、update、delete 中的一个或多个。四、触发器的应用1两个临时表:inserted、deleted当触发器被创建时,将生成两个临时表;当触发器被触发时,将向临时表插入有关记录。 = 1 * GB3 当执行insert语句后,新记录插入到inserted表中。 = 2 * GB3 当执行delete语句后,被删记录插入到deleted表中。 当执行update语句后,原记录插入到deleted表中,新记录插入到inserted表中。2在student表中创建一个aft

46、er触发器,限制ssex只能输入男或女。若输入其它,将回滚插入的记录。CREATE TRIGGER trig1 ON studentafter INSERT AS if exists (select * from inserted where ssex not in(男,女)beginprint 性别只能输入男或女rollbackend3在student表中创建一个after触发器,监控删除的学生记录。若被删的学生在SC表有选修课,则回滚被删记录。CREATE TRIGGER trig2 ON studentafter DELETE ASif exists(select * from dele

47、ted,sc where deleted.sno=sc.sno)beginprint 该学生已选修过课,不能删除!rollbackend4在student表中创建一个after触发器,限制sage的变动只能在1岁以内。CREATE TRIGGER trig3 on studentafter UPDATE ASif exists( select * from inserted,deleted where inserted.sno=deleted.sno and abs(inserted.sage-deleted.sage)1)beginprint 年龄变动不能超过1岁!rollbackend五、

48、删除触发器Drop trigger 触发器名,触发器名思考与练习一、使用T-SQL语言编程1将student表第1条记录的各属性值存入局部变量ae中。2分别用select 语句与print 语句 输出局部变量ae的值。3显示student表中年龄最大的学生的姓名、系别。4查询student表中是否有学号为95001的学生,如果有,则输出该学生的记录, 否则,输出“没有学号为95001的学生”5设局部变量a=12,b=100,c=8 ,请编程输出它们的最大者。6求100以内的偶数之和。二、已知“图书管理”数据库包括如下3个表,请按要求创建存储过程。书籍管理(书籍ID,书名,出版社,作者姓名,在馆

49、数量)读者管理(读者ID,读者姓名,联系电话,家庭住址)借阅信息(借阅编号,书籍ID,读者ID,借阅日期,还书日期,借书数量)1创建一个存储过程proc1,要求它带有三个输入参数,用于接受外界提供的初值,要求输出最大值。试执行一次存储过程。2创建一个无参存储过程proc2,功能是:返回读者“陈里媚”所借图书的名称、出版社、作者和在馆数量。试执行一次存储过程。3创建一个带参数的存储过程proc3,要求:当用户输入一个读者姓名时,若该读者存在,就显示该读者的姓名、联系电话和家庭住址;若该读者不存在,则返回“查无此人”的提示信息。试执行一次存储过程。三、对“图书管理”数据库创建触发器1在“借阅信息”

50、表创建一个After触发器,命名为:trig1。要求插入每本书都要满足“还书日期大于借书日期”,否则提示“还书日期不能小于借书日期”,并不允许插入。2在“书籍管理”表中创建一个After触发器,命名为:trig2,要求每当向“书籍管理”表中删除一条书籍记录时,就自动删除“借阅信息”表中该书籍的借阅记录。3在“读者管理”表中创建After触发器,命名为:trig3,要求每当删除“读者管理”表中一条记录时,就检查该读者在“借阅信息”表是否有借阅书籍,若有,则回滚“读者管理”表被删记录,并显示提示信息。第9章 SQL Server的权限管理一、两种身份验证模式:仅windows模式:用户只能使用windows登录名登录SQL Server混合模式:用户可以使用windows登录名或SQL Server登录名登录SQL Server二、两种身

温馨提示

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

评论

0/150

提交评论