数据库复习综述_第1页
数据库复习综述_第2页
数据库复习综述_第3页
数据库复习综述_第4页
数据库复习综述_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、数据库复习综述1、 概念数据模型:实体、属性、实体间的联系;E-R图逻辑数据模型:层次模型、网状模型、关系模型、面向对象模型2、 数据独立性:改变某一层的模式时不需要改变更高层的模式。物理数据独立性:概念模式不会随着内模式的改变而改变。逻辑数据独立性:外模式(或应用程序)不会随着概念模式的改变而改变。三级模式两级映射:三级模式:外模式(用户视图)、模式(概念模式,指的是DB的逻辑模型)、内模式(存储模式,对应物理级)两级映射:A. 概念模式/内模式映射:保证物理结构独立性B. 外模式/概念模式映射:保证逻辑结构独立性在SQL中,外模式对应于视图,模式对应于基本表,元组称为行,属性称为列。内模式

2、对应于存储文件。3、 关系模型的完整性原则实体完整性:主键不能取空值,即保证关系中的每个元组都是可识别和唯一的;参照完整性:外键取值必须为以下两类之一:a. 空值;b. 外键参照表中某个元组的主码值;用户定义完整性:常见的为对值域的约束。4、 SQL的组成数据定义语言(DDL)CREATE:创建数据库或数据库对象ALTER:对数据库或数据库对象进行修改DROP:删除数据库或数据库对象数据操纵语言(DML)INSERT:将数据插入到表或视图中,即可将一行数据或一个子查询的结果插入表或视图中;UPDATE:修改表或视图中的数据,既可修改表或视图中的一行数据,也可修改一组或全部数据;DELETE:从

3、表或视图中删除数据,并可根据条件删除指定的数据数据查询语言(DQL)SELECT:从表或视图中检索数据数据控制语言(DCL)GRANT:授予权限,可把语句许可或对象许可的权限授予其他用户和角色;REVOKE:收回权限,和GRANT的功能相反,但不影响该用户或角色从其他角色中作为成员继承许可权限;DENY:收回权限,并禁止从其他角色继承许可权限,功能与REVOKE相似,不同之处是:除收回权限外,还禁止从其他角色继承许可权限5、 SQL的数据定义如果完整性约束条件涉及到表的多个属性列,则必须把该约束定义在表级上,否则既可以定义在列级也可以定义在表级;修改基本表:ALTER TABLE <表名

4、> ( ADD <新列名> <数据类型> <完整性约束> DROP <完整性约束> ALTER COLUMN <列名> <数据类型> );删除表:DROP TABLE <表名>建立索引CREATE UNIQUE CLUSTER INDEX <索引名>ON <表名>( <列名> <次序> , <列名> <次序> . );每个<列名>后面可以用<次序>指定索引值的排列次序,可选ASC表示升序,DESC表示降序,默认

5、值为ASC。关键字UNIQUE表示为表或视图创建唯一索引,即不允许存在索引值相同的两行,如果对已存在数据的表创建唯一索引,必须保证索引对应的值无重复值;关键字CLUSTER用于指定创建聚簇索引,一个表或视图只允许有一个聚簇索引,所谓聚簇索引是指索引项的顺序与表中记录的物理顺序一致的索引组织。删除索引DROP INDEX <索引名>6、SQL的数据查询数据查询的格式:SELECT ALL | DISTINCT <目标列表达式> , <目标列表达式> .FROM <表名或视图名> , <表名或视图名> . WHERE <条件表达式&

6、gt; GROUP BY <分组列> HAVING <条件表达式> ORDER BY <排序列> ASC | DESC , . ;如果GROUP子句带HAVING短语,则只有满足指定条件的组才能输出;DISTINCT去掉查询结果中的相同行;WHERE子句中常用的查询条件:比较:= / > / < / >= / <= / != / <>不等于 / !> / !< / NOT+上述比较符确定范围:BETWEEN AND / NOT BETWEEN AND确定集合:IN / NOT IN字符匹配:LIKE / NOT

