数据库理论
底层索引B+树
一般涉及到从磁盘上查询的数据结构,用B+树,在内存中查询的数据结构,用红黑树。
四大范式
-
1NF。如果关系模式R的所有属性的值域中的每一个值都是不可再分解的值。
-
2NF。R是1NF,且R中的每一个非主属性完全函数依赖于R的某个候选键。
-
3NF。R是2NF,且每个非主属性都不传递依赖于R的候选键。
-
BCNF。R是1NF,且每个属性都不传递依赖于R的候选键。
-
4NF。R是关系模式,D是R上的多值依赖组合。如果D中成立非平凡多值依赖X–>Y时,X必是R的超键。
存储过程与函数
-
存储过程是用户定义的一系列SQL语句的集合,涉及特定表或其他对象的任务,用户可以调用存储过程。
-
函数通常是数据库已定义的方法,它接收参数并返回某种特定类型的值,并且不涉及特定用户表。
数据库事务
数据库事务是指作为单个逻辑工作单元执行的一系列操作,这些操作要么全做要么全不做,是一个不可分割的工作单位。
-
原子性:一个事务要么全部执行,要么不执行。不可能执行一半就停止了。
-
一致性:事务的运行不会改变数据库中数据的一致性。
-
独立性:两个以上的事务不会出现交错执行的状态。
-
持久性:事务运行成功后,对系统的更新是永久的。
游标
游标用于定位结果集的行。
通过判断全局变量@@FETCH_STATUS可以判断游标是否到了最后,通常此变量不等于0表示出错或者到了最后。
触发器
-
事前触发器:运行于事件发生之前。
-
事后触发器:运行于触发事件发生之后。
-
语句级触发器:可以在语句执行前或后执行。
-
行级触发器:在所影响的每一行触发一次。
SQL注入式攻击
SQL注入式攻击就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串中,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。
过滤输入内容可以防范SQL注入式攻击闯入。
索引
聚焦索引:
-
聚焦索引的顺序就是无力存储顺序。所以一个表最多只能有一个聚焦索引。
-
索引通过二叉树的结构描述,叶节点就是数据节点。
-
对于经常要搜索范围值的列特别有效。
非聚焦索引:
-
索引顺序与数据无力排列顺序无关。
-
索引通过二叉树的结构描述,叶节点仍然是索引节点,只不过有一个指针指向对应的数据块。
有索引一定检索得快吗?
并不是,比如要检索表中的所有记录。