收藏 分享(赏)

数据库概论.doc

上传人:jw66tk88 文档编号:8767395 上传时间:2019-07-11 格式:DOC 页数:30 大小:194.50KB
下载 相关 举报
数据库概论.doc_第1页
第1页 / 共30页
数据库概论.doc_第2页
第2页 / 共30页
数据库概论.doc_第3页
第3页 / 共30页
数据库概论.doc_第4页
第4页 / 共30页
数据库概论.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、第一章 系统概述1.1 数据 库系统的基本知识1.2 数据模型 1.3 数据 库系统结构 1.1 数据库系统的基本知识1.1.1 数据、信息与数据处理一、概念信息:是对现实世界事物存在方式或运动状态的反映。数据(Date):是指用符号记录下来的、计算机可以识别的信息。(信息在计算机中是以数据的形式存在的。数据是信息的符号表示或载体,信息则是数据的内涵,是对数据语义的解释)数据处理:对数据进行收集、存储、加工、传输等一系列活动总和。(分为联机事务处理和联机分析处理)1.1.2 数据库系统 数据库(Data Base,简称DB):指存储在计算机内的、有组织、可共享的数据集合。 数据库管理系统(Da

2、ta base Management System,简称DBMS): 一个在操作系统支持下,对数据库进行各种操作的软件系统。 数据库管理系统用来帮助用户建立、使用和管理数据库,并对数据库中的数据进行各种操作,如:增删、更新、查找、输出等。 数据库系统(Date Base System,简称DBS)人机系统,包含:用户、计算机硬件、数据库、数据库管理系统和为用户编写的应用程序,以便对数据库进行操作。数据库系统的主要构成1.1.3 数据处理技术的发展经历了三个主要阶段:1.人工管理阶段(20世纪50 年代中期以前)2.文件系统阶段(20世纪50 年代后期-60 年代中期)3.数据库系统阶段(20世

3、纪60 年代末至今) 人工管理阶段(20世纪50年代中期以前)特点:数据不保存;应用程序管理数据;无独立性和共享性。 文件系统阶段(20世纪50年代后期-60年代中期 )特点:数据以文件形式长期保存;文件系统管理数据;独立性、共享性较差。 数据库系统阶段 数据库系统主要特性:(1) 数据的独立性 在数据库系统中,数据库管理系统把数据与应用程序隔离开来,使数据独立于应用程序,当数据的存储方式和逻辑结构发生改变时,并不需要改变用户的应用程序。(2) 数据的共享性 存储在数据库中的数据能作出多种组合,以最优方式满足不同用户的需求。数据共享可以提高数据的利用率,减少数据的冗余度,有利于保持数据的一致性

4、。(3) 可修改与可扩充性 数据库系统在结构和组织技术上是易于修改和扩充的。由于用户需求的不断变化,数据也需要不断的扩充,数据库是逐步建立和完善起来的。数据库系统主要特性:(4) 统一管理与控制 数据库系统能对数据进行必要的完整性管理与控制,确保数据的正确、有效。在多用户环境下,由于多个用户同一时刻访问同一数据库时,可能造成数据更新失控及数据可靠性降低等问题,数据库系统的并发控制功能及事务机制提供了避免出现这种错误的能力。(5) 安全与保密性 数据库系统可以提供安全性与保密性措施,使得数据不被破坏与窃用。数据的安全性涉及数据的保护措施,也就是要避免无权限使用的人或无权限修改的人对数据进行有意或

5、无意的破坏或泄露。数据的保密性涉及个人或机构自身的权利,它决定何时、何地、何种程度的传递。 学生信息处理程序 课程信息处理程序 选课信息处理程序 成绩报表处理程序数据库表关系示例1.2 数据模型1.2.1 数据模型的组成要素是对现实世界数据特征的描述。要求应能比较真实地模拟现实世界,比较容易理解,便于计算机实现。数据模型按应用层次的分类数据模型可分成两类:1.概念数据模型概念数据模型是一种面向客观世界、面向用户的模型;它与具体的数据库管理系统无关,与具体的计算机平台无关。概念模型着重于对客观世界复杂事物的结构描述及它们之间的内在联系的刻画。2.(逻辑)数据模型逻辑数据模型是一种面向数据库管理系

