当前位置:文档之家› 数据库期末复习提纲

数据库期末复习提纲

第一章1.DBMS:数据库管理系统2.三个抽象:物理,最低层次的抽象,描述数据实际上是则乱储存的。

物理层详细描述复杂的低层数据结构逻辑,比物理层层次稍高的抽象,描述数据库中存储什么数据及这些数据间存在什么关系视图,最高层次的抽象,只描述整个数据库的某个部分。

3.模式:数据库的总体设计称作数据库模式。

对数据库表的基本定义。

数据库系统可以分为三中不同的模式:物理模式在物理层描述了数据库的设计;而逻辑模式则在逻辑层描述数据库的设计;数据库在视图层也可分为几种模式,有时称为子模式,它描述了数据库的不同师徒。

4.模式的实例:特定时刻存储在数据库中的信息的集合称作数据库的一个实例。

某个关系模式某一时刻满足它的集合5.数据模型:一个描述数据、数据联系、数据语义以及一致性约束的概念工具的集合。

本身关系语义限制的集合体。

6.三个关系模型一对一,一对多,多对多7.语言:操纵语言,是使得用户可以访问和操纵数据的语言。

(①过程型(关系代数)②非过程型(SQL语言))数据定义语言,是指定数据库模式以及数据库其他特性的语言(完整性定义…等)8.16页图两层体系结构:(用户,应用程序)---网络---(数据库系统)三层体系结构:(用户,应用程序)---网络---(应用服务器,数据库系统)9.数据库简史第二章1.关系:一系列域上的笛卡尔积的子集。

2.纯关系模型(原子性),对象关系(非原子性)3.数据库模式:数据库的逻辑设计数据库实例:给定时刻数据库中数据的一个快照4.关系中,顺序无关5.超码:一个或多个属性的集合,这些属性的组合可以使我们在一个关系中唯一地标识一个元组候选码:候选码是从超码中选出的,自然地候选码也是一个或多个属性的集合。

因为超码的范围太广,很多是我们并不感兴趣即无用处的。

所以候选码是最小超码,它们的任意真子集都不能成为超码。

主码:从多个候选码中任意选出一个做为主码,如果候选码只有一个,那么候选码就是主码。

虽然说主码的选择是比较随意的,但在实际开发中还是要靠一定的经验,不然开发出来的系统会出现很多问题。

一般来说主码都应该选择那此从不或者极少变化的的属性。

外码:一个关系模式中的属性包括另一个关系模式的主码6.关系代数基本运算:①选择②投影③并运算④集合差运算⑤笛卡尔积运算⑥更名运算(33页的求最大值算法:自身进行笛卡尔积并做比较)a)并和差属性相同7.28页的表8.附加的关系代数运算:①集合交②自然连接运算③除运算④赋值运算9.控制判断and、or、not与true、false、unknownAnd: (true and unknown)=known;(false and unknown)=false;(unknown and unknown)=unknownOr: (true or unknown)=true;(false or unknown)=unknown;(unknown or unknown)=unknown Not: (not unknown)=unknown10.删除(r←r-E)、插入(并运算)、更新P42.43第三章1.历史Ted Codd2.模式的定义,完整性约束(限定、安全)3.基本数据类型:char(n)、varchar(n)、int、smallint、numeric(p,d)定点数,精度由用户指定、real,double precision、float(n)4.添加属性/删除属性alter table add/drop A D/A5.Distinct和all控制查询所得元组是否显示重复(all默认)6.Select 投影,where选择(and、or、not、between、not between)7.As更名操作(例:select distincet T.branch_name from branch as T,branch as S whereT.assets>S.assets and S.branch_city=’Brooklyn’)8.做题写语句必须表明是哪种语言写的(本文档所用皆为标准SQL)9.通配符的使用,“_”单个字符、“%”多个字符(….where customer_street like ‘%Main%’)、escape(忽略转译字符like ‘ab\\cd’ escape ‘\’匹配“ab\cd”)10.Upper()、lower()函数11.Order by xxxx desc/asc(降序/升序)(例:select distinct customer_name from borrower,loanwhere borrower.loan_number=loan.loan_number and branch_name=’Perryridge’order by customer_name)12.并交差union(union all保留重复):(select customer_name from depositor)union(select customer_name from borrower)intersect: (select customer_name from depositor)intersect(select customer_name from borrower)except(except all保留重复):(select customer_name from depositor)except(select customer_name from borrower)13.Group by having:例,select branch_name,avg(balance) from account group by branch_namehaving avg(balance)>120014.属性要么写在分组中要么写在聚集函数中(avg min max sum count)(除了count之外,其他不处理空值)Select sname from S,SC where S.s#=SC.s# group by sname having count(*)>315.SQL不允许在count(*)时使用disctinct,在使用max、min的时候用却是合法的16.….where xxxx is null/is not null17.减法运算为空来判断子集关系18.=some等价于in,然而<>some并不等价于not in,<>all等价于not in19.Unique判断是否存在重复,不重复返回true找出所有在Perryridge支行中只有一个账户的客户Select T.customer_nameFrom depositor as TWhere unique (select R.customer_name)From account ,depositor as RWhere T.customer_name=R.customer_name andR.account_number=account.account_number andAccount.branch_name=’Perryridge’)20.With子句With max_balance(value) asSelect max(balance)From accountSelect account_numberFrom account,max_balanceWhere account.balance=max_balance.value21.Delete from xxxx where xxx in (xxxx) 先查再删Insert into xxx select xxxx,xxx from xxx,xxx where xxxUpdate account set balance=case when balance<=10000 then balance*1.05 when.. then…when..then.. else … end第四章1.TodateSelect customers.cid, cname from customers,purchases where customers.cid=purchases.cid and pdate>to_date('2000-1-1','yyyy-mm-dd');2.创建类型:create type Dollars as numeric(12,2) final3.创建域:create domain DDollars as numeric(12,2)4.域(Domain)和类型(Type)的区别a)在域上可以指定约束,例如not null,也可以为域类型变量定义默认值,然而用户定义类型上不能指定约束或默认值。

