基本概念
数据库:永久储存、有组织、可共享
数据库管理系统 = 数据库 + 应用
数据模型:关系模型、实体-联系模型(E-R模型)、层次模型
数据定义语言DDL、数据操纵语言DML
一致性约束、域约束、参照完整性约束
事务:一系列操作。具有原子性、一致性、隔离性、持久性
关系数据库
关系--(二维)表,元组--行,属性--列
关系查询语言、关系代数
SQL
模式
一个关系数据库管理系统的实例中可以建立多个数据库,一个数据库中可以建立多个模式,一个模式下通常包括多个表、视图和索引等数据库对象。模式实际上就是一个命名空间,用大白话说就是把数据库中的某些对象打包在一起,让它们属于某个模式。
视图
视图是从一个或几个基本表(或视图)导出来的表。它与基本表不同,是一个虚表。数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。所以一旦基本表中的数据发生变化,从视图中查询出来的数据也就随之改变了。从这个意义上说,视图就像是一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化。
视图的作用
1、视图机制使用户可以将注意力集中放在所关心的数据上。 如果这些数据不是直接来自基本表,则可以通过定义视图使数据库看起来结构简单清晰,并且可以简化用户的数据查询操作。例如,那些定义了若干张表连接的视图就将表与表之间的连接操作对用户隐蔽起来,也就是说,用户所做的只是对一个虚表的简单查询,而这个虚表是怎么得来的,用户无需了解。
2、视图使用户能以多种角度看待同一数据。 视图机制能使不同的用户以不同的方式看待同一数据,当许多不同种类的用户共享同一个数据库时,这种灵活性是很重要的。
3、视图对重构数据库提供了一定程度的逻辑独立性。 具体就不解释了,想了解的去看书或者查资料。
4、视图能够对机密数据提供安全保护。 有了视图机制,就可以在设计数据库应用系统时对不同的用户定义不同的视图,使机密数据不出现在不应该看到这些数据的用户视图上。这样视图机制就自动提供了对机密数据的安全保护功能。例如,Student 表涉及全校15个院系的学生数据,可以在其上定义15个视图,每个视图只包含一个院系的学生数据,并只允许每个院系的主任查询和修改本院系的学生视图。
索引
索引其实是一种特殊的数据,也保存在数据库文件中,索引数据保存着数据表中实际数据的位置。类似书籍前面的目录,这个目录就保存了书中各个章节的页数,通过查看目录我们可以快速定位章节的页数,从而加快查找速度。
自然连接:两个表中共同属性值相同的列进行连接,没有相同值的元组(悬浮元组)去掉
外连接:保留表中的悬浮元组,没有值的扩展属性用null代替
集合运算
聚集函数:就是用于统计的函数,count、sum、avg、max等
安全性
授权、角色、视图,审计,数据加密
完整性
正确性、相容性(不同的表)
三大完整性
实体完整性--主键唯一且非空
参照完整性--外键要么没有,要么只有一个
用户定义完整性--非空,列值唯一,满足某个条件式(check)
触发器
事件->条件->动作
即
when(事件){
if(条件){
动作
}
}
范式
1NF
所有属性都具有原子性,不可再分。如高三6班,可以再分为年级高三、班级6班,不满足
2NF
不含部分函数依赖,即一张表只完成一种功能
3NF
不含传递函数依赖,即每个属性只能和主键直接相关
如:(城市,街道)-> 邮编,而邮编->(城市,街道),则不满足第三范式
并发
带来的问题:
丢失修改,读脏数据,不可重复读
解决方法:一级锁、二级锁、三级锁