6、统的模型,概念模型只有在转换成逻辑数据模型后才能在数据库中得以表示。概念模型 实体:客观存在、可相互区分的事物。如一件产品、一个学生、一门课程、一次选课、一次定货等。 实体集:同类实体的集合。 属性和码:实体所具有的某一特性称为属性。如学生实体由学号、姓名、性别、年龄、系等属性来描述。可以唯一标识实体的属性(组)称为实体的码。如学号。 域:属性的取值范围称为该属性的域。 实体型:用于描述和抽象同一实体集共同特征的实体名及其属性名的集合。 实体间的联系:共有三种,即一对一联系;一对多联系;多对多联系。用实体-关系图(E-R 图 )来表示概念模型:概念模型的表示方法在E-R图中,实体型、属性及实体

7、间的联系是这样来表示的: 实体型:用标有实体名的矩形框表示。 属性:用标有属性名的椭圆形框表示,并用一条直线与其对应的实体连接。例:概念模型的表示方法 实体间的联系:用标有联系的菱形框表示,并用直线将联系与相应的实体型相连接,且在直线靠近实体型的那端标上1或n 等,以表明联系的类型(1:1、1:n或n:m)。例:结构(逻辑)数据模型(1) 层次模型(采用树型结构)层次模型表示了实体之间一对多联系的从属关系结构。支持层次模型的DBMS称为层次数据库管理系统,在这种系统中建立的数据库是层次数据库。 (2)网络模型(采用无向图型结构)网状模型表示了实体之间多对多联系的关系结构。支持网状模型的DBMS

8、称为网状数据库管理系统,在这种系统中建立的数据库是网状数据库 。 (3)关系模型(采用二维表结构)关系数据模型是指用二维表结构来表示实体以及实体之间联系的模型。在关系数据模型中,操作的对象和结果都是二维表,这种二维表就是关系。关系模型把数据库表示为关系的一个集合。通俗地说,每个关系都类似一张表。4、关系模型的特点关系模型将数据组织成二维表的形式,一张二维表构成的关系模型应满足以下条件:1) 表中每列数据属于同一类型。2) 表中不允许有重复的字段名。3) 表中不允许有相同的行。 4) 表中行和列的顺序可以任意。5) 不允许表中带表。1 23 E-R模型到关系模型的转换实体-联系模型是一种常用的高

9、级概念数据模型,而实体- 联系图(简称E-R图)是实体- 联系模型中的核心。E-R图可用于描述数据流图中数据存储及其间的关系,它是数据库概念设计的最常用工具(实例见10.2.3 系统设计阶段 )。E-R图由实体、实体的属性和实体之间的联系3个要素组成,而关系模型的逻辑结构是一组关系模式的集合。将E-R图转换为关系模型就是要将实体、实体的属性和实体之间的联系转化为关系模式。转换的关系模式如下: 客户(客户代号,公司名称,城市,电话) 订单(订单代号,客户代号,订购日期,运货费) 产品(产品代号,产品名称,单价) 订货(订单代号,产品代号,数量)将E-R图转换为关系模型的转换方法如下:(1)一个实

10、体型转换为一个关系模式;(2)一个m:n联系转换为一个关系模式;(3)一个1:n 联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并;(4)一个1:1 联系可以转换为一个独立的关系模式,也可以与任意一端(一般为全部参与方)对应的关系模式合并;(5)3个或 3个以上实体间的一个多元联系转换为一个关系模式;(6)同一实体集的实体间的联系,即自联系,也可按上述1:1、1:n和m:n 三种情况分别处理;(7)具有相同码的关系模式可合并。 1.3 数据库系统的内部结构体系 数据库系统在其内部具有三级模式和两级映射。1三级模式(1)概念模式 概念模式是数据库系统中全局数据逻辑结构的描述,是全