7、 LIKE空值:IS NULL / IS NOT NULL多重条件:AND / OR / NOT说明:A. LIKE谓词的语法格式: NOT LIKE <匹配串> ESCAPE <换码字符> 匹配串里面可使用通配符,%代表任意长度的字符串;_代表任意单个字符;用来实现一定范围内的数据查询;用来匹配不属于指定范围或集合中的任何单个字符。当要查询的字符串本身就含有%或_时,就要使用ESCAPE <换码字符>,对通配符进行转义了。例如:SELECT * FROM COURSE WHERE C_NAME LIKE 网_2 ESCAPE ;B. AND的优先级高于OR

8、C. 一个汉字占两个字符的位置,所以用通配符匹配一个汉字需要用两个_聚集函数AVG ( DISTINCT | ALL <列名> ):求一列值的平均值COUNT ( DISTINCT | ALL <列名> | * ):统计一列中值的个数或统计元组个数MAX ( DISTINCT | ALL <列名> ):求一列中的最大值MIN ( DISTINCT | ALL <列名> ):求一列中的最小值SUM ( DISTINCT | ALL <列名> ):求一列值的总和这些聚集函数除COUNT(*)外都忽略空值,只处理非空值在SELECT语句中,

9、各语句的作用和执行顺序:WHERE用于筛选由FROM指定的数据对象,GROUP BY用于对WHERE的结果进行分组,HAVING则是对GROUP BY以后的分组数据进行过滤。WHERE子句作用于基本表或视图;HAVING短语作用于组。7、 多表查询(表连接)一般格式:SELECT 列名,列名,列名FROM 表名 CROSS | INNER | LEFT | RIGHT OUTER JOIN 表名ON 表名.引用列名 连接操作符 表名.引用列名交叉连接(1)CROSS JOIN:含有多个表,但在ON子句中不含有任何条件的连接称为交叉连接,此连接的输出格式为笛卡尔乘积的格式。等值连接(2)INNE

10、R JOIN:表之间的连接是通过相等的字段值连接起来的,在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。特别注意连接依据的列可能包含 NULL 值,NULL 值不与任何值匹配(甚至和它本身)。自然连接(3)NATURAL JOIN,又称为内连接:两个关系中进行比较的分量必须是名称相同的列,若无ON子句,则两表中的所有名称相同的列都将被比较,并且在结果中把重复的属性列去掉,结果表中两表中名称相同的列只出现一次。等值连接中不要求相等属性值的属性列名相同,而自然连接要求相等属性值的属性列名必须相同,即两关系只有在同名属性上才能进行自然连接。

11、一个表与其自身进行连接,称为自连接(4)。在进行自连接时需要为连接的表指定两个别名,同时对所有列的引用均要使用表的别名来限定。例如:SELECT a.Name, b.Grade FROM SC a, SC b WHERE a.Grade = b.Grade左外连接(5a):查询结果不但包含满足连接条件的元组还包含连接时左表中的所有元组;右外连接(5b):查询结果不但包含满足连接条件的元组还包含连接时右表中的所有元组;全外连接(5c):查询结果中包含满足连接条件的元组以及连接时左/右表中的所有数组外连接中,不匹配的分量用NULL表示,语法格式如下:<表名1> LEFT | RIGHT

12、 | FULL OUTER JOIN <表名2> ON <连接条件>8、集合查询(切勿与多表查询弄混)<SELECT语句> UNION ALL | INTERSECT | EXCEPT <SELECT语句>并操作UNION;交操作INTERSECT;差操作EXCEPTUNION操作中关键字ALL表示重复的行不删除;不使用ALL则表示在合并时相同的行要删除9、嵌套查询将一个查询块嵌套在另一个查询块的WHERE子句或HAVING子句中的查询称为嵌套查询。子查询的SELECT语句中不能使用ORDER BY子句,ORDER BY子句只能对最终查询结果排序