用户定义类型不仅被设计来指定属性类型,还用于在不能世家约束的地方对SQL进行过程扩展。

b)域并不是强类型的。

因此一个域类型的值可以被赋给另一个域类型,只要他们的类型是相容的5.Not null约束Create domain Dollars numeric(12,2) not null6.Unique(A,B,C),unique约束指出某些属性形成了一个候选码;即一个关系中没有两个元组能在所有主码属性上相等。

然而候选码属性可以为空,除非他们已被显示地声明为not null。

注意,空值不等于其他的任何值。

7.Check通常应用于保证属性值满足指定的条件,如枚举、值范围等Create table student(degree_level char(15)Check(degree_level in (‘Bachelors’,’Masters’,’Doctorate’)))Check子句允许数据模式的设计者指定一个谓词,对类型属于该域的变量所赋的任意值都必须满足该谓词。

例如,用check子句可以保证小时工资域的值必须大于某一指定值(如最低工资):Create domain HourlyWage numeric(5,2)Constraint wage_value_test check(value>=6.00)另外,Create domain AccountType char(10)Constraint account_type_testCheck(value in (‘checking’,’saving’))8.Grant <权限列表> on <关系名或视图名> to <用户/角色列表>Grant select on account to John,MaryGrant update(amount) on loan to John,MaryRevoke <权限列表> on <关系名或视图名> from <用户/角色列表>Revoke select on branch from John,MaryRevoke update(amount) on loan from John,Mary权限有delete insert select update,其中包括整个表的权限,也可以指定对于某个元素的权限,如delete(amount) ,insert权限也可以指定属性列表,系统会将其他属性赋予空值9.触发器第六章数据库设计和E-R模型(重要)1.属性a)简单属性和复合属性b)单值属性和多值属性c)派生属性(这类属性的值可以从别的相关属性或实体派生出来)2.三元关系最多一个箭头3.三元变二元4.强实体、弱实体5.154页ER符号第七章1.如果某个域的元素被认为是不可分的单位,那么这个域就是原子的2.第一范式:一个关系模式R的所有属性都是原子的第二范式:符合第一范式,并且非主属性完全依赖于码第三范式:符合第二范式,并且消除传递依赖BC范式:符合第三范式,比且主属性不依赖于主属性…擦,这章好难啊!!!回头再看第八章1.触发器(答题时标注所用的语言)例,当用户存款为负值时,创建借款人,贷款记录,清0用户存款Create trigger overdraft_trigger after update on accountReferencing new row as nrowFor each rowWhen nrow.balance<0Begin atomicInsert into borrower(select customer_name,account_numberFrom depositorWhere nrow.account_number=depositor.account_number);Insert into loan values(nrow.account_number,nrow.branch_name,-nrow.balance);Update account set balance =0Where account.account_number=nrow.account_numberend2.With grant option:授予权限并且被授予者能够将该权限传递给其他用户Grant select on branch to U1 with grant option3.创建角色,角色是权限的集合Create role tellerGrant select on account to tellerGrant teller to John,Mary4.授权树,树根。

相关主题