11、体用户公共数据视图。此种描述是一种抽象的描述,不涉及具体的硬件环境与平台,也与具体的软件环境无关。(2)外模式 也称子模式或用户模式,它是用户的数据视图,也就是用户所见到的数据模式,它由概念模式推导而出。一个概念模式可以有若干个外模式。(3)内模式 也称物理模式,给出了数据库物理存储结构与物理存取方法。内模式的设计直接影响数据库的性能。2两级映射(1) 概念模式到内模式的映射该映射给出了概念模式中数据的全局逻辑结构到数据的物理存储结构间的对应关系,一般由数据库管理系统实现。(2) 外模式到概念模式的映射该映射给出了外模式与概念模式的对应关系,这种映射一般也是由数据库管理系统来实现的。数据库系统

12、三级模式两级映射的体系结构,保证了数据库数据的逻辑独立性和物理独立性。作业 1. 试述信息、数据、数据库(DB)、数据库管理系统(DBMS)、数据库系统(DBS )的基本概念。 2. 实体与实体间存在哪三种联系?试举例说明。 3. 试述数据库系统的三级模式结构。 4什么是数据库系统的物理独立性和逻辑独立性,是如何实现的? 5. 设一个学校有若干系,每个系有若干教师和一批学生,每个教师可以讲授多门课程,同一门课程可由不同教师讲授,每个学生可选修若干门课程,每门课程可以有若干学生选修。试用ER图描述该学校的概念模型。 第二章 关系数据库2.1 关系模型的 结构2.2关系模型的操作2.3 关系模型的

13、完整性约束1、关系模型由关系数据结构、数据操作集合和数据完整性三部分组成。(关系模型三要素) 关系数据结构是一张平面的二维数据表; 数据操作对象和结果都是集合,主要指查询操作和增加、删除和修改操作; 数据完整性包括三个方面的内容:实体完整性、参照完整性、用户自定义完整性。2、对关系的描述称为关系模式。一个关系模式对应一个关系的结构,表示为:关系名(属性名1,属性名2 ,属性名 n)关系模型的结构-二维 表 表格中的行称为元组,用来表示同一实体中若干平行的、相关的个体属性。元组对应于数据表中的一个具体记录。 表格中的列称为属性,每个属性都有一个名字,称为属性名,如学号、姓名、性别等; 属性的取值

14、范围称为域,例如姓名的取值范围是文字字符。 属性或属性的组合,其值能惟一标识一个元组,称为关键字,如学生表中的学号。 如果表中的一个字段不是本表的主关键字或候选关键字,但用于和其它表的关键字或候选关键字进行关联,这个字段(属性)就称为外部关键字。 表格中所有元组的集合就构成一个关系。 从集合论的观点来看,一个具体的关系(数据库)模型就是若干个有联系的关系模式的集合。2.2 关系运算从集合论的观点来定义关系,每个关系是一个具有K个属性的元组集合,即这个关系有若干个元组,每个元组有K个属性值。关系运算是在关系上对元组或属性进行运算的操作,运算结果仍然是关系。关系的基本运算有两类,一类是集合运算(并

15、、差、交等),另一类是专门用于关系数据库的运算(选择、投影、联接等)。1、集合运算假设R和S是两个关系,则有以下操作:(1)并。并操作表示为,它是一个关系,包括或者在R中、或者在S中、或者同时在R 和S中的所有元组。(2)交。交操作表示为R S,它是一个关系,包括既在 R中又在S中的所有元组。(3)差。差操作表示为R S,它是一个关系,包括在 R中,但是又不在S中的所有元组。2、关系数据库的运算(1) 选择(Select)从关系中找出满足给定条件的元组称为选择。选择是从行的角度进行运算,即从水平方向选取元组,记为: (R )。其中条件是逻辑表达式,逻辑表达式值为真(.T.)的元组被选取。经过选