13、。使用谓词IN的子查询:用于一个值对多个值的比较使用比较运算符的子查询:用于一个值对另一个值的比较带有ANY或ALL谓词的子查询:多值对多值的比较>ANY:大于子查询结果中的某个值,即大于子查询结果中的最小值<ANY:小于子查询结果中的某个值,即小于子查询结果中的最大值>=ANY:大于等于子查询结果中的最小值<=ANY:小于等于子查询结果中的最大值=ANY:等于子查询结果中的某个值,相当于IN!=ANY或<>ANY:不等于子查询结果中的某个值>ALL:大于子查询结果中的所有值,即大于子查询结果中的最大值<ALL:小于子查询结果中的所有值,即小于子

14、查询结果中的最小值>=ALL:大于等于子查询结果中的最大值<=ALL:小于等于子查询结果中的最小值=ALL:等于子查询结果中的所有值!=ALL或<>ALL:不等于子查询结果中的所有值,即相当于NOT IN使用EXISTS谓词的子查询:多值对多值的比较EXISTS代表存在谓词,带有EXISTS谓词的子查询不返回任何实际数据,只产生逻辑真值TRUE或逻辑假值FALSE。子查询的查询条件不依赖于父查询,称为不相关子查询子查询的查询条件依赖于父查询的某个属性值,称为相关子查询。10、数据更新插入单个元组:INSERT INTO <表名> ( <属性名1>

15、 , ( <属性名2> ) . ) VALUES ( ( <常量1> ) , <常量2> . );插入子查询结果(即现有数据的拷贝):INSERT INTO <表名> ( <属性名1> , ( <属性名2> ) . ) 子查询;将现有数据存入新表SELECT <属性名1> , ( <属性名2> ) .INTO <新表名>FROM <现表名>WHERE <条件>数据更新UPDATE <表名> SET <列名> = <表达式> ,

16、<列名> = <表达式> . WHERE <条件> ;数据删除DELETE FROM <表名> WHERE <条件> ; 11、SQL数据控制GRANT语句的一般格式:GRANT <权限> , <权限> .ON <对象类型><对象名> , <对象类型><对象名> TO <用户> , <用户> . WITH GRANT OPTION 说明:WITH GRANT OPTION子句表示获得某种权限的用户可以将这种权限再授予其他的用户。REVOKE

17、语句的一般格式:REVOKE <权限> , <权限> .ON <对象类型><对象名> , <对象类型><对象名> FROM <用户> , <用户> . CASCADE | RESTRICT 12、视图的定义及操作CREATE VIEW <视图名> ( <列名> , <列名> . ) AS <子查询> WITH CHECK OPTION 子查询可以是任意复杂的SELECT语句,但不允许使用ORDER BY子句和DISTINCT短语;WITH CHECK

18、OPTION表示对视图进行UPDATE / INSERT / DELETE操作时要保证更新、插入或删除的行满足视图定义的谓词条件(即子查询中的条件表达式)UPDATE / INSERT / DELETE操作同基本表操作,当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生改变。13、 候选码是能够唯一确定关系中任何一个元组(实体)的最少属性集合。在一个关系模式R中,可以有若干个候选码,则选定其中的一个作为主码。包含在任何一个候选码中的属性叫做主属性;不包含在任何候选码中的属性称为非主属性。14、 1NF:如果关系模式R的每一个关系r的属性值都是不可分的原子值,那么称R1NF的模式2NF

