数据库原理与应用复习资料.docx
- 文档编号:9160130
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:19
- 大小:24.50KB
数据库原理与应用复习资料.docx
《数据库原理与应用复习资料.docx》由会员分享,可在线阅读,更多相关《数据库原理与应用复习资料.docx(19页珍藏版)》请在冰豆网上搜索。
数据库原理与应用复习资料
数据库原理与应用复习资料
第一章
1以数据为中心的应用系统特点?
A设计的数据量大
B数据不随程序的结束而消失
C数据可以被多个应用程序共享
2文件管理系统的缺点有哪些?
A编写应用程序不方便
B数据冗余不可避免
C应用程序有依赖性
D不支持对文件的并发访问
E数据间的联系弱
F难以按不同的用户需要表示数据
G无安全控制功能
3数据管理系统的优点有哪些?
A将相互关联的数据集成在一起
B较少的数据冗余
C程序和数据相互独立
D表征数据的安全可靠
E最大限度地保证数据的正确性
F数据可也共享并能保证数据的一致性
4什么事数据库系统?
答:
数据库系统就是基于数据库的计算机应用系统。
它包括四个部分:
数据库,数据库管理系统,应用程序和系统管理。
第二章
5什么是数据模型?
答:
模型是对事物,对象,过程等客观系统中感兴趣的内容的模拟和抽象表达,是理解系统的思维工具。
数据模型也是一种模型,它是对现实世界数据特征的抽象。
6实体联系的种类(E—R联系)的种类?
A一对一联系
B一对多联系
B多对多的联系
7三级模式结构的含义如下:
A内模式:
最接近物理储存,也就是数据的物理储存方式。
B外模式:
最接近用户,也就是用户所看到的数据视图。
C概念模式:
介于内模式和外模式之间的数据视图。
第三章
8关系模型的完整性包括?
A实体完整性,它是指关系数据库中所有的表都必须是主码,而且表中不允许存在如下记录(无主码的记录,主码值相同的记录)
B参照完整性,它是指多个实体或表之间的关联关系。
C用户自定义完整性,它是指关系中属性的取值范围,也就是属性的域,即限制关系中的属性取值的类型和取值的范围,防止属性的值与应用语义矛盾。
第四章
9SQL语言的特点?
A一体化, B高度非过程化, C简洁, D能以多种方式使用
10SQL语言的功能概述?
答:
四个部分:
数据定义功能、数据控制功能、数据查询功能和数据操纵功能。
11SQL的数据类型?
答:
数值型,字符串型,日期时间型,货币型。
12定义基本表与删除?
CREATTABLE<表名>(
<列名> <数据类型> [列级完整性约束定义]
{、<列名> <数据类型> [列级完整性约束定义]...}
[、表级完整性约束])
13在列级完整性约束处可以定义如下约束:
NOTNULL:
限制列取值非空。
DEFAULT:
给定列的默认值,使用形式为:
DEFAULT常量。
UNIQUE:
限制列的取值不能重复。
CHECK:
限制列的取值范围,使用形式为:
CHECK(约束表达式)
PRIMARYKEY:
制定本列为主码。
查询分析
1.查询语句的基本结构可描述为:
select<目标列名序列> --需要哪些列
from<数据源> --来自于哪些表
[where<检索条件表达式>] --根据什么条件
[groupby<分组依据列>]
[having<组提取条件>]
[orderby<排序依据列>]
如:
查询全体学生的学号与姓名。
selectSno,Sname
fromStudent
查询全体学生的记录。
selectSno,Sname,Ssex,Sdept,
fromStudent
等价于:
select*fromStudent
若欲查表中学生的出生年份,但表中却为年龄数,可以如下编写语句:
selectSname,2001-Sage
fromStudent
若查询全体学生的姓名和出生年份,并在出生年份列前加入一个列,此列的每行数据均为”YearofBirth"常量值。
编写为:
(*)
selectSname,'YearofBirth',2001-Sage
fromStudent
2.改变列标题的语法格式为:
列名/表达式[as]列标题
或
列标题=列名/表达式
如上(*)式中的代码可写成:
selectSname姓名,'YearofBirth'出生年份,2001-Sage年份,
fromStudent
3.在数据库表中本来不存在取值完全相同的元组,但对列进行了选择后,就有可能在查询结果中出现取值完全相同的行。
取值相同的行在结果中是没有意义的,因此应消除这些取值相同的行。
如要去掉SC中重复的行,可以编写命令为:
selectdistinctSnofromSC
4.查满足条件的元组
查询满足条件的元组是通过where子句实现的。
where子句常用查询条件如下:
·比较(比较运算符) =、>、>=、<、<=、<>(或!
=)、not+前述比较运算符
·确定范围 betweenand、notbetweenand
·确定集合 in、notin
·字符匹配 like、notlike
·空值 isnull、isnotnull
·多重条件(逻辑谓词) and、or
查询计算机系全体学生的姓名。
selectSnamefromStudentwhereSdept='计算机系'
查询所有年龄在20岁以下的学生的姓名及年龄。
selectSname,SagefromStudentwhereSage<20
或
selectSname,SagefromStudentwherenotSage>=20
查询考试成绩不及格的学生的学号。
selectdistinctSnofromSCwhereGrade<60
5.确定范围
如查询年龄在20-23岁之间的学生的姓名、所在系和年龄。
selectSname,Sdept,SagefromStudentwhereSage>=20andSage<=23
6.确定集合
in是一个逻辑运算符,可以用来查找值属于指定集合的元组。
in的语法格式为:
列名[not]in(常量1,常量2,...常量n)
如查询信息系、数学系和计算机系学生的姓名和性别。
selectSname,SsexfromStudentwhereSdeptin('信息系','数学系','计算机系')
此句等价于:
selectSname,SsexfromStudent
whereSdept!
='信息系'andSdept!
='数学系'andSdept!
='计算机系'
7.字符匹配
like用于查找指定列中与匹配串常量匹配的元组。
运算符的一般形式为:
like运算符的一般形式为:
列名[not]like<匹配串>
匹配串中可包含如下四种通配符:
·-(下划线):
匹配任意一个字符。
·%(百分号):
匹配0和或多个字符。
·[]:
匹配[]中的任意一个字符。
·[^]:
不匹配[]中的任意一个字符。
如:
(1).查询姓“张”的学生的详细信息。
select*fromStudentwhereSnamelike'张%'
(2).查询学生表中姓“张”、“李”和“刘”的学生的情况。
select*fromStudentwhereSnamelike'[张李刘]'
(3).查询名字中第2个字为“小”或“大”字的学生的姓名和学号。
selectSname,SnofromStudentwherelike'-[小大]%’
(4).查询所以不姓“刘”的学生。
selectSnamefromStudentwhereSnamenotlike'刘%'
(5).查询学号的最后一位不是2、3、5的学生的情况。
select*fromStudentwhereSnolike'%[^235]'
8.涉及空值的查询
空值(null)在数据库中有特殊的含义,他表示不确定的值。
判断取值为空的语句格式为:
列名isnull
判断取值不为空的语句格式为:
列名isnotnull
如:
(1)查询无考试的学生的学号和相应的课程号。
selectSno,SnofromSCwhereGradeisnull
(2)查询无考试的学生的学号和相应的课程号。
selectSno,SnofromSCwhereGradeisnotnull
9.多重条件的查询
在where子句中可以使用逻辑运算符and和or来组成多条件查询。
如查询计算机系年龄在20岁以下的学生的姓名。
selectSnamefromStudent
whereSdept=‘计算机系’andSage<20
10.对查询结果进行排序
asc表示对列进行升序排序,desc表示对列进行降序排序。
如果没有指定排序方式,则默认的排序方式为升序排序。
(1).将学生按年龄升序排列。
select*fromStudentorderbySage
(2).查询选修了课程“c02”的学生的学号及成绩,查询的结果按成绩降序排列
selectSno,GradefromSCwhereCno='c02'orderbyGradedesc
(3).查询全体学生的信息,查询结果按所在系的系名升序排列,同一系的学生按年龄的降序排列
select*fromStudent
orderby Sdept,Sagedesc
11.使用计算函数汇总数据
计算函数也称为集合函数或聚合函数、聚集函数,其作用是对一组值进行计算并返回一个单值。
SQL提供的计算函数有:
·count(*):
统计表中元组的个数。
·count(<列名>):
统计本列值的个数。
·sum(<列名>):
计算列值总和(必须是数值型列)。
·avg(<列名>):
计算列值平均值(必须是数值型列)。
·max(<列名>):
求列最大值。
·min(<列名>):
求列最小值。
计算函数可以计算满足where子句条件的记录。
(1).统计学生的总人数
selectcount(*)fromStudent
(2).统计选修了课程的学生的人数
selectcount(distinctsno)fromSC
(3).计算学号为*******的学生的考试总成绩之和
selectsum(grade) fromSCwhereSno='9512101'
(4).计算“C01”课程的考试平均成绩
selectavg(grade)fromSCwherecn0='c01'
(5).查询“C01”课程的最高分和最低分
selectmax(grade),min(grade)fromSCwhereCno='c01'
12、对查询结果进行分组计算
需要先将数据分组,然后再对每个组进行计算,而不是对全表进行计算。
这时就需要用到分组子句groupby.groupby可将计算控制在组一级。
分组的目的是细化计算函数的作用对象。
分组依据列不能是text、ntext、image和bit类型的列。
(1).统计每门课程的选课人数,列出课程号和人数
selectCnoas课程号,count(Sno)as选课人数fromSCGroupbyCno
(2).查询每名学生的选课门数和平均成绩
selectSno学号,count(*)选课门数,avg(Grade)平均成绩fromSCgroupbysno
三.多表连接查询
若一个查询涉及两个或两个以上,则称之为连接查询。
连接查询是关系数据库中最主要的查询,主要包括内连接、外连接和交叉连接等类型。
1.内连接 内连接是一种最常用的连接类型。
使用内连接时,如果两个表的相关字段满足连接条件,则从这两个表中提取数据并组合成新的记录。
内连接的格式:
from表1[inner]join表2on<连接条件>
在连接条件中要指明两个表按什么条件进行连接,连接条件中的比较运算符为连接谓词。
连接条件的一般格式为:
[<表名1.>][<列名1>]<比较运算符>[<表名2.>][<列名2>]
注意:
两个表的连接列必须是可比较的,即必须是语义相同是列,否则比较将是无意义的。
当比较运算符为等号(=)时,称为等值连接,使用其他运算的连接称为非等值连接。
查询每个学生的基本信息及其选课的情况。
select*fromStudent
innerjoinSConStudent.Sno=SC.Sno --将Student与SC连接起来
在连接中常常会出现不需要的重复的列,现在要将他除去,如上例中,其结果有重复的,现要将其除去:
selectStudent.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade,xklb
fromStudentjoinSConStudent.Sno=SC.Sno
查询计算机系学生的选课情况,要求列出学生的名字、所修课的课程号和成绩。
selectSname,Cno,Gradefrom
StudentjoinSConStudent.Sno=SC.Sno
whereSdept='计算机系'
可以为表提供别名,其格式为:
<原表名>[as]<表别名>
为表指定别名可以简化表的书写,而且在有些连接查询(后面将要介绍的自连接)中要求必须指定别名。
如:
使用别名时上例可写为:
selectSname,Cno,Grade
fromStudentsjoinSCons.Sno=SC.Sno
whereSdept='计算机系'
查询信息系选修VB课程的学生的成绩,要求列出学生姓名、课程名和成绩。
selectSname,Grade
fromStudentsjoinSCons.Sno=SCSno
joinCourseconc.Cno=SC.Cno
whereSdept='信息系'andCname='VB'
查询所有选修了VB课程的学生的情况,要求列出学生姓名和所在系。
selectSname,Sdept
fromStudentSjoinSConS.Sno=SC.Sno
joinCourseConC.Cno=SC.Sno
whereCourse='VB'
13.子查询
在SQL语言中,一个select-from-where语句称为一个查询块。
如果一个select语句嵌套在一个select、insert、update或delete语句中,则称这样的查询为子查询或内层查询,而包含子查询的语句则称为主查询或外查询。
子查询语句可以出现在任何能够使用表达式的地方,但一般是用在外层查where子句或having子句、groupby子句和having子句,与比较运算符或逻辑运算符一起构成查询条件。
查询与刘晨在同一个系的学生。
selectSno,Sname,Sdept
fromStudentwhereSdept
in(selectSdeptfromStudentwhereSname='刘晨')
查询成绩大于90分的学生的学号和姓名。
selectSno,Sname
fromStudent
whereSnoin(selectSnofromSCwhereGrade>90)
查询选修了“数据库基础”课程的学生的学号和姓名。
selectSno,Sname
fromStudent
whereSnoin(selectSnofromSC
whereCnoin(selectCnoin(selectCnofromCoursewhereCname='数据库基础'))
第五章
14试图的概念?
答:
试图是由从数据库的基本表中选取出来额度数据组成的逻辑窗口。
其一般格式为:
CREATEVIEW<视图名>【(试图表名)】
AS子查询语句
其中子查询的语句可以是任意的SELECT语句。
15试图的作用?
A简化数据查询语句
B使用户能从多角度看待同一数据
C提高了数据的安全性
D提供了一定程度的逻辑独立性
16什么是存储过程?
答:
存储过程是SQ语句和控制流语句的预编译集合,它以一个名称存储并作为一个单元处理,应用程序可以通过调用来执行存储过程。
17使用数据库管理系统中的存储过程有什么好处?
A允许进行模块化程序设计
B改善性能
C减少网络流量
D提供了安全机制
E简化管理和操作
18创建存储过程的SQL语句为CREATEPROCEDURE,其语法格式为:
CREATEPROC【EDURE】存储过程名
【{@参数名数据类型}【=default】【output】】
AS
SQL语句【。
。
。
n】
其中【=default】为参数的默认值,如果定义了,则不指定该参数的值也可以执行该存储过程。
默认值必须是常量或NULL。
【output】带有的OUTPUT的参数是输出参数,不带OUTPUT的参数是输入参数。
执行存储过程的SQL语句是EXECUTE,其语法格式为:
[EXEC[UTE]]存储过程名[实参[、OUTPUT][、。
。
。
n]]
第六章
19什么是触发器及其应用原理?
答:
过程完整性是指在服务器端通过编写实现约束的一段代码来实现的数据完整性约束,这段代码称为触发器。
触发器是一种特殊的存储过程其特殊性在于它不需要由用户调用执行,而是当用户对表中的数据进行UPDATE、INSERT或DELETE操作时自动触发执行的。
触发器常用于保证业务过则和数据完整性约束,其优点是用户可以用编程的方法来实现复杂的处理逻辑和业务规则,增强了数据玩曾性约束的功能。
创建触发器的语法为:
CREATETRIGGER触发器名称
ON表名
{FOR丨AFTER丨INSTEADOF}{[INSERT][、][DELETE][、][UPDATE]}
AS
SQL语句[。
。
。
n]
其中:
“触发器名称”:
在数据库中必须是唯一的。
ON:
用于指定在其上执行触发器的表
第七章
........
20范式的种类:
A第一范式:
不包含重复组的关系(即不包含非原子项的属性)是第一范式的关系。
B第二范式:
入宫R(U,F)属于1NF,并且R中的每个非主属性都完全函数依赖于主码,则R(U,F)属于2NF。
C第三范式:
如果R(U,F)属于2NF,并且所有非主属性都不传递依赖主码,则R(U,F)属于3NF。
第八章
21事务的基本概念及其特征?
概念:
事务是用户定义的数据操作系列,这些操作课作为一个完整的工作单元。
一个事务内的所有语句是一个整体,要么全部执行,要么全部不执行。
特征:
原子性、一致性、隔离性和持续性。
这四个特性也简称为事务的ACID特性。
22并发操作带来的数据不一直情况大致可以概括为四种:
A丢失数据修改 B读“脏”数据
C不课重复读 D产生“幽灵”数据
23封锁协议
在运用X锁和S锁为数据对象加锁时,还需要约定一些规则,如:
何时申请X锁或S锁、持锁时间、何时释放锁等。
这些规则称为封锁协议或加锁协议。
1.一级封锁协议
一级封锁协议的规则如下:
给事务T要修改的数据加X锁,直到事务结束(包括正常结束和非正常结束)时才释放锁。
一级封锁协议可以防止丢失修改,并保证事务T是可恢复的。
因此,他在读取前先已先加了锁。
2.二级封锁协议
二级封锁协议规则如下:
一级封锁协议加上事务T对要读取的数据加S锁,读完后即释放S锁。
二级封锁协议除了可以防止丢失修改外,还可以防止读“脏”数据。
3.三级封锁协议
三级封锁协议的规则是:
一级封锁协议加上事务T对要读取的数据加S锁,并直到事务结束才释放。
三级封锁协议除了可以防止丢失修改和不读“脏”数据之外,还进一步防止了不可重复读。
4.死锁
如果事务T1封锁了数据R1,T2封锁了数据R2,然后T1又请求封锁R2,由于T2已经封锁了R2,因此T1等待T2释放R2上的锁。
然后T2又请求封锁R1,由于T1已经封锁R1,因此T2也只能等待T1释放R1上的锁。
这样就会出现T1等待T2先释放R2上的锁,而T2又等待T1先释放R1上的锁的局面,此时T1和T2都在等待对方先释放锁,因而形成死锁。
第9章
24数据库面临的驻主要问题和困难有?
A懂得计算机与数据库的人一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 应用 复习资料