16、择运算选取的元组可以形成新的关系,它是原关系的一个子集,其关系模式不变。SQL SELECT语句中的选项WHERE,对表进行选择运算。例2.1 从学生表中查询所有男学生的档案情况。SELECT * FROM 学生 WHERE 性别=男 ;(2) 投影(Project)从关系中选取若干属性组成新的关系称为投影,记为:A(R),其中A为R的属性名表。投影是从列的角度进行运算,相当于对关系进行垂直分解。SQL SELECT语句中的选项,对表进行投影运算。例2.2 从学生表中显示所有学生的学号,姓名,性别,入学成绩。SELECT 学号,姓名,性别,入学成绩 FROM 学生 ;(3) 联接运算(Join

17、)联接是将两个或两个以上关系的属性横向联接成一个新的关系,记为:R S。新的关系中包含满足联接条件的元组。 条件例2.3 设有教员和通讯录两个关系,用SQL SELECT语句将两个关系的部分属性联接成一个新的关系。联接条件是:教员(教师代号)通讯录(教师代号)SELECT教员.教师代号, 教员.姓名, 教员.性别, 通讯录.邮编, 通讯录.地址,通讯录.电话FROM 教员 INNER JOIN通讯录ON教员. 教师代号=通讯录. 教师代号 ;2.3 关系模型的完整性约束 实体完整性:若属性A是基本关系R的主属性,则属性A不能取空值。 参照完整性:若属性(组)F是基本关系的外码,它与基本关系S的

18、主码K 相对应,则对于每个元组在F上的值必须为:a)或者取空值 b)或者等于 S中某个主码值。 用户定义的完整性:用户根据实际情况,针对某一具体关系数据库的约束条件。作业 1. 试述关系、关系模式、关系数据库的基本概念。 2. 试述主码、候选码、外码的基本概念。 3. 设有一 TSC数据库,包含教师( Teacher)、学生(Student)、课程(Course)、授课(TC)和选课(SC )五个关系模式: Teacher(Tno,Tname,Tage,Tsex,Tdept,Ttel,E_mail) 教师(教师号,姓名,年龄,性别,所属系,电话,E_mail) Student(Sno,Snam

19、e,Sage,Ssex,Sdept) 学生(学号,姓名,年龄,性别,所属系) Course(Cno,Cnmae,Ccredit,Chour) 课程(课程号,课程名称,学分,学时) TC(Tno,Cno,Ayera,Semester,Class,Rating) 授课(教师号,课程号,学年,学期,班级,评教等级) SC(Sno,Cno,Grade) 选课(学号,课程号,成绩)作业 试用关系代数语言完成如下查询: 查询所有信息系教师的姓名和联系电话; 查询所有外语系和信息系学生的姓名和年龄; 查询所有课程的课程号、课程名称和学分; 查询所有学生的选课信息; 查询信息系教师的授课信息; 查询至少有一门

20、课评教等级为优的教师的教师号; 查询至少有一门课成绩在90分以上的学生的学号; 查询所有选修了“1”号课程且成绩在80分以上的学生的学号。 4试述关系数据模型的三类完整性。 5在参照完整性规则中,何时外码中各属性的值可以为空? 第三章 关系数据库标准语言SQL3.1 SQL概述3.2 数据定 义3.3 查询3.4 数据更新3.5 数据控制3.1 SQL 概述3.1.1 SQL语言SQL(Structured Query Language 结构化查询语言),是操作关系型数据库的标准数据查询语言,是用于关系型数据库定义、数据操作和数据检索的标准语言。其中,查询是SQL 语言的核心。自从1986年1

21、0月由美国国家标准局ANSI (American National Standards Institute)公布了SQL标准以后,SQL就被当作是关系型数据库的工业标准语言。1987年,这个标准被国际标准化组织ISO(International Standards Organization)作为国际标准来接受。 SQL语言支持关系数据库三级模式结构,其中模式对应于基本表,外模式对应于视图和部分基本表,内模式对应于存储文件。基本表是独立存在的表,一个关系对应一个基本表,一个表可以建立若干个索引。视图是从基本表或视图中导出的表,视图是一个临时表,一种定义,它本身不独立存储于数据库中。存储文件中逻辑

22、结构组成了关系数据库的内模式。 SQL提供了9种语句,分别完成数据库定义、数据操作和数据检索等功能,如表4.1所示。3.2 SQL的定义功能标准的SQL的数据定义功能一般包括:数据库定义、表的定义、视图的定义、存储过程的定义 等。3.2.1 表的定义格式:CREATE TABEL ( 字段的完整性约束, 字段的完整性约束,表级完整性约束); 功能:创建表,并可根据需要定义完整性。 说明:1.不同的数据库系统支持的数据类型不完全相同,常用的如下:INT 整数。FLOAT 浮点数。CHAR(n) 长度为n 的定长字符串。DATE 日期型,格式为YYYY-MM-DD。TIME 时间型,格式为HH.M