19、:若R1NF,且R中的每一个非主属性都完全函数依赖于R的任一候选码,则称R2NF3NF:如果R2NF,且关系R的任何一个非主属性都不传递函数依赖于它的任何一个候选码,则R3NF。3NF不允许关系模式的属性之间存在这样的非平凡函数依赖XY,其中X不包含码,Y是非主属性。BCNF:所有非主属性对每一个候选码都是完全函数依赖;所有的主属性对每一个不包含它的候选码都是完全函数依赖;没有任何属性完全依赖于非码的任何一组属性。15、 新奥尔良设计方法:需求分析;概念设计(E-R);逻辑设计(关系模型);物理设计(a. 为关系模式选择存取方法:索引方法-聚簇方法-Hash方法;b. 设计关系、索引等数据库文

20、件的物理存储结构)索引:根据应用要求确定对关系的哪些属性列建立索引,查询数据时,先在索引中根据查询的条件值找到相关记录的地址,然后在表中存取对应的记录,所以能加快查询速度;聚簇:将经常进行连接操作的两个或多个数据表,按连接属性(聚簇码)相同的值存放在一起,从而大大提高连接的操作效率。一个数据库中可以建立很多簇,但一个表只能加入一个聚簇中;Hash:根据查询条件的值,按Hash函数计算查询记录的地址,减少了数据存取的I/O次数,加快了存取速度。16、 参照完整性的控制:参照关系中的外键取值问题:一个关系的外键只能取空值,或者被参照表中对应主键的某个值;被参照关系中删除元组的问题:a. 级联删除;

21、b. 受限删除;c. 置空值删除;在参照关系中插入元组的问题:a. 受限插入:仅当被参照关系中存在相应的元组,其主键值与参照关系插入元组的外键值相同时,系统才执行插入操作,否则拒绝此操作;b. 递归插入:首先向被参照关系中插入相应的元组,其主键值等于参照关系插入元组的外键值,然后向参照关系插入元组。元组中主键值的修改问题:a. 不允许修改主键;b. 允许修改主键:在实现时,当修改的关系是被参照关系时,与删除类似;当修改的关系是参照关系时,与插入类似。17、 触发器:若在某个关系上创建了触发器,则当用户对该关系有某种数据修改操作,如插入、更新或删除等操作时,触发器就会自动被激活并执行。定义触发器

22、:CREATE TRIGGER <触发器名>BEFORE | AFTER <触发事件> ON <表名> FOR EACH <ROW | STATEMENT>WHEN <触发条件> <触发动作体>删除触发器:DROP TRIGGER <触发器名> ON <表名>说明:当触发器被激活,只有在触发条件为真时触发动作体才执行,否则触发动作体不执行。如果省略WHEN触发条件,则触发动作体在触发器激活后立即执行;触发动作体:可以是SQL过程块。如果触发动作体执行失败,激活触发器的事件就会终止执行,触发器的目标表

