数据库—基础知识点总结一
AI研习图书馆,发现不一样的精彩世界
知识
数据库面试重要知识点总结
第一范式:当关系模式R的所有属性都不能再分解为更基本的数据单位时,称R满足第一范式,简记为1NF
第二范式:如果关系模式R满足第一范式,并且R的所有非主键属性都完全依赖于R的每一个候选关键属性,称R满足第二范式,简记为2NF
第三范式:设R是满足第一范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第三范式,简记为3NF
事务是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就会失败,以后操作就会回滚到操作前状态,或者是上一个节点。为了确保要么执行,要么不执行,就可以使用事务。要将一组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔离性和持久性。
事务具有四大特性:一致性、原子性、隔离性、持久性。
事务常用命令: Begin Transaction、Commit Transaction、RollBack Transaction。
在所有的DBMS中,锁是实现事务的关键,锁可以保证事务的完整性和并发性。与现实生活中锁一样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。当然锁还分级别的。
视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。
视图实际上是在数据库中通过Select查询语句从多张表中提取的多个表字段所组成的虚拟表。
视图并不占据物理空间,所以通过视图查询出的记录并非保存在视图中,而是保存在原表中
通过视图可以对指定用户隐藏相应的表字段,起到保护数据的作用
在满足一定条件时,可以通过视图对原表中的记录进行增删改操作
创建视图时,只能使用单条select查询语句
游标是一种能从包含多条数据记录的结果集中每次提取一条记录进行处理的机制。它对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。
游标的使用步骤:
定义游标:declare cursor 名称 for select [for {readonly|update}]
打开游标:open cursor
操作数据:fetch... ... current of cursor
关闭游标:close cursor
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
索引分为:聚集索引、非聚集索引、唯一索引等
一张表可以有多个唯一索引和非聚集索引,但最多只能有一个聚集索引
索引可以包含多列
合理的创建索引能够提升查询语句的执行效率,但降低了新增、删除操作的速度,同时也会消耗一定的数据库物理空间
存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。可以用一个命令对象来调用存储过程。
触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。
触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。
索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的 数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。
普通索引 就是一个普通的索引,可以为空,可以重复
唯一索引 可以为空,不可以重复(值不可重复)
主键索引 不可以为空,不可以重复
一般所说的内存泄漏指的是堆内存的泄漏。堆内存是程序从堆中为其分配的,大小任意的,使用完后要显示释放内存。当应用程序用关键字new等 创建对象时,就从堆中为它分配一块内存,使用完后程序调用free或者delete释放该内存,否则就说该内存就不能被使用,就说该内存被泄漏了。
在关系型数据库中描述多对多的关系,需要建立第三张数据表。比如学生选课,需要在学生信息表和课程信息表的基础上,再建立选课信息表,该表中存放学生Id和课程Id。
数据库约束用于保证数据库表数据的完整性(正确性和一致性)。可以通过定义约束/索引/触发器来保证数据的完整性。
总体来讲,约束可以分为:
主键约束:primary key
外键约束:foreign key
唯一约束:unique
检查约束:check
空值约束:not null
默认值约束:default
Sum:求和,Avg:平均数,Max:最大值,Min:最小值,Count:记录数
内联接(Inner Join):匹配2张表中相关联的记录
左外联接(Left Outer Join):除了匹配2张表中相关联的记录外,还会匹配左表中剩余的记录,右表中未匹配到的字段用NULL表示
右外联接(Right Outer Join):除了匹配2张表中相关联的记录外,还会匹配右表中剩余的记录,左表中未匹配到的字段用NULL表示
在判定左表和右表时,要根据表名出现在Outer Join的左右位置关系。
如果两张表存在主外键关系,那么在删除主键表的记录时,如果从表有相关联的记录,那么将导致删除失败。
在定义外键约束时,可以同时指定3种删除策略:一是将从表记录一并删除(级联删除);二是将从表记录外键字段设置为NULL;三是将从表记录外键字段设置为默认值。
级联删除示例:
alter table 从表名
add constraint 外键名
foreign key(字段名) references 主表名(字段名)
on delete cascade
关注AI研习图书馆,发现不一样的精彩世界