数据库第三章
《数据库原理与应用》(第三版) 课件 第3章 数据库设计技术
分析的方法。
2023/9/9
8
3.2需求分析
2.数据流图(data flow diagram)
◆ SA方法只是对问题分析的一种思想,在具体的分析过程中还需要借助其他 的分析工具,这样才能完成对分析过程和结果的记录、对用户需求的表达
系统调研也称项目调研,即把系统开发当作项目来运作,其主要目的是通过接 触用户以了解并最终明确用户的实际需求。这个过程是一个系统分析人员理解
和掌握用户业务流程的过程,是一个需要不断与用户进行沟通和磋商的过程。
系统调研方法比较灵活,因人、因系统而异。大致过程可以分为以下几个步骤
来完成:
2023/9/9
3.2需求分析
第3章数据库设计技术
· 3.1数据库设计概述
·3.2需求分析
· 3.3数据库结构设计 · 3.4数据库的实施、运行和维护
2023/9/9
第三章数据库设计技术
3.1数据库设计概述
◆数据库设计是指在现有的应用环境下,从建立问题的概念模型开始,
逐步建立和优化问题的逻辑模型,最后建立其高效的物理模型,并据 此建立数据库及其应用系统,使之能够有效地收集、存储和管理数据 ,满足用户的各种应用需求。
的。所有这些结果都应该跟用户确认后予以书面形式确定下来。
2023/9/9
3.2需求分析
3.2.2需求分析的方法
1.SA方法
针对数据库设计,形成用户需求的有效表达,这种表达在说明书中多以数据流图、数
据字典等形式来描述。
为建立用户需求的表达,可以采用多种分析方法来完成。这些方法主要包括自顶向下
和自底向上两种方法,其中常采用的方法是自顶向下的结构化分析方法(structured analysis,SA)。
第3章 数据库的基本操作(1)
■若在文件名前指定了驱动器标识符,则文件建立在指定的 驱动器上,否则建立在当前驱动器上。 ■不指定文件扩展名时,缺省扩展名为.DBF。 ■若磁盘上存在这个文件或文件重名,系统显示一个警告对 话框,提示是否要改写表。如果需要改写,则选择【是】, 否则选择【否】。 ■不要用A-J单个字母作为表文件名,因为它们是专门用于工 作区别名的。
记录的总字节数=各个字段的宽度+ 1
LIST STRU和DISP STRU命令的区别:
DISP STRU:在每显示一屏信息后暂停,等待用户按任 意一键后继续显示; LIST STRU:显示信息时没有周期性暂停,而是连续 向下显示,直到显示完毕。
二. 显示表中的记录
格式:LIST ︱ DISPLAY
• 逻辑型字段:只允许输入下列字母中的一个: y, Y, t, T, n, N, f, F
• 日期型字段:mm-dd-yy mm取值范围01~12 dd取值范围01~31
• 备注型字段的输入:
Ctrl+PgDn: 弹出字段编辑窗口
Ctrl+W: 保存该字段内容到备注文件中。 输入数据后,该字段栏显示为Memo
指针定位就是将记录指针移到指定的记录上,记录指针指向的记 录称为当前记录。VFP提供了绝对定位和相对定位两类命令。
(1)记录指针的绝对定位
格式: GOTO [RECORD <数值表达式> ]∣TOP∣BOTTOM 功能:将记录指针直接定位到指定的记录上。
钮,所改变的设置仅在本次系统运行期间有效,退出系统 后,所做的修改将丢失。
二. 建立表前的准备
在建立表结构以前,首先应该根据用户的需求,明确所要创建 的表中应该包含哪些字段,每个字段的名称、类型和宽度。
《数据库》第三章参考答案
(1)检索 检索LIU老师所授课程的课程号、课程名。 老师所授课程的课程号、 检索 老师所授课程的课程号 课程名。
π CNO,CNAME(σTNAME =‘LIU’(C)) ,
(2) 检索年龄大于 岁的男学生的学号与姓名。 检索年龄大于23岁的男学生的学号与姓名 。 岁的男学生的学号与姓名
πsno,sname
[例 3.11]设有三个关系: 例 设有三个关系: 设有三个关系 学生关系: 学生关系 S(SNO,SNAME,AGE,SEX,SDEPT) ( , , , , ) 学习关系: 学习关系 SC(SNO,CNO,GRADE) ( , , ) 课程关系: 课程关系 C(CNO,CNAME,CDEPT,TNAME) ( , , , ) 试用关系代数表达式表示下列查询语句。 试用关系代数表达式表示下列查询语句。
(7)检索全部学生都选修的课程的课程号与 ) 课程名。 课程名。
πcno
(S))) )
,CNAME
(C
∞ ( πSNO,CNO(SC) , )
÷
π
SNO
(8)检索选修课程包含 )检索选修课程包含LIU老师所授 老师所授 课程的学生学号。 课程的学生学号。
π sno,CNO(SC)
÷πCNO(σTNAME =‘LIU’(C))
(σAGE>’23’ ∧ SEX=‘M’(s)) >
(3)检索学号为 学生所学课程的课程名与 )检索学号为S3学生所学课程的课程名与 任课老师名。 任课老师名。
πCNAME,TNAME(σSNO =‘S3’ ( sc∞c)) ,
( 4) 检索至少选修 ) 检索至少选修LIU老师所授课程中一门 老师所授课程中一门 课的女学生姓名。 课的女学生姓名。
πSNAME(σSEX=‘F’∧TNAME=‘LIU’ (s∞sc ∞c))
数据库第三章习题参考
5.求至少用了供应商S1所供应的全部零件的工程号JNO。 即查找:不存在这样的零件y,供应商S1供应了y,而工程x为选用y。 Select distinct jno From spj z Where not exists (select * from spj x where sno=‘S1’ and not exists (select * from spj y where y.pno=x.pno and y.jno=z.jno));
习题三 第5题
1. 找出所有供应商的姓名及其所在城市。 Select sname, city from s; 2. 找出所有零件的名称、颜色、重量。 Select pname, color, weight from p; 3.找出使用供应商S1所供应零件的工程项目代码。 Select jno from spj where sno=‘S1’;
7. 找出没有使用天津产的零件的工程项目代码。 Select jno from j where not exists (Select * from spj where spj.jno=j.jno and sno in (Select sno from s where city=‘天津’) );
3.求供应工程J1零件为红色的供应商号码。 Select sno from spj, p Where spj.pno=p.pno and jno=‘J1’ and color=‘红’; 或: Select sno from spj Where jno =‘J1’ and pno in (Select pno from p Biblioteka where color=‘红’ );
6. 找出使用上海产的零件的工程项目名。 Select jname from j,spj,s where j.jno=spj.jno and spj.sno=s.sno and s.city=‘上海’; 或: Select jname from j where jno in (Select jno from spj, s where spj.sno=s.sno and s.city=‘上海’);
数据库第3章习题参考答案
第3章习题解答1.选择题(1)表设计器的“允许空”单元格用于设置该字段是否可输入空值,实际上就是创建该字段的(D)约束。
A.主键B.外键C.NULL D.CHECK(2)下列关于表的叙述正确的是(C)。
A.只要用户表没有人使用,则可将其删除B.用户表可以隐藏C.系统表可以隐藏D.系统表可以删除(3)下列关于主关键字叙述正确的是( A )。
A.一个表可以没有主关键字B.只能将一个字段定义为主关键字C.如果一个表只有一个记录,则主关键字字段可以为空值D.都正确(4)下列关于关联叙述正确的是( C )。
A.可在两个表的不同数据类型的字段间创建关联B.可在两个表的不同数据类型的同名字段间创建关联C.可在两个表的相同数据类型的不同名称的字段间创建关联D.在创建关联时选择了级联更新相关的字段,则外键表中的字段值变化时,可自动修改主键表中的关联字段(5)CREATE TABLE语句(C )。
A.必须在数据表名称中指定表所属的数据库B.必须指明数据表的所有者C.指定的所有者和表名称组合起来在数据库中必须唯一D.省略数据表名称时,则自动创建一个本地临时表(6)删除表的语句是(A)。
A.Drop B.Alter C.Update D.Delete (7)数据完整性不包括(B )。
A.实体完整性B.列完整性C.域完整性D.用户自定义完整(8)下面关于Insert语句的说法正确的是(A )。
A.Insert一次只能插入一行的元组B.Insert只能插入不能修改C.Insert可以指定要插入到哪行D.Insert可以加Where条件(9)表数据的删除语句是( A )。
A.Delete B.Inser C.Update D.Alter (10)SQL数据定义语言中,表示外键约束的关键字是(B )。
A.Check B.Foreign Key C.Primary Key D.Unique2.填空题(1)数据通常存储在表中,表存储在数据库文件中,任何有相应权限的用户都可以对之进行操作。
数据库第3章习题
(一)选择题1.关系数据库管理系统应能实现的专门关系运算包括____。
A.排序、索引、统计B.选择、投影、连接C.关联、更新、排序D.显示、打印、制表2.在一个关系中如果有这样一个属性或属性组存在,它的值能唯一地标识关系中的每一个元组,称这个属性或属性组为____。
A.关键字B.数据项C.主属性D.主属性值3.同一个关系模型的任两个元组值____。
A.不能全同B.可全同C.必须全同D.以上都不是4.一个关系数据库文件中的各条记录____。
A.前后顺序不能任意颠倒,一定要按照输入的顺序排列B.前后顺序可以任意颠倒,不影响库中的数据关系C.前后顺序可以任意颠倒,但排列顺序不同,统计处理的结果就可能不同D.前后顺序不能任意颠倒,一定要按照关键字段值的顺序排列5.在关系代数的传统集合运算中,假定有关系R和S,运算结果为W。
如果W中的元组属于R,或者属于S,则W为____运算的结果。
如果W中的元组属于R而不属于S,则为____运算的结果。
如果W中的元组既属于R又属于S,则W为____运算的结果。
A.笛卡尔积B.并C.差D.交6.在关系代数的专门关系运算中,从表中取出满足条件的属性的操作称为____;从表中选取满足某种条件的元组的操作称为____;将两个关系中具有共同属性值的元组连接到一起构成新表的操作称为____。
A.选择B.投影C.连接D.扫描7.自然连接是构成新关系的有效方法。
一般情况下,当对关系R和S使用自然连接时,要求R和S含有一个或多个共有的____。
A.元组B.行C.记录D.属性8.等值连接与自然连接是____。
A.相同的B.不同的9.如图所示的关系R,经操作ΠA,B(σB=b(R))(Π为“投影”运算符,σ“选择”运算符)的运算结果是____。
D10.设有属性A,B,C,D,以下表示中不是关系的是____。
A.R(A)B.R(A,B,C,D)C.R(A×B×C×D)D.R(A,B)11.关系运算中花费时间可能最长的运算是____。
数据库 第三章习题参考答案
三、设计题1.(1)SELECT BAuth FROM Book, PublishWHERE Book.PNo= Publish.PNo AND BName=’操作系统’ AND PName=’高等教育出版社’(2)查找为作者“张欣”出版全部“小说”类图书的出版社的电话。
SELECT PTel FROM Book, PublishWHERE Book.PNo= Publish.PNo AND BType =’小说’ AND BAuth=’张欣’(3)查询“电子工业出版社”出版的“计算机”类图书的价格,同时输出出版社名称及图书类别。
SELECT BPrice, PName, BType FROM Book, PublishWHERE Book.PNo= Publish.PNo AND PName =’电子工业出版社’ AND BType =’计算机’(4)查找比“人民邮电出版社”出版的“高等数学”价格低的同名书的有关信息。
SELECT * FROM BookWHERE BName =’高等数学’AND BPrice<ANY(SELECT BPrice FROM Book,PublishWHERE Book.PNo= Publish.PNo AND PName =’人民邮电出版社’ AND BName =’高等数学’)AND PName <>’人民邮电出版社’(5)查找书名中有“计算机”一词的图书的书名及作者。
SELECT BName, BAuth FROM BookWHERE BName LIKE’%计算机%’(6)在“图书”表中增加“出版时间”(BDate)项,其数据类型为日期型。
ALTER TABLE BookADD BDate datetime(7)在“图书”表中以“作者”建立一个索引。
CREATE INDEX Name ON Book(BAuth) desc2.(1)建立存书表和销售表。
数据库第3章 SQL Server Management Studio 操纵数据库和表
3.2.2 数据库表的创建 使用企业管理器创建表 利用企业管理器提供的图形界面来创建表,步骤如 下: (1)在树形目录中展开【数据库】→【MyDb】。 (2)选择【表】,单击鼠标右键,在弹出的快捷菜单 中选择【新建表...】命令,打开设计表对话框。
(3)如图所示,设计表对话框的上半部分有一个表 格,在这个表格中输入列的列名、数据类型、长度 (有的数据类型不需要指定长度,如datetime类型 的长度为固定值8)、是否可以为空,在允许空域 中单击鼠标左键,可以切换是否允许为空值的状态, 打勾说明允许为空值,空白说明不允许为空值,默 认状态是允许为空值的。 (4) 图所示的设计表对话框的下半部分是特定列的 详细属性,包括是否是标识列、是否使用默认值等。
数据库文件组 为了方便管理、提高系统性能,将多个数据库文 件组织成一组,即称为数据库文件组。数据库文件组 控制各个文件的存放位置,常常将每个文件建立在不 同的硬盘驱动器上。这样可以减轻单个硬盘驱动器的 存储负载,提高数据库的存储效率,从而实现提高系 统性能的目的。 在使用数据库文件和文件组时,应该注意以下几点: 1)每个文件或文件组只能用于一个数据库。 2)每个文件只能属于一个文件组。 3)日志文件是独立的。数据库的数据和日志信息不 能放在同一个文件或文件组中,数据文件和日志文件 总是分开的。
使用Transact—SQL命令修改数据库 ALTER DATABASE <数据库名> {ADD FILE <文件格式>[,…n] [TO FILEGROUP <文 件组名>] |ADD LOG FILE <文件格式>[,…n] |REMOVE FILE <逻辑文件名> |ADD FILEGROUP <文件组名> |REMOVE FILEGROUP <文件组名> |MODIFY FILE <文件格式> |MODIFY FILEGROUP <文件组名> <文件组属性> }
数据库第三章习题
第3章 SQL语言习题一、单项选择题1.SQL语言是()的语言,易学习。
A.过程化 B.非过程化 C.格式化 D.导航式2.SQL语言是()语言。
A.层次数据库B.网络数据库C.关系数据库D.非数据库3.SQL语言具有()的功能。
A.关系规范化、数据操纵、数据控制B数据定义、数据操纵、数据控制C.数据定义、关系规范化、数据控制D.数据定义、关系规范化、数据操纵4.关于SQL语言,下列说法正确的是()。
A 数据控制功能不是SQL语言的功能之一B SQL采用的是面向记录的操作方式,以记录为单位进行操作C SQL 是非过程化的语言,用户无须指定存取路径D SQL作为嵌入式语言语法与独立的语言有较大差别5.对表中数据进行删除的操作是()。
D.DELETE A.DROP B.ALTERC.UPDATE6.SQL语言的数据操纵语句包括SELECT,INSERT,UPDATE和DELETE等。
其中最重要的,也是使用最频繁的语句是()。
A.SELECTB.INSERTC.UPDATED.DELETE7.SQL语言具有两种使用方式,分别称为交互式SQL和()。
解释式SQL A.提示式SQL B.用户式SQL C.嵌入式SQLD.8.SQL语言中,实现数据检索的语句是()。
C.UPDATEB.INSERTD.DELETE A.SELECT9.下列SQL语句中,修改表结构的是()。
B.CREATEC.UPDATE D .DELETE A.ALTER10.在SQL中,用户可以直接操作的是()。
B 视图 D 基本表和视图C 存储文件 A 基本表11.在SQL的查询语句中,对应关系代数中“投影”运算的语句是()。
B FROM A WHEREC SELECTD HAVING12.在SELECT语句中,需对分组情况满足的条件进行判断时,应使用()。
B GROUP BYC ORDER BY A WHERED HAVING13.SQL中,与“NOT IN”等价的操作符是()。
数据库第3章
使用DROP子句删除指定的完整性约束条件 【例3-7】 删除student表学生姓名必须取惟一值的约束 条件。 ALTER TABLE student DROP UNIQUE(name); 使用MODIFY子句修改基本表的列定义 【例3-8】 将student 表name列的数据类型改为定长字符 串型。 ALTER TABLE student MODIFY name char(8) NOT NULL; 注意: (1)修改列定义时,要将原来的列级约束条件写上,否则 原有的列级约束会不起作用。 (2)修改列定义时,有可能会破坏已有的数据,应事先作 好备份工作。 (3)SQL未提供删除属性列的语句,只能采取间接的方法
3.2 数据定义
表3-1 SQL的数据定义语句 操作对象 数据库 操作方式 创建语句 CREATE DATABASE CREATE TABLE 删除语句 DROP DATABASE 修改语句 ALTER DATABASE
基本表 索引
视图
DROP
TABLE INDEX
VIEW
ALTER TABLE
CREATE INDEX DROP
3.2.4 建立索引 索引的概念 索引是建立在列上的一种数据库对象,它 对表中的数据提供逻辑顺序,当在数据库表中 搜索某一行时,可以通过使用索引来找到它的 物理位置。索引建立后,什么时候使用索引以 及使用哪一个索引(当有多个索引存在时), 由DBMS内部根据情况自行决定,不需要人员干 预。索引是动态的,每当数据库表的数据更新 一次,相应的索引也随之更新。
CREATE VIEW DROP
3.2.1 数据库的创建与删除 创建数据库 SQL使用命令CREATE DATABASE创建数据库,其一般语法 如下: CREATE DATABASE <数据库名>; 【例3-1】创建一个简单数据库。 CREATE DATABASE MyDb; 删除数据库 SQL使用命令DROP DATABASE删除一个或多个数据库,其 一般语法如下: DROP DATABASE <数据库名1> [,<数据库名2>][,…]; 【例3-2】删除数据库MyDb。 DROP DATABASE MyDb;
数据库第三章习题及答案
第3章关系数据库标准语言SQL一、选择题1、SQL语言是的语言,易学习。
A.过程化 B.非过程化 C.格式化 D.导航式答案:B2、SQL语言是语言。
A.层次数据库 B.网络数据库 C.关系数据库 D.非数据库答案:C3、SQL语言具有的功能。
A.关系规范化、数据操纵、数据控制 B.数据定义、数据操纵、数据控制C.数据定义、关系规范化、数据控制 D.数据定义、关系规范化、数据操纵答案:B4、SQL语言具有两种使用方式,分别称为交互式SQL和。
A.提示式SQL B.多用户SQL C.嵌入式SQL D.解释式SQL 答案:C5、假定学生关系是S(S#,SNAME,SEX,AGE),课程关系是C(C#,CNAME,TEACHER),学生选课关系是SC(S#,C#,GRADE)。
要查找选修“COMPUTER”课程的“女”学生姓名,将涉及到关系。
A.S B.SC,C C.S,SC D.S,C,SC 答案:D6、若用如下的SQL语句创建一个student表:CREATE TABLE student(NO C(4) NOT NULL,NAME C(8) NOT NULL,SEX C(2),AGE N(2))可以插入到student表中的是。
A.(‘1031’,‘曾华’,男,23) B.(‘1031’,‘曾华’,NULL,NULL)C.(NULL,‘曾华’,‘男’,‘23’) D.(‘1031’,NULL,‘男’,23) 答案:B7、当两个子查询的结果时,可以执行并,交,差操作.A.结构完全不一致 B.结构完全一致C.结构部分一致D.主键一致答案:B第8到第10题基于这样的三个表即学生表S、课程表C和学生选课表SC,它们的结构如下:S(S#,SN,SEX,AGE,DEPT)C(C#,CN)SC(S#,C#,GRADE)其中:S#为学号,SN为姓名,SEX为性别,AGE为年龄,DEPT为系别,C#为课程号,CN为课程名,GRADE为成绩。
数据库第3章
A.SUM B.MAX C.COUNT D.AVG
6. 在SELECT语句的FROM子句中允许出现(BCD )。
A. 列名 B.基本表名 C.视图名 D.表达式
7. 某查询语句中有“%田_ _”语句,在查询结果中有可能含有(CD )。
AGE SMALLINT );
可以插入到student表中的是(1.B 2.C 3.D )。
A.('1031','曾华',男,23) B.('1031','曾华',NULL,NULL)
C.(NULL,'曾华','男',23) D.('1031',NULL,'男',23)
D. SQL语句的结束符为分号“;”
4. SQL语言的数据操纵语句包括SELECT、INSERT、UPDATE和DELETE等。其中最重要的也是使用最频繁的语句是( B)。
A.SELECT B.INSERT C.UPDATE D.DELETE
5. 下列关于基本表的叙述中,错误的是(A )。
13. FOREIGN KEY约束是(A )约束。
A.实体完整性 B.参照完整性 C.用户自定义完整性 D.域完整性
14. 若要修改基本表中某一列的数据类型,需要使用ALTER语句中的(B )子句。
A. DELETE B. DROP C. MODIFY D. ADD
C. SELECT S.SN,SC.C#,SC.GRADE
数据库技术及应用 课件 第3章 关系数据库
第3章
关系数据库
3.1.3 关系的完整性 1. 关系模型的实体完整性
关系的实体完整性规则:若属性A是基本关系R的
主属性,则属性A的值不能为空值。 实体完整性规则规定:基本关系的所有主属性都 不能取空值,而不仅是主码不能取空值。实体完整性 的主要作用是: (1) 能够保证实体的惟一性。 (2) 能够保证实体的可区分性。
第3章
关系数据库
第3章 关系数据库
3.1 关系模型及其定义
3.2 关系代数
习题3
第3章
关系数据库
3.1 关系模型及其定义
3.1.1 关系数据结构 在关系模型中,无论是实体集,还是实体集之间 的联系均由单一的关系表示。由于关系模型是建立在 集合代数基础上的,因而一般从集合论角度对关系数 据结构进行定义。
第3章
关系数据库
1. 关系的数学定义 (1) 域。
域是一组具有相同数据类型的值的集合。
(2) 笛卡儿积。 (3) 关系。
第3章
关系数据库
表3-1 D1、D2、D3的笛卡儿积
第3章
关系数据库
表3-2 学 生 关 系
第3章
关系数据库
2. 关系中的基本名词 (1) 元组。 关系表中的每一横行称作一个元组,组成元组的 元素为分量。 (2) 属性。
门的关系运算符、比较运算符和逻辑运算符。
第3章
关系数据库
(1) 集合运算符:∪(并运算),-(差运算),∩(交运 算),×(广义笛卡儿积)。 (2) 专门的关系运算符:σ(选择),π(投影),(连接), ÷(除)。 (3) 比较运算符:>(大于),≥(大于等于),<(小
于),≤(小于等于),=(等于),≠(不等于)。
'计算机系'
第3章_数据库与表的创建及使用
库表的约束机制及其激活时机
库表的字段级和记录级以及表的触发器, 为数据的输入和更改实施了约束。
3.3.4 表的打开与关闭
1、工作区
• 工作区的几个概念 – 用以标识一张打开的表的区域。 – 每个工作区都有一个编号,从1~32767(前10个可以用字母A~J表 示); – 每个工作区只能打开一张表,但一张表可以在多个工作区打开,用 AGAIN子句;在工作区打开的表都有一个别名,也可使用表的别名 作为工作区号。 – 系统正使用的工作区为当前工作区,启动VFP后默认当前工作区为1。 – 可以用SELECT命令选择当前工作区。 如:SELECT 4 &&选择4号工作区 SELECT 0 &&选择当前未使用的工作区区号最小的工作区。
3.1.2 数据库的组成
4、存储过程
•在数据库中保存过程和代码的地方。 • 包含用户自定义函数中的任何命令和函数,还有永久关系中参照 完整性代码。
• 对数据库中的数据进行地相似或相同的处理,可以编写成自定义 函数或过程保存在存储过程中,以供其他时候调用。
FUNCTION cj_rule PARAMETERS cj 创建、修改或移去存储过程有以下几种: IF cj>=0 and cj<=100 (1)在“项目管理器”中,选择并展开一个数据库,选 .T. RETURN 定“存储过程”,然后选择“新建”、“修改”或“移去” ELSE RETURN .F. 按钮。 ENDIF (2)在“数据库设计器”中,从“数据库”菜单中选择 ENDFUNC “编辑存储过程”按钮。 在cj字段的验证规则中设 置如下:cj_rule(cj.cj)
(1)“工具”—“选项”
独 占
3.3.4 表的打开与关闭
数据库第3章习题参考答案
第3章习题解答1.选择题(1)表设计器的“允许空”单元格用于设置该字段是否可输入空值,实际上就是创建该字段的(D)约束。
A.主键B.外键C.NULL D.CHECK (2)下列关于表的叙述正确的是(C)。
A.只要用户表没有人使用,则可将其删除B.用户表可以隐藏C.系统表可以隐藏D.系统表可以删除(3)下列关于主关键字叙述正确的是(A )。
A.一个表可以没有主关键字B.只能将一个字段定义为主关键字C.如果一个表只有一个记录,则主关键字字段可以为空值D.都正确(4)下列关于关联叙述正确的是( C )。
A.可在两个表的不同数据类型的字段间创建关联B.可在两个表的不同数据类型的同名字段间创建关联C.可在两个表的相同数据类型的不同名称的字段间创建关联D.在创建关联时选择了级联更新相关的字段,则外键表中的字段值变化时,可自动修改主键表中的关联字段(5)CREATE TABLE语句(C )。
A.必须在数据表名称中指定表所属的数据库B.必须指明数据表的所有者C.指定的所有者和表名称组合起来在数据库中必须唯一D.省略数据表名称时,则自动创建一个本地临时表(6)删除表的语句是(A)。
A.Drop B.Alter C.Update D.Delete(7)数据完整性不包括(B )。
A.实体完整性B.列完整性C.域完整性D.用户自定义完整(8)下面关于Insert语句的说法正确的是(A )。
A.Insert一次只能插入一行的元组B.Insert只能插入不能修改C.Insert可以指定要插入到哪行D.Insert可以加Where条件(9)表数据的删除语句是( A )。
A.Delete B.Inser C.Update D.Alter(10)SQL数据定义语言中,表示外键约束的关键字是(B )。
A.Check B.Foreign Key C.Primary Key D.Unique 2.填空题(1)数据通常存储在表中,表存储在数据库文件中,任何有相应权限的用户都可以对之进行操作。
数据库第三章课后习题答案
第三章课后习题3-7(1) delete from sWhere placeofb=’上海’;(2)delete from scWhere s# in (select s#from swhere sname=’李建平’);(3)delete form sWhere s# in(select s#from scwhere grade is null);3-8(1)update scSet grade=61Where grade<60 and c# in(select c#from cwhere cname=’计算机网络’);(2)update scSet grade=grade*1.05Where grade<(select avg(grade)From scWhere c# in(select c#From cWhere cname=’数据结构’)) andC# in(select c#From cWhere cname=’数据结构’);3-10(1)create view grade_tAsSelect s.s#,sname,c.c#,cname,classh,grade,t.t#,tnameFrom s,c,t,sc,teachWhere s.s#=sc.s# and c.c#=sc.c# and sc.c#=teach.c# and teach.t#=t.t#;(2)create view teach_lAsSelect t.t#,tname,c#,cname,classh,avg(grade) as avg_gradeFrom t,c,sc,teachWhere t.t#=teach.t# and teach.c#=sc.c# and sc.c#=c.c#Group by t.t#;3-11 select s#,snameFrom sWhere ssex=’男’;3-12 select s#,snameFrom sWhere sbirthin>’1981-1-1’ and sex=’女’;3-13 select s#,ssex,scode#From sWhere s# in (select s#From scWhere c# in (select c#From cWhere cname=’操作系统’));3-14 select s#,sname,scode#From sWhere s# in(select s#From scWhere c# in(select c#From teachWhere t# in(select t#From tWhere tname=’刘少华’)));3-15 select s#,snameFrom sWhere not exists(select *From cWhere not exists(select *From scWhere sc.s#=s.s# andc.c#=sc.c#));3-16 select c#,classh,tnameFrom c,teach,t,s,scWhere c.c#=sc.c# and sc.c#=teach.c# and teach.t#=t.t# and sc.s#=s.s# and s.sname=’王丽丽’;3-17 select c#,classhFrom cWhere c# in(select c#From teachWhere t# in(select t#From tWhere tname=’刘少华’));3-18 select tnameFrom tWhere t# in(select t#From teach);3-19 select s#,sname,sbirthinFrom sWhere scode# in(select scode#From ssWhere ssname=’计算机应用技术’) order by sbirthin;3-20 select s#,snameFrom sWhere s# in(select s#From scWhere c# in(select c#From cWhere cname=’计算机网络’)); 3-21 select s#,snameFrom sWhere s# in(select s#From scWhere c# in(select c#From cWhere cname=’计算机网络’));Intersectselect s#,snameFrom sWhere s# in(select s#From scWhere c# in(select c#From cWhere cname=’信息安全技术’)); 3-22 select s#,sname,ssnameFrom s,ssWhere s.scode#=ss.scode# and s# not in(select s#From scWhere c# in(select c#From cWhere cname=’计算机网络’));3-23 select c#,cnameFrom cWhere c# in(select c#From scGroup by c#Having count(*)>=5);。
SQL Server数据库 第三章数据库的基本操作
2.视图(View):视图看上去同表似乎一模一样,具有一组命名的字段和数据项,但它其 实是一个虚拟的表,在数据库中并不实际存在。视图中的数据来自表的全部或部分数据,也 可以取自多张表的全部或部分数据。
第三章
3.1.2 SQL Server的系统数据库
tempdb数据库:是一个临时数据库,它为所有的临时表 和 其 他 临 时 存 储 需 求 提 供 存 储 空 间 , 是 一 个 由 SQL Server 中 所 有 数 据 库 共 享 使 用 的 工 作 空 间 。 当 用 户 与 SQL Server断开连接或系统关机时,该数据库中的内容 被自动清空。每次SQL Server启动时,tempdb数据库 都将被重建恢复到系统设定的初始状态,因此千万不要 将tempdb数据库作为数据的最终存放处。同时,临时数 据库是系统中负担较重的数据库,可以通过将其置于 RAM中以提高数据库的性能。
数据库是存放数据的“仓库”,是指长期存储在计算机内、有组织、 可共享的数据集合,用户可以通过创建数据库来存储不同类别或者形式 的数据。本章主要介绍在SQL Server 2008中如何通过图形化方法和 Transact-SQL语句来创建用户数据库、以及对创建的用户数据库进行 维护管理操作。
3.1.1 SQL Server的数据库对象
第三章
第三章--数据库的基本操作
3.1 SQL Server数据库的基本知识和概念 3.2 创建数据库 3.3 查看和设置数据库信息 3.4 打开数据库 3.5 修改数据库 3.6 分离数据库 3.7 附加数据库 3.8 删除数据库 3.9 小结 3.10 应 用 举 例
数据库第三章关系数据库
2013年9月10日
3.3.1 实体完整性示例:主关键字
学号 9901 9902 9903 9904
姓名 张三 李四 王五 赵六
年龄 20 18 19 20
性别 男 女 女 男
所在系 计算机 计算机 计算机 计算机
3.2.3 关系形式定义
定义:D1×D2 × …. × Dn 的任意一子集叫 作D1,D2….Dn上的一个n元关系,用R( D1, D2….Dn)表示。 如:对刚才的例子取子集: R={(P2,显卡),(P4,显卡),(P7,声卡)}
器件号 P2 P4 P7 器件名 显卡 显卡 声卡
3.2.4 基本关系的性质
①分量必须取原子值,即每个分量必须是不可再分的数据项。 ②列是同质的,即每一列中的分量是同一类型的数据,来自同 一个域。 ③不同的列可出自同一个域,称其中的每一列为一个属性,不 同的属性要给予不同的属性名。 ④列的顺序无所谓,即列的顺序可以任意交换。 ⑤行的顺序无所谓,即行的顺序可以任意交换。 ⑥任意两个元组不能完全相同。
3.2.4 关系性质1—分量是原子
孩子 父 母 大 小
李男 王男
丁女 肖女
李一 王一
李二
非规范化关系
父 母 大孩 小孩 父 母 孩子
李男 王男
丁女 肖女
李一 王一
李二
李男 李男 王男
丁女 丁女 肖女
李一 李二 王一
规范化关系
3.2.4 关系性质2——同质的列
学号 9901 9902 王五 9904
50000 50001
CNAME
梁亮 吴丹
数据库原理第三章课后习题答案
第三章作业一、试述SQL特点SQL集数据查询、数据操纵、数据定义和数据控制功能于一体,其主要特点包括以下几部分。
1.综合统一2.高度非过程化3.面向集合的操作方式4.以同一种语法结构提供多种使用方式5.语言简洁,易学易用二、设有两个关系S(A,B,C,D)和T(C,D,E,F),写出与下列查询等价的SQL表达式(1)select A,B,S.C, S.D,E,Ffrom S,Twhere S.C=T.C(2)select * from S,Twhere S.C=T.C三、设关系RA B C10 NULL 2020 30 NULL写出查询语句SELECT * FROM R WHERE X的查询结果,其中X分别为1.1 A IS NULL;1.2 A>8 AND B<20;1.3 A>8 OR B<20;1.4 C+10>25;1.5 EXISTS (SELECT B FROM R WHERE A=10);use Rcreate table R(A tinyint primary key,B tinyint,C tinyint)1.11.21.31.41.5四、基于教材中的学生-课程数据库,用SQL完成如下查询:2.1 创建一张新表,记录每个学生的学号、选课门数和总学分数。
格式如下SCC(sno, totalCourse, totalCredit)并插入每个学生相应的数据。
create table SCC( sno char(10),totalcourse tinyint,totalcredit int)insertinto SCC(sno,totalcourse,totalcredit)select sc.sno,count(distinct o)as totalcourse,sum(ccredit)as totalcredit from sc,student,coursegroup by sc.snoselect*from SCC2.2、查询缺考和不及格课程多于3门的学生的学号和姓名select sc.sno,snamefrom student,scwhere exists(select snofrom scwhere grade<60 or grade=nullgroup by snohaving count(grade)>3)2.3 查询每个学生超过他自己选修课程平均成绩的课程号(写出3种以上类型的方法)(1)select cnofrom sc,(select sno,avg(grade)from sc group by sno)as avg_sc(avg_sno,avg_grade)where sc.sno=avg_sc.avg_sno and sc.grade>=avg_sc.avg_grade(2)select sno,cnofrom sc xwhere grade>=(select avg(grade)from sc ywhere y.sno=x.sno);2.4 查询同时选修了“数据库”和“数据结构”的学生的学号和姓名(写出5种以上类型方法)(1)select sno,snamefrom student,coursewhere cname='数据库'and sno in(select snofrom scwhere cname='数据结构')(2)select sc.sno,snamefrom student,course,scwhere student.sno=sc.sno and o=o and cname='数据库'intersectselect sc.sno,snamefrom student,course,scwhere student.sno=sc.sno and o=o and cname='数据结构';五、在上机实践过程中遇到过什么问题?解决方案是什么?。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
宋林锐2011060090019 例3-1 数据库的创建本地生成Sql server2008对象资源管理器上出现HIS数据库:3-2 数据库的修改本地磁盘上保存的文件HIS_DATA2被删除,修改HIS_DATA1的大小为12M,增加了HIS_DATA3:例3-3 数据库的删除例3-4数据表的操作,表的建立通过sql server2008可视化查看表Medicine中各个数据对象的类型:例3-5数据表的操作,表的建立通过sql server2008可视化查看表Medicine及表RecipeMaster中各个数据对象的类型:例3-6数据表的操作,表的建立通过sql server2008可视化查看表Patient中各个数据对象的类型:例3-7数据表的操作,表的建立通过sql server2008可视化查看表RecipeDetail及表Doctor中各个数据对象的类型:例3-8数据表的操作,表的修改(增加一列)例3-9数据表的操作,表的修改(删除一列)通过sql server2008可视化查看表Patient中删除一列后的特征,下图中没有了列Pino:例3-10数据表的操作,表的删除由上图结果可知删除表RecipeMaster出现错误,原因是因为该表中的药品编号(Mno)是一个外键,其含约束的从表是RecipeDetail,所以因先删除表RecipeDetail,再删除表RecipeMaster:Drop Table RecipeDetail;Drop Table RecipeMaster;例3-11表中数据操作,SQL语言基本查询(无条件查询)查询医生基本信息表中所有医生的信息:select *from Doctor查询结果如下:例3-12表中数据操作,SQL语言基本查询(无条件查询)查询医生基本信息表中所有医生的姓名和专业职称:select Dname医生姓名,Dlevel专业职称from Doctor查询结果如下:例3-13表中数据操作,SQL语言基本查询(无条件查询)在医生基本信息表中,查询有医生的部门编号,要求不重复显示:select distinct Ddeptno from Doctor查询结果如下:例3-14表中数据操作,SQL语言基本查询(条件查询)查询医生基本信息表中所有男医生的基本信息:select *from Doctor where Dsex='男'查询结果如下:例3-15表中数据操作,SQL语言基本查询(条件查询)在医生基本信息表中查询职称为副的医生信息:select *from Doctor where Dlevel like '副%'查询结果如下:例3-16表中数据操作,SQL语言基本查询(条件查询)在医生基本信息表中查询查询年龄小于或等于40岁的男医生信息:select *from Doctor where Dsex='男'and Dage<=40查询结果如下:例3-17表中数据操作,SQL语言基本查询(条件查询)在医生基本信息表中,查询部门编号为102,103和201的医生信息:select *from Doctor where Ddeptno in('102','103','201')查询结果如下:例3-18表中数据操作,SQL语言基本查询(ORDER BY字句查询)在医生基本信息表中,按照年龄升序查询男医生信息:select *from Doctor where Dsex='男' order by Dage ASC查询结果如下:例3-19表中数据操作,SQL语言基本查询(ORDER BY字句查询)在医生基本信息表中,按部门编号升序及年龄降序查询医生信息:select *from Doctor order by DdeptnoASC,Dage DESC查询结果如下:例3-20表中数据操作,SQL语言基本查询(带表达式的查询)在药品信息表中,查询药品单价提高15%后超过30元的药品信息:select Mno编号,Mname药品名,Mprice单价,Mprice*1.15 调整价格,Munit单位,Mtype类型from Medicine where Mprice*1.15>=30查询结果如下:例3-21表中数据操作,SQL语言基本查询(带聚集函数的查询)在医生基本信息表中,按部门编号统计不同部门的医生人数:select Ddeptno部门编号,count(Dno) 人数from Doctor group by Ddeptno查询结果如下:例3-22表中数据操作,SQL语言基本查询(带聚集函数的查询)在医生基本信息表中,按部门统计男医生的平均年龄不超过40岁的部门编号,并按平均年龄升序显示:select Ddeptno部门编号,AVG(Dage) 平均年龄from Doctorwhere Dsex='男' group by Ddeptno having AVG(Dage)<=40order by AVG(Dage)查询结果如下:例3-23表中数据操作,多表间的连接查询(内连接)查询患者的每个处方用药信息:selectRecipeDetail.*,Medicine.* from RecipeDetail,MedicinewhereRecipeDetail.Mno=Medicine.Mno查询结果如下:例3-24表中数据操作,多表间的连接查询(内连接)查询开出处方的医生信息:selectRno,Pno,D.Dno,Dname,Dsex,Dage,Ddeptno,DlevelfromRecipeMasterR,Doctor DwhereR.Dno=D.Dno查询结果如下:例3-25表中数据操作,多表间的连接查询(内连接)查询医院的各部门名称及其上级部门名称:select First.DeptName部门名称,Second.DeptName上级部门fromDeptFirst,Dept SecondwhereFirst.ParentDdeptNo=Second.DdeptNo查询结果如下:例3-26表中数据操作,多表间的连接查询(外连接)查询医院的各部门名称和该部门医生姓名:select DeptName部门名称,Dname医生姓名from Dept left outer join DoctoronDept.DdeptNo=Doctor.Ddeptno查询结果如下:例3-27(为ORACLE数据库上实现,故此处没实现)例3-28表中数据操作,嵌套查询(不相关子查询)查询与医生刘伟有诊断关系的患者:SELECT Pname FROM PatientWHERE Pno IN (SELECT Pno FROM RecipeMasterWHERE Dno = (SELECT Dno FROM DoctorWHERE Dname='刘伟'))查询结果如下:例3-29表中数据操作,嵌套查询(不相关子查询)查询所开处方不包含药品“胃立康片”的医生:SELECT Dname FROM DoctorWHERE Dno IN ( SELECTDno FROM RecipeMasterWHERE Rno IN ( SELECTRno FROM RecipeDetailWHERE Mno NOT IN ( SELECTMno FROM MedicineWHERE Mname='胃立康片')))查询结果如下:例3-30表中数据操作,嵌套查询(不相关子查询)查询比任何女医生年龄都大的男医生姓名和年龄:SELECT Dname姓名,Dage年龄FROM DoctorWHERE Dsex='男' AND Dage>ANY(SELECT Dage FROM DoctorWHERE Dsex='女')查询结果如下:等价于:SELECT Dname姓名,Dage年龄FROM DoctorWHERE Dsex='男' AND Dage> (SELECT MIN(Dage) FROM DoctorWHERE Dsex='女')查询结果如下:例3-31表中数据操作,嵌套查询(不相关子查询)查询小于任何男医生年龄的女医生姓名和年龄:SELECT Dname姓名,Dage年龄FROM DoctorWHERE Dsex='女' AND Dage<ALL(SELECT Dage FROM DoctorWHERE Dsex='男')查询结果如下:等价于:SELECT Dname姓名,Dage年龄FROM DoctorWHERE Dsex='女' AND Dage< (SELECT MIN(Dage) FROM DoctorWHERE Dsex='男')查询结果如下:例3-32表中数据操作,嵌套查询(相关子查询)在医院数据库中,查询部门编码为101,103和201等部门的医生姓名和年龄:SELECT Dname姓名,Dage年龄FROM DoctorWHERE Ddeptno IN (101,103,201)查询结果如下:例3-33表中数据操作,嵌套查询(相关子查询)查询给姓名为“刘景”的患者开过处方的医生:SELECT Dno医生编号,Dname姓名,Dsex性别,Dage年龄,Dlevel职称FROM Doctor WHERE EXISTS ( SELECT * FROM RecipeMasterWHERE RecipeMaster.Dno=Doctor.DnoAND EXISTS(SELECT * FROM PatientWHERE Patient.Pname='刘景' AND Patient.Pno=RecipeMaster.Pno )) 查询结果如下:当采用不相关子查询实现时,等价于:SELECT Dno医生编号,Dname姓名,Dsex性别,Dage年龄,Dlevel职称FROM Doctor WHERE Doctor.DnoIN(SELECT Dno FROM RecipeMasterWHERE RecipeMaster.PnoIN(SELECT Pno FROM PatientWHERE Patient.Pname='刘景'))查询结果如下:例3-34表中数据操作,联合查询在医院数据库中,为了提高系统处理效率,需要定期对患者的诊断信息归档,假定患者诊断归档信息表为Diagnosis,如果医生要查询患者“刘景”的近期和历史诊断信息,以便分析患者的病因。