23、中相应对象不会发生变化。18、 SQL SERVER 2008提供了6类约束:主键约束:primary key(column1, column2)外键约束:foreign key (column) references other_table(other_column)默认约束:default()空值约束:主键列不允许出现空值;检查约束:对输入字段或表中的值设置检查条件,输入的内容必须满足检查约束;在多个字段上定义检查约束时,必须将检查约束定义为表级约束。建表时定义检查约束:CREATE TABLE table_name(column_name datatype NOT NULL | NULL

24、check_name CHECK ( logical_expression );在修改表时创建CHECK约束:ALTER TABLE table_nameADD CONSTRAINT check_name CHECK ( logical_expression );删除CHECK约束:ALTER TABLE table_nameDROP CONSTRAINT check_name;唯一约束:CONSTRAINT constraint_name UNIQUE(column)19、 并发控制事务:用户定义的一组操作序列的集合,是数据恢复和并发控制的基本单位。在SQL中,用户显式定义事务的语句有三条:

25、a. BEGIN TRANSACTION; b. COMMIT; c. ROLLBACK为保证数据的完整性,事务一般具有4个特性,即原子性、一致性、隔离性和持久性A. 原子性(Atomicity):事务是不可分隔的整体,事务中的操作要么不执行,要么全部执行;B. 一致性(Consistency):事务的执行结果必须使数据库从一个一致性状态转换到另一个一致性状态。所谓数据库的一致性状态是指数据库中的数据满足完整性约束;C. 隔离性(Isolation):多个事务并发执行与各个事务单独执行的结果一样。事务的隔离性是事务并发控制的基础;D. 持久性(Durability):事务一旦提交,它对数据库中

26、的数据的改变是永久的。20、 并发操作引发的问题:丢失更新:当两个事务T1和T2读入同一数据,并发执行修改操作时,T2把T1或T1把T2的修改结果覆盖掉,造成了数据的不一致。这个问题是由于两个事务对同一数据并发地进行写入所引起的,因而被称为“写写冲突”;读“脏”数据:事务T1更新了某一数据,并将修改后的值写入磁盘,事务T2读取了更新后的数据,其后事务T1由于某种原因被撤销,事务T1已更新过的数据恢复原值,这样事务T2读到的数据就与数据库中的数据不一致,是不正确的数据,称为“脏”数据,被称为“读写冲突”;不可重复读:事务T1读取数据后,事务T2进行读取并进行更新操作,使T1再次读取该数据进行校验

27、时,发现两次读取的数据值不一致,这也是由于“读写冲突”引起的。21、 排它锁(X锁),又称写锁:若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务不能对A加任何类型的锁,直到T释放A上的锁,才能对A进行封锁和其他读写操作;共享锁(S锁),又称读锁:事务T对某数据A建立了共享锁,则此事务T能对数据A进行读操作,但不能进行修改等更新操作;而其他事务只能对数据A加S锁不能加X锁,即其他事务只能对数据A进行读操作。共享锁保证了多个事务可以同时读A,在A上的共享锁未被释放之前,都不能写A。22、 封锁协议一级封锁协议:事务T在修改数据R之前必须必须先对其加X锁,直到事务结束才释放。事务结

28、束包括正常结束(COMMIT)和非正常结束(ROLLBACK)。一级封锁协议可以防止丢失修改,并保证事务T是可恢复的;在一级封锁协议中,如果仅仅是读数据而不对其进行修改,是不需要加锁的,它并不能保证可重复读和不读“脏”数据。二级封锁协议:在一级封锁协议的基础上,事务T在读取数据R之前必须先对其加S锁,读完后方可释放S锁。二级封锁协议除了可防止丢失更新外,还可以进一步防止读“脏”数据;但在二级封锁协议中,由于读完数据后即可释放S锁,所以它不能保证可重复读。三级封锁协议:在一级封锁协议的基础上,事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。三级封锁协议可防止丢失更新、读“脏”数据及不

29、可重复读。以上三种封锁协议的主要区别在于什么操作需要申请封锁,以及何时释放。23、 活锁:在封锁过程中,当多个事务请求对同一数据封锁时,使某一用户总是处于等待状态,得不到封锁的机会。解决方法:先来先服务。死锁:多个事务都处于等待对方解除封锁的状态。预防方法:a. 一次封锁法:事务执行前一次申请完成所有锁;b. 顺序封锁法:将封锁的对象按顺序编号,事务在申请封锁时按编号顺序申请;解除方法:用超时法或等待图法确定死锁,然后选择代价最小的事务回滚,解除死锁。24、可串行化调度是指多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同。可串行性是保证并行事务正确性的唯一准则。两段锁协议就是在对任何数据进行读写之前,事务首先要获得对该数据的封锁。在释放一个封锁之后,事务不再获得任何其他封锁。即一个事务执行分为两个阶段:扩展阶段:事务可以申请封锁,但是不能解除任何已获得的封锁;收缩阶段:事务可以释放封锁,但是不能申请新的封锁。事务开始时进入扩展阶段,根据需要申请封锁,一旦事务开始释放封锁,即进入收缩阶段,不能再发出加锁请求。事务遵守两段锁协议是可串行化调度的充

温馨提示

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

评论

0/150

提交评论