数据库系统概论知识点整理Word文档下载推荐.docx
- 文档编号:17238628
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:26
- 大小:31.80KB
数据库系统概论知识点整理Word文档下载推荐.docx
《数据库系统概论知识点整理Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据库系统概论知识点整理Word文档下载推荐.docx(26页珍藏版)》请在冰豆网上搜索。
对模式中同一数据,在外模式中的结构、类型、长度、保密级别等都可以不同。
外模式与应用的关系:
同一外模式也可以为某一用户的多个应用系统所使用
但一个应用程序只能使用一个外模式
内模式:
存储模式或内视图)是数据物理结构和存储方式的描述,是数据在数据库内部实际存储的表示方式:
记录的存储方式(顺序,B树,hash方法存储),索引的组织方式,数据是否压缩存储,数据是否加密。
数据存储记录结构的规定,一个数据库只有一个内模式
三级模式的优点:
(1)保证数据的独立性(内模式与模式分开物理独立;
外模式与模式分开逻辑独立)
(2)简化用户窗口(3)有利于数据共享(4)利于数据的安全保密
(5)数据存储由DBMS管理(用户不用考虑存取路径等细节)
二级映像功能:
(1)外模式/模式映像(应用可扩充性)
定义外模式(局部逻辑结构)与模式(全局逻辑结构)之间的对应关系,映象定义通常包含在各自外模式的描述中,每一个外模式,数据库系统都有一个外模式/模式映象。
保证数据的逻辑独立性
当模式改变时,数据库管理员修改有关的外模式/模式映象,使外模式保持不变
应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
(2)模式/内模式映像(空间利用率,存取效率)
模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关。
数据库中模式/内模式映象是唯一的。
该映象定义通常包含在模式描述中。
保证数据的物理独立性
当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映象,使模式保持不变。
应用程序不受影响。
保证了数据与程序的物理独立性,简称数据的物理独立性。
优点:
(1)保证了数据库外模式的稳定性。
(2)从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需要修改。
(3)数据与程序之间的独立性,使得数据的定义和描述可以从应用程序中分离出去。
什么叫数据与程序的物理独立性?
什么叫数据与程序的逻辑独立性?
为什么数据库系统具有数据与程序的独立性?
1、数据与程序的逻辑独立性:
当模式改变时,数据库管理员修改有关的外模式/模式映象,使外模式保持不变。
从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
2、数据与程序的物理独立性:
数据库管理系统在三级模式之间错提供的二层影响保证了数据系统中的数据具有较高的逻辑独立性和物理独立性。
数据库系统的组成硬件平台及数据库,软件,人员
第二章:
关系数据库
关系的完整性约束
实体完整性和参照完整性:
关系模型必须满足的完整性约束条件称为关系的两个不变性,应该由关系系统自动支持。
用户定义的完整性:
应用领域需要遵循的约束条件,体现了具体领域中的语义约束。
外码,主码,候选码的概念
候选码:
若关系中的某一属性组的职能唯一地标识一个元组,则称该属性组为候选码。
主码:
若一个关系有多个候选码,则选定期中一个为主码。
外部码:
设F是基本关系R的一个或一组属性。
但不是关系R的码,如果F与基本关系S的主码K想对应,则称F是基本关系R的外部码,简称外码。
关系的3类完整性约束概念
实体完整性:
若属性(指一个或一组属性)A是基本关系R的主属性,A不能取空值。
参照完整性:
若属性(或属性组)F是基本关系R的外码,它是基本关系S的主码K相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
或者取空值(F的每个属性值均为空值);
或者等于S中某个元组的主码值。
针对某一具体关系数据库的约束条件。
反映某一具体应用所设计的数据必须满足的语义要求。
关系操作的特点,关系代数中的各种运算
关系操作的特点是集合操作方式,即操作的对象和结果是集合。
关系代数1、并(R∪S)仍为n目关系,由属于R或属于S的元组组成。
R∪S={t|t?
R∨t?
S}
2、差(R–S)仍为n目关系,由属于R而不属于S的所有元组组成。
R-S={t|t?
R∧t?
3、交(R∩S)仍为n目关系,由既属于R又属于S的元组组成。
R∩S={t|t?
R∧t?
S}R∩S=R–(R-S)
4、笛卡尔积R:
n目关系,k1个元组;
S:
m目关系,k2个元组;
R×
S。
9、选择:
选择又称为限制(Restriction)σ:
对元组按照条件进行筛选。
在关系R中选择满足给定条件的诸元组σF(R)={t|t?
R∧F(t)='
真'
}。
10、投影:
投影运算符π的含义:
从R中选择出若干属性列组成新的关系πA(R)={t[A]|t?
R}A:
R中的属性列投影操作主要是从列的角度进行运算。
但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)。
11、连接:
连接也称为θ连接:
两张表中的元组有条件的串接。
从两个关系的笛卡尔积中选取属性间满足一定条件的元组RS={|tr?
R∧ts?
S∧tr[A]θts[B]}
外连接:
如果把舍弃的元组也保存在结果关系中,而在其他属性上填空值(Null),这种连接就叫做外连接。
左外连接:
如果只把左边关系R中要舍弃的元组保留就叫做左外连接(LEFTOUTERJOIN或LEFTJOIN)。
右外连接:
如果只把右边关系S中要舍弃的元组保留就叫做右外连接(RIGHTOUTERJOIN或RIGHTJOIN)。
12、除÷
:
给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组;
R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集;
R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影
第三章:
关系数据库标准语言SQL
注意:
SQL(Oracle除外)一般不提供修改视图定义和索引定义的操作,需要先删除再重建
定义基本表:
CREATETABLE<
表名>
(<
列名>
<
数据类型>
[<
列级完整性约束条件>
]
[,<
]]…
表级完整性约束条件>
]);
列级完整性约束--涉及到该表的一个属性
▪NOTNULL:
非空值约束
▪UNIQUE:
唯一性(单值约束)约束
▪PRIMARYKEY:
主码约束
▪DEFAULT<
默认值>
:
默认(缺省)约束
▪Check<
(逻辑表达式)>
核查约束,定义校验条件
表级完整性约束--涉及到该表的一个或多个属性。
▪UNIQUE(属性列列表):
限定各列取值唯一
▪PRIMARYKEY(属性列列表):
指定主码
▪FOREIGNKEY(属性列列表)REFERENCES<
[(属性列列表)]
▪Check(<
逻辑表达式>
):
检查约束
▪PRIMARYKEY与UNIQUE的区别?
例:
建立“学生”表Student,学号是主码,姓名取值唯一
CREATETABLEStudent
(SnoCHAR(9)PRIMARYKEY,/*主码*/
SnameCHAR(20)UNIQUE,/*Sname取唯一值*/
SsexCHAR
(2),SageSMALLINT,SdeptCHAR(20));
数据类型
修改基本表:
ALTERTABLE<
[ADD<
新列名>
[完整性约束]]
[DROP<
|<
完整性约束名>
[ALTERCOLUMN<
];
向Student表增加“入学时间”列,其数据类型为日期型
ALTERTABLEStudentADDS_entranceDATE;
不论基本表中原来是否已有数据,新增加的列一律为空值
将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数
ALTERTABLEStudentALTERCOLUMNSageINT;
注:
修改原有的列定义有可能会破坏已有数据
增加课程名称必须取唯一值的约束条件。
ALTERTABLECourseADDUNIQUE(Cname);
直接删除属性列:
(新标准)例:
ALTERTABLEStudentDropSage;
删除基本表:
DROPTABLE<
[RESTRICT|CASCADE];
RESTRICT:
(受限)欲删除的基本表不能被其他表的约束所引用,如果存在依赖该表的对象(触发器,视图等),则此表不能被删除。
CASCADE:
(级联)在删除基本表的同时,相关的依赖对象一起删除。
删除Student表DROPTABLEStudentCASCADE;
基本表定义被删除,数据被删除;
表上建立的索引、视图、触发器等一般也将被删除。
删除索引:
DROPINDEX<
索引名>
;
删除索引时,系统会从数据字典中删去有关该索引的描述。
删除Student表的Stusname索引:
DROPINDEXStusname
2、数据查询:
基本格式
单表查询
选择表中的若干列(投影)
查询指定列(相当于πA(R),A=A1,A2,…,An)
例;
查询全体学生的学号与姓名
SELECTSno,Sname
FROMStudent;
查询全部列:
在SELECT关键字后面列出所有列名按用户指定顺序显示。
将<
目标列表达式>
指定为*按关系模式中的属性顺序显示。
查询全体学生的详细记录
SELECTSno,Sname,Ssex,Sdept,Sage
或SELECT*
P.S:
SELECT子句的<
可以为:
查询经过计算的值
查全体学生的姓名及其出生年份
SELECTSname,2011-Sage/*假定当年的年份为2011年*/
输出结果:
Sname2011-Sage
李勇1991
刘晨1992
字符串常量、函数
查询全体学生的姓名、出生年份和所有系,要求用小写字母
表示所有系名
SELECTSname,‘YearofBirth:
'
,2004-Sage,ISLOWER(Sdept)
Sname'
YearofBirth:
'
2004-SageISLOWER(Sdept)
李勇YearofBirth:
1984cs
刘晨YearofBirth:
1985is
列别名
SELECTSnameasNAME,'
asBIRTH,
2011-SageasBIRTHDAY,LOWER(Sdept)asDEPARTMENT
FROMStudent;
NAMEBIRTHBIRTHDAYDEPARTMENT
------------------------------------------------------
1991cs
1992is
选择表中的若干元组(选择)
消除重复性:
指定DISTINCT关键词,去掉表中重复的行
SELECTDISTINCTSnoFROMSC;
注意DISTINCT短语的作用范围是所有目标列
错误的写法SELECTDISTINCTCno,DISTINCTGradeFROMSC;
正确的写法SELECTDISTINCTCno,GradeFROMSC;
SELECT子句缺省情况是保留重复元组(ALL),
查询选修了课程的学生学号。
SELECTSnoFROMSC;
等价于:
SELECTALLSnoFROMSC;
查询满足条件的元组
WHERE子句常用的查询条件(相当于σF)
比较大小使用比较运算符或逻辑运算符NOT+比较运算符
查询计算机科学系全体学生的名单
SELECTSname
FROMStudent
WHERESdept=‘CS’;
查询所有年龄在20岁以下的学生姓名及其年龄
SELECTSname,Sage
FROMStudent
WHERESage<
20;
//NOTSage>
=20
确定范围BETWEEN…AND…NOTBETWEEN…AND…
查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄
SELECTSname,Sdept,Sage
WHERESageBETWEEN20AND23;
//Sage>
=20andSage<
=23
查询年龄不在20~23岁之间的学生姓名、系别和年龄
WHERESageNOTBETWEEN20AND23;
//Sage<
20orSage>
23
确定集合IN<
值表>
NOTIN<
查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别
SELECTSname,Ssex
WHERESdeptIN('
IS'
,'
MA'
CS'
);
查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别
WHERESdeptNOTIN('
自负匹配[NOT]LIKE‘<
匹配串>
’[ESCAPE‘<
换码字符>
’]
匹配串为固定字符串
SELECT*SELECT*
FROMStudent等价于:
FROMStudent
WHERESnoLIKE‘
匹配串为含通配符的字符串
%:
代表任意长度(可以是0)的字符串
_:
代表任意单个字符
字符串本身就含有%或_时,在%或_之前加上转义符“\”要使用ESCAPE‘<
’将通配符转义为普通字符。
如果‘\’要作为一个普通字符,用连续两个‘\’表示一个真正的‘\’。
查询以"
DB_"
开头,且倒数第3个字符为i的课程的详细情况。
SELECT*
FROMCourse
WHERECnameLIKE'
DB\_%i__'
ESCAPE'
\‘;
涉及空值的查询ISNULL或ISNOTNULL“IS”不能用“=”代替
查所有有成绩的学生学号和课程号
SELECTSno,Cno
FROMSC
WHEREGradeISNOTNULL;
多重条件查询:
AND和OR来联结多个查询条件,AND的优先级高于OR,可以用括号改变优先级,可用来实
现多种其他谓词。
[NOT]IN
[NOT]BETWEEN…AND…
改写例:
)
可改写为:
WHERESdept='
IS'
ORSdept='
MA'
CS'
ORDERBY子句:
对查询结果排序
可以按一个或多个属性列排序:
升序:
ASC;
降序:
DESC;
缺省值为升序。
当排序列含空值时:
空值最大
ASC:
排序列为空值的元组最后显示;
DESC:
排序列为空值的元组最先显示。
查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列
SELECTSno,Grade
WHERECno='
3'
ORDERBYGradeDESC;
聚集函数:
对查询结果集中的某列进行计算或统计。
计数COUNT([DISTINCT|ALL]*)COUNT([DISTINCT|ALL]<
)
计算总和SUM([DISTINCT|ALL]<
)
计算平均值AVG([DISTINCT|ALL]<
最大最小值MAX([DISTINCT|ALL]<
)MIN([DISTINCT|ALL]<
SELECTSUM(Ccredit)
FROMSC,Course
WHER
除Count(*),都要跳过空值;
Where子句不能使用聚集函数。
GROUPBY子句:
对查询结果分组。
用途细化聚集函数的作用对象
未对查询结果分组,聚集函数将作用于整个查询结果
对查询结果分组后,聚集函数将分别作用于每个组
使用GROUPBY后:
其SELECT子句的列名列表中只能出现分组属性和集函数。
如果分组后还要按照条件对这些组进行筛选,可使用having短语指定筛选条件
查询选修了3门以上课程的学生学号
SELECTSno
GROUPBYSno
HAVINGCOUNT(*)>
3;
查询有3门以上课程是90分以上学生的学号及(90分以上的)课程数?
SELECTSno,COUNT(*)
WhereGrade>
90
HAVING短语与WHERE子句的区别:
作用对象不同
WHERE子句作用于基表或视图,从中选择满足条件的元组
HAVING短语作用于组,从中选择满足条件的组。
****连接查询*****p100页
****嵌套查询*****p104页***重点***
数据更新
(1)插入数据
插入元组
INSERT
[INTO]<
[(<
属性列1>
属性列2>
…)]
VALUES(<
常量1>
[,<
常量2>
]…)
功能:
将新元组插入指定表中;
新元组的属性列1的值为常量1,属性列2的值为常量2,…。
INTO子句:
属性列的顺序可与表定义中的顺序不一致,但须指定列名;
没有指定属性列,表示要插入的是一条完整的元组;
指定部分属性列,未指定的属性列取空值,具有NOTNULL的属性列除外。
VALUES子句:
提供的值必须与INTO子句匹配,值的个数,值的类型。
INTOStudent(Sno,Sname,Ssex,Sdept,Sage)
将学生张成民的信息插入到Student表中
INTOStudent
VALUES(‘’,‘张成民’,‘男’,18,'
);
INTOSC(Sno,Cno)
VALUES(‘’,‘1’);
RDBMS将在新插入记录的Grade列上自动地赋空值。
或者:
INTOSC
VALUES(‘’,‘1’,NULL);
因为没有指出SC的属性名,在GRADE列上要明确给出空值
插入子查询结果
Insert
Into<
[(<
子查询(select等);
(2)修改数据
UPDATE<
SET<
=<
表达式>
]…
[WHERE<
条件>
];
SET子句:
指定修改方式,要修改的列,修改后取值:
<
。
WHERE子句:
指定要修改的元组,,缺省表示要修改表中的所有元组。
修改指定表中满足WHERE子句条件的元组。
修改某一个元组的值
UPDATEStudent
SETSage=22
修改多个元组的值
将所有学生的年龄增加1岁
SETSage=Sage+1;
带子查询的修改语句子查询须放在比较运算符之后
将计算机科学系全体学生的成绩置零。
UPDATESC
SETGrade=0
WHERE'
=
(SELETESdept
WHEREStudent.Sno=SC.Sno);
(3)删除数据
DELETE
FROM<
]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 系统 概论 知识点 整理