23、M.SS 2. 完整性约束可用:UNIQUE(值唯一)、NOT NULL(非空)、CHECK(条件) 、PRIMARY KEY(主码)、FOREING KEY(外码)定义。例3.1 在teacher数据库下建立一个名为“STUDENT”的数据表,可在查询的SQL窗口输入并执行如下命令:CREATE TABLE student( sno char(7) UNIQUE,sname char(8) NOT NULL,ssex char(2), sdate date,sdept char(10),score float,PRIMARY KEY (sno);例3.2 用类似方法可建立”COURSE”表和

24、”SC” 表如下:CREATE TABLE course( cno char(3) UNIQUE,cname char(8) NOT NULL,ccredit int,chour int, PRIMARY KEY (cno);CREATE TABLE SC( sno char(7),cno char(3),grade float,PRIMARY KEY (sno,cno),FOREIGN KEY(sno) references student(sno),FOREIGN KEY(cno) references course(cno);3.2.2 表结构的修改修改表结构的SQL语句是ALTER T

25、ABLE,一般格式为:ALTER TABEL ALTER ADD 完整性约束DROP;功能:修改 所指定表的结构。例3.3 将student表的sdept字段的宽度由原来的10改为12 。ALTER TABLE student ALTER sdept char(12);例3.4 将student表的性别字段默认值定义为”男”。ALTER TABLE student ALTER ssex char(2) DEFAULT “男“;例3.5 为student表增加一个字符类型的tel(电话)字段。ALTER TABLE student ADD tel char(13);例3.6 删除 student

26、表的tel字段。ALTER TABLE student DROP tel;3.2.3 基本表的删除格式:DROP TABLE 例3.7 将SC表从teacher 数据库中删除。Drop table sc;3.3 SELECT(查询)语句SQL语言的核心是查询。查询是使用SQL-SELECT语句从数据库中查看信息,它的基本形式由SELECT- FROM- WHERE查询块组成,WHERE子句用于构造查询条件,其中可再含有一个查询块,将其称为嵌套查询。SQL的查询命令也称作SELECT命令。查询是根据需要以只读的方式从数据库中提取数据,SQL - SELECT命令是目前用于检索数据最强有力的语句。

27、 当我们在应用程序中使用查询或视图时,实际是在使用 SELECT - SQL 语句。添加到应用程序中的查询,可以对数据源进行各种组合,并有效地筛选记录、管理数据并对结果排序。SELECT语句的格式 SELECT ALL | DISTINCTAlias. Select_Item AS Column_Name, Alias. Select_Item AS Column_Name . FROM DatabaseName!Table Local_Alias, DatabaseName!Table Local_Alias . INTO Destination| TO FILE FileName ADDI

28、TIVE | TO PRINTER PROMPT | TO SCREENPREFERENCE PreferenceNameNOCONSOLEPLAINNOWAITWHERE JoinCondition AND JoinCondition . AND | OR FilterCondition AND | OR FilterCondition .GROUP BY GroupColumn , GroupColumn .HAVING FilterConditionUNION ALL SELECTCommandORDER BY Order_Item ASC | DESC , Order_Item ASC

29、 | DESC . SQL - SELECT命令看上去非常复杂,但其常用的有五个子句,各子句的含义如下:SELECT:说明要查询的数据 (目标列,字段)。FROM:说明要查询的数据来自哪些表,可以对单个表或多个表进行查询。WHERE:说明查询的条件,即选择记录的条件。GROUP BY:用于对查询结果进行分组及分组汇总。HAVING 必须跟随GROUP BY 使用,它用来限定分组必须满足的筛选条件。ORDER BY:用于对查询结果进行排序。为了便于理解和学习,下面给出常见的SQL - SELECT语句包含4部分,格式如下:SELECT ALL|DISTINCT ,FROM , WHERE GRO

30、UPBY HAVING ORDERBY ASC|DESC;在SQL -SELECT语句中,第 1部分是最基本的和不可缺少的,其余部分可选 。3.3.1 单表查询 单表查询语句基于一个表的所有列或者几个列,可以由SELECT- FROM子句构成无条件查询,由SELECT- FROM- WHERE子句构成有条件查询。一、单表无条件查询例3.8 从学生表中查询学号,姓名和性别三列:SELECT sno,sname,ssex FROM student;例3.9 从学生表中查询所有的字段SELECT * FROM student; 例3.10查询学生的专业SELECT sdept FROM studen

31、t;例3.11 查询学生的专业,取消重复行。SELECT DISTINCT sdept FROM student;例3.12 利用计算函数查询学生的人数、平均入学成绩、最高入学成绩、最低入学成绩。SELECT count(*) AS 学生人数,avg(score) AS 平均入学成绩, max(score) AS 最高入学成绩,min(score) AS 最低入学成绩FROM student;二、单表条件查询的基本格式:SELECT ALL|DISTINCT ;FROM WHERE 在查询中的SELECT关键字后的列项是查询的结果 。WHERE 短语指定了查询条件,查询条件可以是各种简单或者复

32、杂的表达式,如是存在多于一个的条件,它们之间用AND和OR连接。例3.13 查询新闻专业的学生,显示学号、姓名、性别、专业。SELECT sno,sname,ssex,sdeptFROM studentWHERE sdept=“新闻“ ;例3.14 从学生表中查询“学号”、“ 姓名”、“ 性别”、“专业” 及入学成绩在450分至600分之间的记录。SELECT sno,sname,ssex,sdept,scoreFROM studentWHERE score BETWEEN 450 AND 600;例3.15 使用IN 运算符号,查询专业为外贸或计算机的学生姓名。SELECT sname,sd

33、eptFROM studentWHERE sdept IN (“外贸“,“计算机“);3.3.2 排序查询ORDER BY子句用于对查询结果进行排序。格式:ORDER BY 字段名 |表达式ASC|DESC说明: ORDER BY 子句用于指定查询结果的排列顺序,ASC 表示升序,DESC表示降序,ORDER BY子句缺省的设置是升序。 ORDER BY 可以指定多个列为作为排序关键字。例3.16 查询学生的学号、姓名、专业、入学成绩,首先按专业从小到大排序,如果专业相同,则再按入学成绩从大到小排序。SELECT sno,sname,sdept,scoreFROM studentORDER B

34、Y sdept,score DESC ;3.3.3 分组与计算查询 GROUP BY子句用来对查询结果进行分组,把某一列值相同的记录分在一组,一组产生一条记录。HAVING子句用来对分组后的结果进行过滤,HAVING后面的过滤条件一般都要使用集函数(COUNT、SUN等)。GROUP BY子句的格式如下:GROUP BY HAVING 例3.17 从成绩表中查询选修了3 门以上(包括 3门)课程学生的学号、课程数和期末平均成绩。SELECT sno,Count(*) AS 课程数,avg(grade) as 平均成绩 FROM scGROUP BY sno HAVING count(*)=3;

35、3.3.4 利用特殊运算符查询一、利用空值查询例3.18 在系表中找出已确定负责人的系SELECT * FROM 系 where 系主任 is not null;二、使用 BETWEEN 运算符查询例3.19 查询基本工资在1250至1550 之间的教师信息。SELECT * FROM 教师WHERE 工资 BETWEEN 1250 AND 1550;3.3.5 多表连接查询 在查询关系数据库时,有时需要的数据分布在几个表或视图中,此时需要按照某个条件将这些表或视图连接起来,形成一个临时的表,然后再对该临时表进行简单的查询。多个表(视图)之间的连接类型主要有以下几种:1内连接(INNER JO

36、IN):内连接是使用最多的一种连接类型,在连接的两表中,只有满足连接条件的记录,才作为结果输出。 2左连接(LEFT JOIN);3右连接(RIGHT JOIN);4全连接(FULL JOIN)。连接查询的类型可以在SELECT 语句的FROM 子句中指定,也可以在其WHERE子句中指定。 例3.22 将上例改为在 WHERE 子句中指定连接类型和条件。SELECT student.sno,sname,cno,gradeFROM student,sc WHERE student.sno=sc.sno and sdept in(“计算机系” ,”外贸系” )ORDER BY sdept,snam

37、e;例3.23 查询选学了3 门以上课程学生的学号、姓名、所属系及课程数。SELECT student.sno,sname,sdept,COUNT(*) AS 课程数FROM student INNER JOIN SC ON student.sno=sc.snoGROUP BY student.sno HAVING COUNT(*)=3;或:select student.sno,sname,sdept,count(*) as 课程数From student,scWhere student.sno=sc.snoGroup by student.sno having count(*)=3;3.3.

38、6 嵌套查询 在SQL中,一个SELECTFROMWHERE称为一个查询块,将一个查询块嵌套在另一个SELECT语句的WHERE 子句或HAVING子句中称为嵌套查询,也就是说,SELECT语句中还有SELECT语句叫做嵌套查询。嵌套查询体现查询的结构化。 例3.24 查询选学了课程代号是“10101“课程学生的学号、姓名、性别和专业。SELECT SNO,SNAME,SSEX,SDEPTFROM studentWHERE sno in (SELECT snofrom sc where o=“10101“); 例3.25 查询与刘兰教师在同一个系的其他教师的教师号及姓名。Select tno,

39、tname from teacherWhere tdept in(select tdept from teacherwhere tname=“刘兰”)and tname”刘兰”; 例3.26 查询”刘兰”教师所授课程的课程名。Select cname from courseWhere cno in(select cno from tcwhere tno in(select tno from teacherwhere tname=“刘兰”);3.4 SQL操作功能 SQL语句可以完成有关表记录的插入、更新、删除等相关操作。 3.4.1 插入记录 格式1:Insert Into (, )Value

40、s ( , );格式2:INSERT INTO (, )SELECT 子查询;功能:INSERT语句用于插入记录。第1种格式是把一条记录插入指定的表中。 第2种格式用于从其他表中筛选一些元组插入到指定表中。例3.27 向“ 学生”表中插入新记录。INSERT INTO student(sno,sname,ssex,sdate,sdept,score)VALUES (“9906021“,“卫民“,“男“,#1982/11/21#,“中文“,560); 例3.28 建立一个高级教师表,并从教师表中向其追加数据。Create table hteacher(tno char(6),tname char

41、(8),tsex char(2),tdept char(3),PRIMARY KEY (tno);INSERT INTO hteacherSelect tno,tname,tsex,tdept from teacherWhere tzc in(1,2);3.4.2 DELETE删除语句格式:DELETE FROM 表 WHERE条件功能:DELETE语句从表中删除满足条件的记录。如果WHERE子句缺省,则删除表中所有的记录,但是表没有被删除,仅仅删除了表中的数据。例3.29 删除学生表中姓名为卫民的记录。在命令窗口输入并执行如下命令:DELETE FROM studentWHERE sname

42、=“卫民“ ; 例3.30 删除未选课的学生信息。Delete from studentWhere sno not in(select sno from sc); 例3.31 删除三门以上课程不及格的学生信息。Delete from studentWhere sno in(select sno from scwhere grade=3);3.4.3 UPDATE更新语句格式:UPDATE 表名 SET 字段1表达式1,字段2 表达式2;WHERE 功能:UPDATE 语句修改指定表中满足条件的记录,把这些记录按表达式的值修改相应字段上的值。如果WHERE子句缺省,则修改表中所有的记录 例3.3

43、2:将学生表中“计算机”专业修改为“ 计算机应用”。 UPDATE student SET sdept = “计算机应用 “WHERE sdept=“计算机“ ; 例3.33 修改学生表,使每个学生年龄增长一岁。Update student set sage=sage+1; 例3.34 将刘兰教师给国会1班所授的“计算机应用 ”课程的评教等级该为“ 良 ”。Update 评教 set 评教等级=“良“Where 工号 in(select 工号 from 教师 where 姓名=“刘兰“) and 课程代码 in(select 课程代码 from 课程 where 课程名称=“计算机基础“) a

44、nd 班级=“国会1“;3.5 数据安全控制SQL语句可以完成有关表、视图等的权限控制。对象的常用权限为:SELECT、INSERT、UPDATE、DELETE等。3.5.1 授予权限 格式:GRANT ON TO ;功能:GRANT语句用于授予权限 。例3.35 将对“学生表”、“ 选课表”的查询权限授予用户U1GRANT SELECT ON 学生表,选课表TO U1;3.5.2 收回权限格式:REVOKE ON FROM ;功能:REVOKE 语句用于废除权限 。例3.36 将用户U1对“选课表”的查询权限收回。REVOKE SELECT ON 选课表FROM U1;作业1. 用CREAT

45、E TABLE 语句建立如下图所示的Book和Autor关系模式。 BOOK表作业AUTHOR表作业2. 利用SQL 语句重做第二章习题3。3. 对第二章习题 3中的5个关系模式,用SQL语句完成下列操作:(1)查询“张云”学生的选课信息,包括:学号、姓名、课程名、成绩、学分。(2)查询课时数为72且学分为3的课程的所有信息。(3)查询“方雪”教师教授的课程的名称。(4)查询选修了“1”号和“4”号课程且成绩介于80分和90 分之间的学生的学号。(5)查询所有姓李的教师的姓名、年龄、性别和系名。(6)查询姓名中第三个字为“ 冰”的教师的姓名、年龄、性别和系名。(7)查询所有有成绩的学生的学号、

46、课程号和相应的成绩。(8)查询所有没有成绩的学生的学号、课程号。(9)查询学生的人数。(10)查询信息系教师的人数。(11)查询信息系男生的平均成绩。 1、从键盘上输入系名(若不输入系名,则表示全部系),查询出每个系的系名、资金小计等字段,按系号从小到大排列。 2、查询出奖金小计值超过2500 的教师姓名、奖金小计等字段;按奖金小计值从大到小排列,若奖金小计值相同,按工号从小到大排列。 3、按月份统计每个系的系名和奖金小计,按月份从小到大排列。并在查询的基础上生成交叉表,行放置系名,列放置月份,数据处放置:奖金小计。 4、从键盘上输入起始日期和终止日期,按月份统计出起始日期和终止日期这两个日期

47、期间的每个系的系名和奖金小计,输出三个字段:月份、系名、奖金小计;按月份从小到大排列,若月份相同按系号从小到大排列。 5、将“评教”等级为优良的教师记录生成一个名为 “优秀教师候选”表,输出姓名、等级字段,按工号从小到大排列。第四章 关系数据库的规范化设计 4.1 关系模式的存储异常问题 4.2 函数依赖 4.3 范 式 4.4 关系模式的规范化 本章主要讨论关系数据库的规范化问题,即针对一个实际的应用环境,如何构造一个合理的数据库模式。一个好的关系数据库模式中的每一个关系模式都必须是合理的,应当不会有修改异常、插入异常和删除异常,数据冗余也应尽可能少。到底什么样的关系模式是最优的?该如何设计

48、一个合理的关系数据库模式?这些问题都是本章讨论的重点。 4.1关系模式的存储异常问题 在讨论关系数据库规范化问题之前,先通过下面的例子来说明一个不合理的关系模式会产生哪些问题。 例4.1 某贸易公司为保存客房的订单信息,特设计了关系模式CustomerOrder(Ono,Cno,Company,Address,Odate,Freight, Pno,Quantity)。其中,属性Ono、 Cno、Company、Odate、Freight、Pno和Quantity分别代表订单代号、客户公司的代号、公司名称、客户的公司地址、订购日期、运货费、产品代号和数量。该关系模式的一个具体实例如图4-1所示。 不难看出,上面的关系模式CustomerOrder存在着如下几个问题: 1数据冗余一个客户公司通过一张订单订购了多少个产品,该公司的信息(如公司名称、地址)就会被重复存放多少次。例如,好欣公司在订单代号为“O001”的订单上就订购了三种产品,于是该客户公司的代号、公司名称、公司地址和相应的订购日期就被重复存放了三次。若该公司还有其他订单的话,重复的信息就更多了。 2修改异常数据的冗余,必将给数据的修改带来额外负担。由于客户公司的住处被重复存放在多个元组中,如果该公司

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报