数据库复习资料上课讲义.docx
《数据库复习资料上课讲义.docx》由会员分享,可在线阅读,更多相关《数据库复习资料上课讲义.docx(22页珍藏版)》请在冰点文库上搜索。
![数据库复习资料上课讲义.docx](https://file1.bingdoc.com/fileroot1/2023-7/7/2a847e47-e98c-4828-832c-a2620bdd6910/2a847e47-e98c-4828-832c-a2620bdd69101.gif)
数据库复习资料上课讲义
心之所向,所向披靡
1、通常,一个数据库的数据模型由数据结构、数据操作和数据的约束条件三部分组成。
其中,数据结构和数据的约束条件为数据的静态特性。
2、数据模型实际上是模型化数据和信息的工具。
根据模型应用的不同目的,可以将模型分为两大类:
概念层数据模型(概念模型)---从数据的语义视角来抽取模型,是按用户的观点来对数据和信息进行建模。
组织层数据模型(逻辑模型)---从数据的组织层次来描述数据。
3、数据模型中的组织层数据模型从数据的组织方式来描述数据,目前主要包括四种组织层数据模型:
层次模型、网状模型、关系模型和对象-关系模型。
4、实体之间的联系可分为三种:
一对一关系,一对多关系和多对多关系
5、关系模型的操作对象是集合,也就是关系。
6、关系数据模型的数据操作主要包括四种:
查询、插入、删除和修改数据。
7、关系模型的数据完整性约束包括:
实体完整性、参照完整性和用户定义的完整性。
8、数据库系统的三级模式结构分别为:
外模式(ExternalSchema),模式(Schema)和内模式(InternalSchema)。
9、SQLSERVER中提供的整数数据类型有:
BIGINT,INT,SMALLINT,TINYINT和BIT
10、要在SQLSERVER表中存储一个小数数据,具体要求如下:
小数位保留三位,整数位最大有10位,应该选用的数据类型为DECIMAL(13,3)或NUMERIC(13,3)。
11、要在要在SQLSERVER表中存储个人爱好资料,该资料可以不填,最多可填200汉字,应该选用的数据类型为VARCHAR(400)来定义。
12、统一字符编码字符串类型每个字符占两个字节。
13、一个汉字节两个字节。
名词解释
1、什么是数据库,作用是什么?
答:
1、存放数据的一个有组织,有结构的系统。
2、一个软件系统。
1、数据存储2、数据查询3、数据管理4、数据共享5、数据挖掘6、数据安全
2、什么是数据库系统,作用是什么?
答:
本质上是一个用计算机存储数据的系统,一般由数据库、数据库管理系统(及相关实用工具)、应用程序、数据库管理员组成。
主要作用除保存数据外,还提供对数据进行各种管理和处理:
安全管理、数据共享、数据查询。
3、什么是数据库管理系统,作用是什么?
答:
是一个专门用于实现对数据进行管理和维护的系统软件。
主要作用包括:
数据库的建立与维护;数据定义;数据组织、存储和管理;数据操作;事务的管理和运行。
4、数据独立性
答:
指应用程序不会因数据的物理表示方式和访问技术的改变而改变,即应用程序不依赖于任何特定的物理表示方式和访问技术,包含两个方面:
逻辑独立性和物理独立性
5、关系模型、关系和关系模式。
答:
用关系(表格数据)表示实体和实体之间联系的模型称为关系数据模型
关系:
关系就是二维表。
并满足如下性质:
关系表中的每一列都是不可再分的基本属性;表中的行、列次序并不重要。
关系模式:
二维表的结构称为关系模式,即,关系模式是二维表的表框架或表头结构。
6、元组、属性、主码、域
答:
元组:
表中的每一行称作是一个元组,它相当于一个记录值。
属性:
表中的每一列是一个属性值的集合,列可以命名,称为属性名。
主码:
表中用于惟一地确定一个元组的一个属性或最小的属性组。
域:
属性的取值范围。
7、实体完整性、参照完整性和用户定义完整性
答:
实体完整性是保证关系中的每个元组都是可识别的和惟一的。
而且表中不允许存在如下的记录:
无主码值的记录和主码值相同的记录。
参照完整性用于描述实体之间的联系。
参照完整性一般是指多个实体(表)之间的关联关系。
一般用外码实现。
外码:
取作本表(子表)属性之一的外表(父表,主表)主码。
主码值先在
主表中生成,后在子表中引用。
用户定义完整性也称为域完整性或语义完整性。
按应用语义,属性数据有:
类型与长度限制:
方便计算机操作。
取值范围限制:
防止属性值与应用语义矛盾
8、数据模式
答:
在数据模型中有关数据结构及其相互间关系的描述称为数据模式(Dataschema)。
9、信息技术
答:
信息技术(InformationTechnology简称IT)是指在信息科学的基本原理和方法的指导下扩展人类信息功能的技术。
一般说,信息技术是以电子计算机和现代通信为主要手段实现信息的获取,加工,传递和利用等功能的技术总和。
10、信息技术的四大基本技术是哪些?
答:
传感技术、通信技术、计算机技术和控制技术是信息技术的四大基本技术,其主要支柱是通讯(Communication)技术、计算机(Computer)技术和控制(Control)技术,即“3C”技术。
11、数据、信息与知识
答:
数据是使用约定俗成的关键词,对客观事物的数量、属性、位置及其相互关系进行抽象表示,以适合在这个领域中用人工或自然的方式进行保存、传递和处理。
信息是具有时效性的有一定含义的,有逻辑的、经过加工处理的、对决策有价值的数据流。
知识就是沉淀并与已有人类知识库进行结构化的有价值信息。
12、数据库技术
答:
数据库是数据管理的最新技术,主要研究内容是如何对数据进行科学的管理,以提供可共享、安全、可靠的数据。
数据库技术一般包含数据管理和数据处理两部分。
13、视图及其作用
答:
视图由基本表构成的虚表(满足用户需求的表结构)。
它的主要作用包括:
简化数据查询语句,使用户能从多角度看待同一数据,提高了数据的安全性,提供了一定程度的逻辑独立性。
SQL命令执行结果题
在SQLSERVER查询分析器中执行如下SQL操作:
以上命令正确执行完成后,请写出如下SQL语句的执行结果。
(如果没有找到相应记录,则写没有找到记录)
数据库设计题(共20分)
假设有如下数据管理要求,
请你根据上述要求,按下步骤完成一个数据库的设计。
要求满足第三范式。
1、画出系统E-R图
2、
画出系统数据库的逻辑图(如下图所示样式)
3、
写出各关系在SQLSERVER中的物理结构定义。
(结构如下表所示)
表1student表(学生表)
序号
字体名称
数据类型
约束
说明
1
SNO
INT
PRIMARYKEY
学号
2
SNAME
VARCHAR(50)
NOTNULL
学生姓名
操作题。
按下要求,完成相应的SQL语句。
(共20分)
/*综合实验二*/
/*
1.新建一个数据库名为SAMPLE,选择其,在“新建查询”窗口中,用CREATETABLE语句创建如下表。
(1)
STUDENT
(SNOVARCHAR(3)NOTNULL,
SNAMEVARCHAR(4)NOTNULL,
SSEXVARCHAR
(2)NOTNULL,
SBIRTHDAYDATETIME,
CLASSVARCHAR(5))
*/
createdatabasesample
usesample
createtablestudent
(SNOVARCHAR(3)primarykey,
SNAMEVARCHAR(4)NOTNULL,
SSEXVARCHAR
(2)NOTNULL,
SBIRTHDAYDATETIME,
CLASSVARCHAR(5))
/*
(2)
COURSE
(CNOVARCHAR(5)NOTNULL,
CNAMEVARCHAR(10)NOTNULL,
TNOVARCHAR(10)NOTNULL)
*/
createtablecourse
(CNOVARCHAR(5)primarykey,
CNAMEVARCHAR(10)NOTNULL,
TNOVARCHAR(10)NOTNULL)
/*
(3)
SCORE
(SNOVARCHAR(3)NOTNULL,
CNOVARCHAR(5)NOTNULL,
DEGREENUMERIC(10,1)NOTNULL)
*/
createtablescore
(SNOVARCHAR(3)NOTNULL,
CNOVARCHAR(5)NOTNULL,
DEGREENUMERIC(10,1)NOTNULL,
primarykey(sno,cno))
/*
(4)
TEACHER
(TNOVARCHAR(3)NOTNULL,
TNAMEVARCHAR(4)NOTNULL,TSEXVARCHAR
(2)NOTNULL,
TBIRTHDAYDATETIMENOTNULL,PROFVARCHAR(6),
DEPARTVARCHAR(10)NOTNULL)
*/
createtableteacher
(NOVARCHAR(3)primarykey,
TNAMEVARCHAR(4)NOTNULL,
TSEXVARCHAR
(2)NOTNULL,
TBIRTHDAYDATETIMENOTNULL,
PROFVARCHAR(6),
DEPARTVARCHAR(10)NOTNULL)
/*
2.用INSERT语句,添加如下数据。
(1)在STUDENT表中插入如下数据:
(108,'曾华','男',1977-09-01,95033);
(105,'匡明','男',1975-10-02,95031);
(107,'王丽','女',1976-01-23,95033);
(101,'李军','男',1976-02-20,95033);
(109,'王芳','女',1975-02-10,95031);
(103,'陆君','男',1974-06-03,95031);
*/
insertintostudentvalues
(108,'曾华','男','1977/09/01',95033)
insertintostudentvalues
(105,'匡明','男','1975/10/02',95031)
insertintostudentvalues
(107,'王丽','女','1976/01/23',95033)
insertintostudentvalues
(101,'李军','男','1976/02/20',95033)
insertintostudentvalues
(109,'王芳','女','1975/02/10',95031)
insertintostudentvalues
(103,'陆君','男','1974/06/03',95031)
/*
(2)在COURSE表添加如下数据:
('3-105','计算机导论',825)
('3-245','操作系统',804);
('6-166','数据电路',856);
('9-888','高等数学',100);
(‘3-109’,‘数据库技术及应用’,825);
*/
insertintocoursevalues
('3-105','计算机导论','825')
insertintocoursevalues
('3-245','操作系统','804')
insertintocoursevalues
('6-166','数据电路','856')
insertintocoursevalues
('9-888','高等数学','100')
altertablecoursealtercolumncnamevarchar(40)
insertintocoursevalues
('3-109','数据库技术及应用','825')
/*
(3)在表SCORE中添加如下数据:
(103,'3-245',86);
(105,'3-245',75);
(109,'3-245',68);
(103,'3-105',92);
(105,'3-105',88);
(109,'3-105',76);
(101,'3-105',64);
(107,'3-105',91);
(108,'3-105',78);
(101,'6-166',85);
(107,'6-106',79);
(108,'6-166',81);
*/
insertintoscorevalues
(103,'3-245',86)
insertintoscorevalues
(105,'3-245',75)
insertintoscorevalues
(109,'3-245',68)
insertintoscorevalues
(103,'3-105',92)
insertintoscorevalues
(105,'3-105',88)
insertintoscorevalues
(109,'3-105',76)
insertintoscorevalues
(101,'3-105',64)
insertintoscorevalues
(107,'3-105',91)
insertintoscorevalues
(108,'3-105',78)
insertintoscorevalues
(101,'6-166',85)
insertintoscorevalues
(107,'6-106',79)
insertintoscorevalues
(108,'6-166',81)
/*
(4)在表TEACHER中添加如下数据:
(804,'李诚','男','1958-12-02','副教授','计算机系');
(856,'张旭','男','1969-03-12','讲师','电子工程系');
(825,'王萍','女','1972-05-05','助教','计算机系');
(831,'刘冰','女','1977-08-14','助教','电子工程系');
*/
insertintoteachervalues
(804,'李诚','男','1958-12-02','副教授','计算机系')
insertintoteachervalues
(856,'张旭','男','1969-03-12','讲师','电子工程系')
insertintoteachervalues
(825,'王萍','女','1972-05-05','助教','计算机系')
insertintoteachervalues
(831,'刘冰','女','1977-08-14','助教','电子工程系')
/*
3.完成下列SQL操作。
1)查询Student表中的所有记录的Sname、Ssex和Class列。
*/
selectsname,ssex,classfromstudent
/*
2)查询教师所有的单位即不重复的Depart列。
*/
selectdistinctdepartfromteacher
/*
3)查询Student表的所有记录。
*/
select*fromstudent
/*
4)查询Score表中成绩在60到80之间的所有记录。
*/
select*fromscorewheredegreebetween60and80
/*
5)查询Score表中成绩为85,86或88的记录。
*/
select*fromscorewheredegreein(85,86,88)
/*
6)查询Student表中“95031”班或性别为“女”的同学记录。
*/
select*fromstudentwhereclass='95031'orssex='女'
/*
7)以Class降序查询Student表的所有记录。
*/
select*fromstudentorderbyclassdesc
/*
8)以Cno升序、Degree降序查询Score表的所有记录。
*/
select*fromscoreorderbycno,degreedesc
/*
9)查询“95031”班的学生人数。
*/
selectcount(*)fromstudentwhereclass='95031'
/*
10)查询Score表中的最高分的学生学号和课程号。
*/
selectsno,cnofromscorewheredegreein(selectmax(degree)fromscore)
SELECTA.SNO,B.CNOFROMSCOREA,SCOREBWHERE
B.DEGREEIN(SELECTMAX(DEGREE)FROMSCOREGROUPBYCNO)
ANDA.SNO=B.SNOANDA.CNO=B.CNO
/*
11)查询‘3-105’号课程的平均分。
*/
selectavg(degree)fromscorewherecno='3-105'
/*
12)查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
*/
selectcno,avg(degree)fromscoregroupbycnohavingcount(*)>4andcnolike'3%'
/*
13)查询最低分大于70,最高分小于90的Sno列。
*/
selectsnofromscoregroupbysnohavingmin(degree)>70andmax(degree)<90
/*
14)查询所有学生的Sname、Cno和Degree列。
*/
selectsname,cno,degreefromstudents,scorescwheres.sno=sc.sno
/*
15)查询所有学生的Sno、Cname和Degree列。
*/
selectsno,cname,degreefromscoresc,coursecwhereo=o
/*
16)查询所有学生的Sname、Cname和Degree列。
*/
selectsname,cname,degreefromstudents,scoresc,coursec
wheres.sno=sc.snoando=o
/*
17)查询“95033”班所选课程的平均分。
*/
selectavg(degree)fromscorewheresnoin(selectsnofromstudentwhereclass='95033')
/*
18)假设使用如下命令建立了一个grade表:
createtablegrade(lownumber(3,0),uppnumber(3),rankchar
(1));
insertintogradevalues(90,100,’A’);
insertintogradevalues(80,89,’B’);
insertintogradevalues(70,79,’C’);
insertintogradevalues(60,69,’D’);
insertintogradevalues(0,59,’E’);
commit;
现查询所有同学的Sno、Cno和rank列。
*/
createtablegrade(lownumeric(3,0),uppnumeric(3,0),rankchar
(1))
insertintogradevalues(90,100,'A')
insertintogradevalues(80,89,'B')
insertintogradevalues(70,79,'C')
insertintogradevalues(60,69,'D')
insertintogradevalues(0,59,'E')
commit;
selectsno,cno,rankfromscore,gradewheredegreebetweenlowandupp
/*
19)查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。
*/
selects.sno,sname,ssex,sbirthday,classfromstudents,scoresc
wheres.sno=sc.snoandsc.snoin
(selectsnofromscorewherecno='3-105'and
degree>(selectdegreefromscorewheresno='109'andcno='3-105'))
/*
20)查询score中选学一门以上课程的同学中分数为非最高分成绩的记录。
*/
selecta.sno,o,a.degreefromscorea,SCOREB
wherea.degree!
=
(selectmax(degree)fromscorebwhereo=o)
ANDA.SNO=B.SNOANDA.CNO=B.CNO
/*
21)查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。
*/
select*fromscorewheredegree>(selectdegreefrom
scorewheresno='109'andcno='3-105')
/*
22)查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。
*/
selectsno,sname,sbirthdayfromstudentwheresno!
='108'
andyear(sbirthday)=(selectyear(sbirthday)fromstudentwheresno='108')
/*
23)查询“张旭“教师任课的学生成绩。
*/
selectsno,o,degreefromscoresc,teachert,coursec
whereo=oandc.tno=t.NOandtname='张旭'
/*
24)查询选修某课程的同学人数多于5人的教师姓名。
*/
selectdistincttnamefromteachert,coursec,scoresc
whereo=oandc.tno=t.NOando
in(selectcnofromscoregroupbyc