考研复试数据库笔记docx文档格式.docx
《考研复试数据库笔记docx文档格式.docx》由会员分享,可在线阅读,更多相关《考研复试数据库笔记docx文档格式.docx(7页珍藏版)》请在冰豆网上搜索。
层次模型:
简单清晰,查询效率高,良好的完整性支持,但是和现实世界不符,查询子女必须通过双亲。
网状模型:
更直接的表达现实世界,存取效率高,但是结构复杂。
关系模型:
简历在严格的数学模型上。
概念单一,简单易懂,存取路径对用户透明,高独立性,保密性,但是查询效率不高。
10:
数据库三级模式结构:
外模式,模式,内模式,外模式有多个,就是视图的意思,模式就是数据的逻辑结构,内模式就是物理结构。
11:
三级结构有两层映像:
外模式/模式映像:
修改此映像保证外模式不变,保证逻辑路理性,模式/内模式映像,修改此映像保证模式不变,保证物理独立性。
12:
数据库系统由数据库,数据库管理系统,应用系统和数据库管理员构成。
13:
关系数据库:
候选码:
某一列的值能唯一标识一个元组。
主码:
候选码之一。
候选码们的属性称为主属性,
14:
实体完整性:
主码不为空。
参照完整性:
关系的外码一定为其他关系的主码,或者外码全部为空。
用户定义完整性:
比如XX不能为空,XX只能取指定值。
15:
SQL结构化查询语言
16:
查询:
select。
定义:
create,drop,alter。
操纵:
insert,update,delete。
控制:
grant,revoke。
17:
为用户wang创建一个数据库,
CreateschemaSTauthorizationwang;
18:
删除数据库
DropschemaSTcascade/restrict
Cascade把表都删了。
Restrict如果下属有表,就拒绝删除
19:
创建表
Createtablestudent.course
(cnochar(4)primarykey,
Foreignkeycpnoreferencescourse(cno)
)
(snochar(9),
Cnochar(4),
Primarykey(sno,cno),
20:
在student表中增加一列,入学时间。
Altertablestudentaddentrancechar(20);
21:
把student表中的的年龄改为整形
Altertablestudentaltercolumnsageint;
22:
在student增加课程名唯一的约束条件
Altertablecourseaddunique(cname);
23:
删除表
Droptablestudentrestrict/cascade
24:
建立索引
Createuniqueindexscononsc(snoASC,cnoDESC)
Unique表明每一个索引值对应唯一数据记录
25:
删除索引
Dropindexscon
26:
查询
Selectsno,snamefromstudent
27:
表达式查询
Selectsname,2004-sagefromstudent;
28:
赋值查询
Selectsname,‘A’,lower(sdept)fromstudent
29:
消除查询结果中的重复行
Selectdistinctsnofromsc;
30:
where
Selectsnamefromstudentwheresdept=’CS’
31:
大小
Selectsnamefromstudentwheresage<
20
32:
介于
Selectsnamefromstudentwheresagebetween20and23;
Selectsnamefromstudentwheresagenotbetween20and23;
33:
在
Selectsnamefromstudentwheresdeptin(‘CS’,’MA’,’IS’)
Selectsnamefromstudentwheresdeptnotin(‘CS’,’MA’,’IS’)
34:
字符匹配
Selectsnamefromstudentwheresnamelike‘刘%’
Selectsnamefromstudentwheresnamelike‘刘__’
35:
转义字符
Selectcnofromcoursewherecnamelike‘DB\_Design’escape‘\’
36:
空
SelectsnofromSCwheregradeisnull(不能用=)
37:
排序
Selectsno,gradefromscwherecno=’3’orderbygradedesc
38:
数学函数
Selectcount(*)fromstudent
Selectavg(Grade)fromscwherecno=’1’
39:
groupby
Selectcno,count(sno)fromscgroupbycno
40:
分组时的where
要用数学函数的值作为判断条件的时候
Selectsnofromscgroupbysnohavingcount(*)>
3
41:
等值连接
Selectstudent.*,sc.*Fromstudent,scWherestudent.sno=sc.sno
类似双重for循环,首先拿student.sno中的第一个依次和sc.sno中的比,只要相同的,就放进来,一直比完,如果sc.sno中有3项,那么放进结果表的就有3项。
这3项对应同一个student.sno。
42:
自身连接
Selecto,second.cpno
Fromcoursefirst,coursesecond
Wherefirst.cpno=o
43:
左外连接
Selectstudent.sno,sname,ssex,sage,sdept,cno.grade
Fromstudentleftoutjoinscon(student.sno=sc.sno)
就是显示出student所有的行,即便行不等于sc.sno
44:
复合条件连接
Selectstudent.sno,sname,cname,grade
Fromstudent,sc,course
Wherestudent.sno=sc.snoando=o
45:
嵌套查询
Selectsnamefromstudentwheresnoin
(selectsnofromscwherecno=’2’)
46:
ANYALL
Selectsname,sagefromstudentwheresage<
any
(selectsagefromstudentwheresdept=’CS’)
Andsdept<
>
’CS’
ANY是某一个,这个是找出其他专业中比计科专业某一个学生年龄小的,是拿计算机专业中最大的年龄来比。
如果是ALL,就是比计算机专业中任何一个学生都小的,是拿计算机专业中最小的来比
47:
exists
Selectsnamefromstudentwhereexists
(select*fromscwheresno=student.snoandcno=’1’)
首先在student中取一个元组,然后取出这元组的sno,和SC依依对比过去,得出结果集,再满足cno=’1’的条件,如果都满足了。
返回值为1,加入结果集。
48:
集合Unionintersectexcept
Select*fromstudentwheresdept=’cs’
Union
Select*fromstudentwheresage<
=19
49:
插入数据
Insertintosc(sno,cno)values(‘200215128’,’1’)
Insertintoscvalues(‘200215128’,’1’,NULL)
不能不写
50:
求。
并存入数据库
Insertintodept_age(sdept,avg_age)(dept_age表要先创建)
Selectsdept,avg(sage)fromstudentgroupbysdept
51:
ubdate
Updatestudent
Setsage=22
Wheresno=’200215121’
52:
删除数据
Deletefromstudentwheresno=’200215128’
53:
创建视图
Createviewis_studentASselectsno,sname,sage
Fromstudentwheresdept=’IS’
Withcheckoption
(以后视图修改增加数据的时候,都会判断where条件)
CreateviewS_G(sno,Gavg)As
Selectsno,avg(grade)fromscgroupbysno;
54:
删除视图
DropviewIScascade
55:
对视图的更新最终还是要转换为对表的更新
56:
有些视图不能更新,比如视图有一项是各科平均成绩,这项不能映射回基本表,就不能更新。
57:
视图的作用:
简化用户操作,用户多角度看待同一数据,提供逻辑独立性,提供数据安全保护。
58:
授权
Grantallprivilegesontablestudenttopublic
Grantupdate(sno),selectontablestudenttoU4
59:
收回授权
Revokeupdate(sno)ontablestudentfromU4
60:
创建用户
CreateuserU1dba/resource/connect
默认connect只能登陆数据库
Resource可以创建表和视图,
Dba可以创建新用户,模式、
61:
check
CreatetablestudentSnochar(9)primarykey,
Snamechar(9)notnull
Ssexchar
(2)check(ssexin(‘男’,‘女’))
Sagesmallint.Sdeptchar(20));
62:
函数依赖:
一个x就可以确定一个y,一对一。
第一范式:
每个分量必须是不可分的数据项。
第二范式:
每一个非主属性完全函数依赖于主码。
比如主码由ab两个属性构成,而c属性只用一个a就可以确定,就是不完全依赖,不属于第二范式
第三范式:
每个非主属性不部分依赖于码,也不传递依赖于码。
传递依赖就是,比如主码由ab两个属性构成,a属性可以推出c属性,而c属性可以推出d属性,则a属性可以推出d属性,这就是传递依赖,实际上也是一个部分依赖。
BCNF:
没有任何属性完全函数依赖于非码的任何一组属性。
63:
数据库设计:
需求分析,概念结构设计(对用户需求进行综合归纳抽象),逻辑结构设计(把概念结构的ER图转换为某个DBMS所支持的数据模型),物理结构设计(为逻辑设计选一个最适合应用环境的物理结构),数据库实施(建立数据库,数据入库,试运行),数据库运行和维护。
64:
需求分析用数据字典,概念设计用ER图,逻辑设计用表。
65:
物理设计,确定数据库的存取方法和存储结构,存取方法一般是索引,哈希和聚簇。
大多用B+树索引。
66:
故障有:
事物内部故障(事务在运行至终点前被终止,通过日志文件恢复,从尾开始扫描,执行逆操作),系统故障(也通过日志文件,从头开始扫描,重做),介质故障(硬故障,通过数据库备份恢复),计算机病毒。
67:
恢复技术:
数据转储,登记日志文件。
68:
并发带来的问题:
丢失修改(同时向一个数据写),不可重复读(T1读取某数据后T2对其进行修改,导致再读就不行了),读脏数据(读到不正确的数据)
69:
写锁(排它锁,x锁),事务T对数据加x锁,就只允许T读取和修改数据,其他所不可以。
共享锁(读锁,s锁),事务T对数据加s锁,就只允许T读取但不能修改数据,其他事物也只能读不能修改。
70:
活锁:
T2要用数据,T1再用,于是等待,这时候T3来了。
T1用完给T3用,T2又等待,解决这种锁采用先来先服务策略。
死锁的解法:
一次封锁法:
是个事务执行前吧所有需要的数据都加锁。
顺序封锁法:
对每个数据对象设定一个封锁的顺序。