数据库原理及应用复习大纲11.doc_第1页
数据库原理及应用复习大纲11.doc_第2页
数据库原理及应用复习大纲11.doc_第3页
数据库原理及应用复习大纲11.doc_第4页
数据库原理及应用复习大纲11.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

数据库原理及应用复习大纲Part 1 数据库技术的概念和应用一、数据库系统1、数据(data):信息在计算机中的反映,能够用符号表示的信息(文字、数字、图形、图象)。2、数据库(database):存储在计算机外部设备(如硬盘)上,有组织的、结构化的、可共享的数据集合。 特点: 具有最小的冗余度、具有数据独立性、实现数据共享、安全可靠、保密性能好3、数据库管理系统(database management system ,DBMS):用于管理数据库系统的商品化的计算机软件,数据库在建立、运用和维护时由数据库管理系统统一管理、统一控制。4、数据库系统(DataBase System)定义: 是以数据库应用为基础的计算机系统。组成:数据库硬件(计算机硬件设备)软件(数据库管理系统 、操作系统)用户(应用程序设计员、终端用户、数据库管理员 )分类:层次型数据库、网状型数据库、关系型数据库分代:第一代 非关系型数据库系统,60年代末问世,包括层次型和网状型。 第二代 关系型数据库系统(RDBS),70年代中期问世。第三代 对象-关系数据库系统(ORDBS 、OOBDS),80年代中期至今。上述三个概念之间的联系:在数据库系统中通过数据库管理系统来建立和使用数据库。Access 属于一种关系型数据库管理系统。数据语言:数据定义语言(DDL): 用来建立所需的数据库。数据操作语言(DML): 用来对数据库进行查询和维护操作。关系型数据库使用的标准语言是结构化查询语言(Structured Query Language, SQL)。在对象关系模型中,属性的符合类型包括:多集类型、数组类型、结构类型和集合类型。分布式数据库系统的特点是数据的分布性和整体的逻辑性。数据完整性约束分为静态约束和动态约束。.数据库阶段的数据管理有些什么特点答:采用复杂的数据模型表示数据结构,具有较高的数据和程序的独立性,系统为用户提供方便的用户接口系统提供统一的数据控制功能(安全性、完整性、并发控制和恢复)数据的最小存储单位是数据项二、数据模型1、三种不同的数据模型:层次模型、网状模型、关系模型2、概念模型:按用户的观点对数据和信息建模 数据模型:按计算机系统的观点对数据建模3、信息世界中的基本概念(1)实体:客观存在并可相互区别的事物,指具体的人、事物,抽象的概念、联系(2)属性:实体的某一特征,一个实体由若干个属性刻画(3)码(关键字key):唯一标识实体的属性(4)域:属性的取值范围(7)联系: 实体与实体之间的联系、 实体内部的联系 1对1联系(1:1) 1对多联系(1:n) 多对多联系(m:n)4、概念模型的表示方法:实体联系图(ER图),将实体及其属性、联系用ER图表示采用E-R方法进行概念结构设计的步骤:(1) 设计局部E-R概念模式(2) 设计全局E-R模式(3) 全局E-R模式的优化。该模型主要反映企业组织的信息需求5、关系数据模型的数据结构关系表记录表中的行属性(字段): 属性名(字段名)表中的列如:学号、姓名等主码(关键字key):某个属性,唯一确定一个记录 如:学号域(数据类型):属性的取值范围分量记录中的一个属性值,必须是不可再分数据项如:李明关系模式:对关系的描述,一般表示为:关系名(属性1,属性2,属性3,)如:学生(学号,姓名,性别,年龄) 课程(课程号,课程名,学分) 选课(学号,课程号,成绩)6、ER图向关系数据模型的转换:转换为特定DBMS所规定的模型规则:(1)1个实体转换为1个关系模式 如:学生(学号,姓名,性别,年龄)、课程(课程号,课程名,学分) (2)1个联系转换为1个关系模式 如: 选课(学号,课程号,成绩),关系的码是各实体码的组合7、分布式DBS中,DBMS的功能如何划分?有哪两种方法? 答:在分布式DBS中,把DBMS的功能划分成客户机和服务器两级(。有下面两种方法:(1)集中式DBMS的功能放在服务器一级,称为SQL服务器(2)基于面向对象方法,把DBMS的软件功能以更加集成的方式划分到客户机和服务器中8、事务日志用于保存对数据的更新操作Part 2 关系数据库和SQL一、关系数据库系统1、关系数据库系统:支持关系模型的数据库系统2、关系模型由关系数据结构、关系操作集合和完整性约束三部分组成(广义)3、基本表(关系):实际存在的表,实际存储数据的逻辑表示 基本关系具有6条性质: (1)列是同质的,即每一列中的分量来自同一个域 (2)不同的列可出自同一个域,称其中的每一列为一个属性(字段),不同的属性要给予不同的属性名 (3)列的顺序无所谓,即列的次序可以任意交换 (4)任意两个记录不能完全相同 (5)行的顺序无所谓,即行的次序可以任意交换 (6)分量必须取原子值,即每一个分量都必须是不可分的数据项4、关系操作:包括查询操作和增、删、改等更新操作两大部分5、关系模型的完整性规则:对关系的某种约束条件(1)实体完整性规则:基本关系的主属性不能取空值(2)参照完整性规则:若属性(或属性组)f是基本关系R的外码,它与基本关系S的主码ks相对应,则对于R中每个记录在f上的值必须为: 或者取空值(f的每个属性值均为空值) 或者等于S中某个记录的主码值(3)用户定义的完整性:针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。6.规范化理论对数据库设计有什么指导意义? 答:具体地讲,以下几个方面起着重要作用:(1)在需求分析,用数据依赖的概念来分析和表示各个数据项之间的联系(2)在概念设计阶段,以规范化理论为工具来构造实体类型和联系类型,设计ER模型并对其进行优化(3)在逻辑设计阶段,使用规范化理论来设计模式和评价模式7、什么是数据库系统的三级模式结构? 答 :三级模式结构:外模式、模式和内模式) 一、模式(Schema)定义:也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。二、外模式(External Schema) 定义:也称子模式(Subschema)或用户模式,是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。)三、内模式(Internal Schema) 定义:也称存储模式(Storage Schema),它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式(例如,记录的存储方式是顺序存储、按照B树结构存储还是按hash方法存储;索引按照什么方式组织;数据是否压缩存储,是否加密;数据的存储记录结构有何规定)。8、关系代数中专门的关系运算包括:选择、投影、连接和除法例:设有关系R、S和T,如下表示关系R 关系S 关系20运用以上关系中的数据,完成下述运算:(1)RS、RS、R-S、RS(2) A=3(R)、A=3(R)二、SQL1、SQL是关系数据库的标准语言2、SQL功能SQL功能动词数据查询SELECT数据定义CREAT,DROP,ALTER数据操纵INSERT,UPDATE,DELETE数据控制GRANT,REVOTE3、数据定义(1)定义基本表CREATE TABLE (长度1)NOT NULL,(长度2)NOT NULL,)(2)修改基本表ALTER TABLE ADD (长度)NOT NULL|DROP (3)删除基本表DROP TABLE (4)定义索引CREATE INDEX ON (ASC|DESC, ASC|DESC)WITH PRIMARY(5)删除索引DROP INDEX ON 4、数据查询SELECT ALL|DISTINCT AS 列名1,FROM WHERE ORDER BY ASC|DESC(1)单表查询 1) 选择表中的若干列 2)选择表中的若干记录(行)(2)连接查询(多表查询)5、数据操纵(更新)(1)插入数据INSERTINTO VALUES (,);(2)修改数据UPDATE SET (=,)WHERE ;(3)删除数据DELETE FROM WHERE ;例:6、 SQL的分类1、数据定义语言(DDL:Data Definition Language)创建、修改或删除数据库中各种对象,包括表、视图、索引等。2、查询语言(QL:Query Language)按照指定的组合、条件表达式或排序检索已存在的数据库中的数据,但并不改变数据库中数据。3、数据操纵语言(DML:Data Manipulation Language )对已经存在的数据库进行记录的插入、删除、修改等操作4、数据控制语言(DCL:Data Control Language)用来授予或收回访问数据库的某种特权、控制数据操纵事务的发生时间及效果、对数据库进行监视注意:在书写各种SQL 命令时,命令中所涉及的标点符号,如括号、逗号、分号、圆点(英文句号)等都应是英文半角,如果写成中文全角符号,则会在执行命令时出错。 7. 数据定义命令数据定义命令用于建立数据库和建立、修改、删除基本表。7.1 建立数据库ANSI标准SQL中建立数据库(SCHEMA:模式)的命令是:CREATE SCHEMA AUTHORIZATION ;例如:创建者是温翠灵,则上面命令写作:CREATE SCHEMA AUTHORIZATION 温翠灵;大多数的关系数据库管理系统(RDBMS),所使用的命令格式于ANSI SQL不同,这些RDBMS更常用下面命令格式:CREATE DATABASE ;例如建立学费管理数据库的命令是:CREATE DATABASE xfgl;7.2 建立数据表建立基本表的命令格式为:CREATE TABLE (NOT NULL,NOT NULL,);其中:NOT NULL指的是该列的值不能为空值。例1:建立学生基本情况表的命令是:create table jbqk(number char(8)not null,name char(8)not null,sex char(2)not null,birthday datetime,department char(12);SQL Server 2000中常用的数据类型:Int或integer:整数,占用3个字节Decimal或numeric:数字数据类型,格式Decimal(数据长度,小数位数)float 和 real:浮点数,float更灵活一些datetime:代表日期和一天内的时间的日期和时间数据类型。从1753年1月1日到9999年12月31日的日期和时间数据,如:1998-01-01 23:59:59.993char:固定长度字符数据类型:格式:char(n)n 必须是一个介于 1 和 8,000 之间的数值,当使用字符型数据时需要用或”括起来。 建立课程表的命令是:create table course(c_number char(3)not null,c_name char(20)not null,period decimal(3,0),t_number char(3) not null);建立教师表(teacher)的命令是::create table teacher(t_number char(3) not null,t_name char(8),title char(10);建立选课表(sle_course)的命令是::create table sle_course(number char(8) not null,c_number char(3),score decimal(3,0); 7.3 数据表的修改1添加新列命令:ALTER TABLE ADD 列名 数据类型;例2:下面命令在jbqk表中添加“score”列。alter table jbqk add score decimal(3,0);2删除表中的列ALTER TABLE DROP COLUMN 列名;例3:下面命令在jbqk表中添加“成绩”列之后,再删除“score”列。alter table jbqk add 成绩 decimal(3,0);alter table jbqk drop column score;7.4 数据表的删除DROP TABLE ;例4:删除刚才所建的jbqk表,使用如下命令格式:drop table jbqk; 7.4.5 索引的建立与删除索引是对数据库表中一个或多个列的值进行排序的结构。可以利用索引快速访问数据库表中的特定信息。1建立索引语句CREATE UNIQUE INDEX 索引名 ON 基本表名(列名次序,列名次序);说明:索引可以建立在一列和多列之上,索引顺序可以是ASC(升序)或DESC(降序),缺省值是升序。UNIQUE表示每一个索引值对应唯一的数据记录。例5:在学生基本情况表jbqk之上建立一个关于学生表的索引文件。索引文件名为“学生索引”,索引建立在学号之上,按学号降序排序。Create index 学生索引 on jbqk(name desc);2删除索引语句DROP INDEX .;注意:该命令不能删除由CREATE TABLE或者ALTER TABLE命令创建的主键和唯一性约束索引,也不能删除系统表中的索引。例6:删除例5创建的索引“学生索引”。程序如下:DROP INDEX JBQK.学生索引8 数据查询语言8.1 查询语句格式SQL语言的查询语句一般格式是:SELECT ALL|DISTINCT, FROM ,WHERE GROUP BY HAVING ORDER BY ASC|DESC;下面对该命令进行一些说明: 1命令含义 从FROM子句指定基本表或视图中,根据WHERE子句的条件表达式查找出满足该条件的记录,按照SELECT子句指定的目标列表达式,选出元组中的属性值形成结果表。如果有GROUP BY子句,则将结果按“列名1”的值进行分组,该属性列值相等的元组为一个组;如果GROUP BY子句带有短语HAVING,则只有满足短语指定条件的分组才会输出。如果有ORDER BY子句,则结果表要按照的值进行升序和降序排列。SELECT ALL|DISTINCT实现的是对表的投影操作,WHERE 中实现的是选择操作。 2目标列表达式列表达式可以是“列名1,列名2”的形式;如果FROM子句指定了多个表,则列名应是“表名.列名”的形式。列表达式可以使用SQL提供的库函数形成表达式,常用的函数如下:COUNT(*):统计记录条数。COUNT(列名):统计一列值得个数。SUM(列名):计算某一数值型列的值的总和。AVG(列名):计算某一数值型列的值的平均值MAX(列名):计算某一数值型列的值的最大值MIN(列名):计算某一数值型列的值的最小值DISTINCT参数:表示在结果集中,查询出的内容相同的记录只留下一条。 8.2 单表查询单表查询是指仅设计一个表的查询。1选择表中的列例1:选择jbqk表中的所有列。select * from jbqk;例2:选择jbqk表中的number、name、department列。select number,name,department from jbqk;例3:选择jbqk中所有各个系的名字,去掉重复行。select distinct department from jbqk;select 2003-year(birthday) from jbqk2选择表中的记录选择表中的记录是通过where子句实现的。例4:选择jbqk中所有计算机系的学生。查询条件运 算 符说 明比 较,=,=,字符串比较从左向右进行确定范围BETWEEN AND,NOT BETWEEN ANDBETWEEN后是下限,AND后是上限确定集合IN,NOT IN检查一个属性值是否属于集合中的值字符匹配LIKE,NOT LIKE用于构造条件表达式中的字符匹配空 值IS NULL,IS NOT NULL当属性值内容为空时,要用此运算符逻辑运算AND,OR,NOT用于构造复合表达式Select * from jbqk where department=计算机系3条件表达式的构成例5:查询考试成绩不及格学生的学号。SELECT DISTINCT number FROM sle_course WHERE score 60;例6:查询学时在6070之间的课程名称和学时。SELECT c_name,period FROM course WHERE period BETWEEN 60 AND 70例7:查询学时不在在6070之间的课程名称和学时。SELECT c_name,period FROM course WHERE period NOT BETWEEN 60 AND 70;例8:假设当前的系统年份为2002,查询计算机系、电子系学生的学号、姓名、年龄。Select number,name,2002-year(birthday) from jbqk where department in(计算机系,电子系);例9:查询所有姓“王”的学生信息。Select * from jbqk where name like 王%;此例中,使用了谓词LIKE。在使用时,应注意下面几点:LIKE前的列名必须是字符串类型。可以使用通配符:_(下划线)表示任一单个字符;%(百分号)表示任意长度字符。 4查询中集函数的使用说明:DISTINCT:取消列中的重复值ALL:为默认状态,表示不取消重复值。 例10:查询学生总人数。SELECT COUNT(*) FROM jbqk;函数名称函数功能COUNT(DISTINCT|ALL *)统计元组个数COUNT(DISTINCT|ALL)统计一列重值的个数SUM(DISTINCT|ALL)计算数值型一列值的总和AVG(DISTINCT|ALL)求一列值的平均值MAX(DISTINCT|ALL)求一列值的最大值MIN(DISTINCT|ALL)求一列值的最小值例11:计算0052201学生的平均成绩。SELECT AVG(score) FROM jbqk WHERE number = 0052201; 5查询结果的分组与排序 GROUP BY子句将查询结果表按某一列或多列值分组,值相等的为一组。分组的目的是为了将集函数的作用对象细化,分组后集函数将作用在每一个组上,也就是说每个组都有一个函数值。 例12:查询选修了2门以上课程的学生学号,并且查询结果按照升序排列。 SELECT number FROM sle_course GROUP BY number HAVING COUNT(*) 2 ORDER BY number ASC; WHERE与HAVING的区别在于作用的对象不同。WHERE子句作用于基本表或视图,从中选择满足条件的记录;HAVING短语作用于分组,从中选出满足条件的组。 3.3.3 多表查询例13:查询所有选修课程的学生信息,包括所学的课程名、授课教师和成绩。Select jbqk.number,,course.c_name,sle_course.score,teacher.t_nameFrom jbqk,course,sle_course,teacherwhere jbqk.number=sle_course.number andsle_course.c_number=course.c_number andcourse.t_number=teacher.t_number 3.3.3 嵌套查询 在SQL语言中,一个SELECTFROMWHERE语句成为一个查询块。将一个查询块嵌套在另一个查询块的WHERE子句(或HAVING短语)的条件中的查询称为嵌套查询。处于内层的查询称为子查询。嵌套查询命令在执行时,每个子查询在上一级查询处理之前求解,即由里向外查。 例13:查询选修了“数据库技术”课程的学生姓名。Select from jbqk Where jbqk. number in(Select sle_course.number from sle_course Where sle_course.c_number in ( Select course.c_number from course Where course.c_name=数据库技术);在一些嵌套查询中WHERE之后可以使用ANY和ALL这两个谓词,ANY表示子查询结果中的某个值,而ALL表示子查询结果中的所有值。 谓词形式语 义谓词形式语 义ANY大于子查询结果中的某个值ALL大于子查询结果中的所有值ANY大于等于子查询结果中的某个值ALL大于等于子查询结果中的所有值ALL小于等于子查询结果中的所有值ALL等于子查询结果中的所有值=ANY等于子查询结果中的某个值!=(或) ALL不等于子查询结果中的所有值!=(或) ANY不等于子查询结果中的某个值例15:查询所有课程成绩在95分以上的学生的学号、姓名。Select number,name from jbqk where number=any( select number from sle_course Where score=95)9 数据操纵语言39.1 插入数据INSERT INTO ( , , ) VALUES ( , , , )例1:向学生基本情况表(jbqk)中插入一条记录。INSERT INTO jbqk VALUES(0051101,王云丽,女,1981-12-18,电子系,85);例2:向教师表(teacher)中插入一条记录。INSERT INTO te

温馨提示

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

评论

0/150

提交评论