DataBaseBy王跃杰第一章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、unknownDataBaseBy王跃杰And:(trueandunknown)=known;(falseandunknown)=false;(unknownandunknown)=unknownOr:(trueorunknown)=true;(falseorunknown)=unknown;(unknownorunknown)=unknownNot:(notunknown)=unknown10.删除(r←r-E)、插入(并运算)、更新P42.43第三章1.历史TedCodd2.模式的定义,完整性约束(限定、安全)3.基本数据类型:char(n)、varchar(n)、int、smallint、numeric(p,d)定点数,精度由用户指定、real,doubleprecision、float(n)4.添加属性/删除属性altertableadd/dropAD/A5.Distinct和all控制查询所得元组是否显示重复(all默认)6.Select投影,where选择(and、or、not、between、notbetween)7.As更名操作(例:selectdistincetT.branch_namefrombranchasT,branchasSwhereT.assetsS.assetsandS.branch_city=’Brooklyn’)8.做题写语句必须表明是哪种语言写的(本文档所用皆为标准SQL)9.通配符的使用,“_”单个字符、“%”多个字符(….wherecustomer_streetlike‘%Main%’)、escape(忽略转译字符like‘ab\\cd’escape‘\’匹配“ab\cd”)10.Upper()、lower()函数11.Orderbyxxxxdesc/asc(降序/升序)(例:selectdistinctcustomer_namefromborrower,loanwhereborrower.loan_number=loan.loan_numberandbranch_name=’Perryridge’orderbycustomer_name)12.并交差union(unionall保留重复):(selectcustomer_namefromdepositor)union(selectcustomer_namefromborrower)intersect:(selectcustomer_namefromdepositor)intersect(selectcustomer_namefromborrower)except(exceptall保留重复):(selectcustomer_namefromdepositor)except(selectcustomer_namefromborrower)13.Groupbyhaving:例,selectbranch_name,avg(balance)fromaccountgroupbybranch_namehavingavg(balance)120014.属性要么写在分组中要么写在聚集函数中(avgminmaxsumcount)(除了count之外,其他不处理空值)SelectsnamefromS,SCwhereS.s#=SC.s#groupbysnamehavingcount(*)315.SQL不允许在count(*)时使用disctinct,在使用max、min的时候用却是合法的16.….wherexxxxisnull/isnotnull17.减法运算为空来判断子集关系18.=some等价于in,然而some并不等价于notin,all等价于notin19.Unique判断是否存在重复,不重复返回true找出所有在Perryridge支行中只有一个账户的客户SelectT.customer_nameFromdepositorasTWhereunique(selectR.customer_name)Fromaccount,depositorasRWhereT.customer_name=R.customer_nameandR.account_number=account.account_numberandAccount.branch_name=’Perryridge’)DataBaseBy王跃杰20.With子句Withmax_balance(value)asSelectmax(balance)FromaccountSelectaccount_numberFromaccount,max_balanceWhereaccount.balance=max_balance.value21.Deletefromxxxxwherexxxin(xxxx)先查再删Insertintoxxxselectxxxx,xxxfromxxx,xxxwherexxxUpdateaccountsetbalance=casewhenbalance=10000thenbalance*1.05when..then…when..then..else…end第四章1.TodateSelectcustomers.cid,cnamefromcustomers,purchaseswherecustomers.cid=purchases.cidandpdateto_date('2000-1-1','yyyy-mm-dd');2.创建类型:createtypeDollarsasnumeric(12,2)final3.创建域:createdomainDDollarsasnumeric(12,2)4.域(Domain)和类型(Type)的区别a)在域上可以指定约束,例如notnull,也可以为域类型变量定义默认值,然而用户定义类型上不能指定约束或默认值。用户定义类型不仅被设计来指定属性类型,还用于在不能世家约束的地方对SQL进行过程扩展。b)域并不是强类型的。因此一个域类型的值可以被赋给另一个域类型,只要他们的类型是相容的5.Notnull约束CreatedomainDollarsnumeric(12,2)notnull6.Unique(A,B,C),unique约束指出某些属性形成了一个候选码;即一个关系中没有两个元组能在所有主码属性上相等。然而候选码属性可以为空,除非他们已被显示地声明为notnull。注意,空值不等于其他的任何值。7.Check通常应用于保证属性值满足指定的条件,如枚举、值范围等Createtablestudent(degree_levelchar(15)Check(degree_levelin(‘Bachelors’,’Masters’,’Doctorate’)))Check子句允许数据模式的设计者指定一个谓词,对类型属于该域的变量所赋的任意值都必须满足该谓词。例如,用check子句可以保证小时工资域的值必须大于某一指定值(如最低工资):CreatedomainHourlyWagenumeric(5,2)Constraintwage_value_testcheck(value=6.00)另外,CreatedomainAccountTypechar(10)Constraintaccount_type_testCheck(valuein(‘checking’,’saving’))8.Grant权限列表on关系名或视图名to用户/角色列表GrantselectonaccounttoJohn,MaryGrantupdate(amount)onloantoJohn,MaryRevoke权限列表on关系名或视图名from用户/角色列表RevokeselectonbranchfromJohn,MaryRevokeupdate(amount)onloanfromJohn,Mary权限有deleteinsertselectupdate,其中包括整个表的权限,也可以指定对于某个元素的DataBaseBy王跃杰权限,如delete(amount),insert权限也可以指定属性列表,系统会将其他属性赋予空值9.触发器第六章数据库设计和E-R模型(重要)1.属性a)简单属性和复合属性b)单值属性和多值属性c)派生属性(这类属性的值可以从别的相关属性或实体派生出来)2.三元关系最多一个箭头3.三元变二元4.强实体、弱实体5.154页ER符号第七章1.如果某个域的元素被认为是不可分的单位,那么这个域就是原子的2.第一范式:一个关系模式R的所有属性都是原子的第二范式:符合第一范式,并且非主属性完全依赖于码第三范式:符合第二范式,并且消除传递依赖BC范式:符合第三范式,比且主属性不依赖于主属性…擦,这章好难啊!!!回头再看第八章1.触发器(答题时标注所用的语言)例,当用户存款为负值时,创建借款人,贷款记录,清0用户存款Createtriggeroverdraft_triggerafterupdateonaccountReferencingnewrowasnrowForeachrowWhennrow.balance0BeginatomicInsertintoborrower(selectcustomer_name,account_numberFromdepositorWherenrow.account_number=depositor.account_number);In