数据库理论知识

SQL语言包括
数据定义:Create Table,Alter Table,Drop Table, Craete/Drop Index等
数据操纵:Select ,insert,update,delete,
数据控制:grant,revoke

 

完整性约束

实体完整性、参照完整性、用户定义完整性


什么是第三范式

1NF:每个属性是不可分的。
2NF:若关系R是1NF,且每个非主属性都完全函数依赖于R的键。
3NF:若R是2NF,且它的任何非键属性都不传递依赖于任何候选键。

 

事务:是一系列的数据库操作,是数据库应用的基本逻辑单位。

事务性质:
原子性。即不可分割性,事务要么全部被执行,要么就全部不被执行。
一致性或可串性。事务的执行使得数据库从一种正确状态转换成另一种正确状态
隔离性。在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务,
持久性。事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存。


 

存储过程:存储过程就是编译好了的一些sql语句。

1.重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。

2.提高性能。存储过程在创建的时候在进行了编译,将来使用的时候不再重新翻译。一般的SQL语句每执行一次就需要编译一次,所以使用存储过程提高了效率。

3.减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。

4.安全性。参数化的存储过程可以防止SQL注入式攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。

 

触发器:当满足触发器条件,则系统自动执行触发器的触发体。

触发时间:有before,after.

触发事件:有insert,update,delete三种。

触发类型:有行触发、语句触发

 

内联接,外联接
内连接是保证两个表中所有的行都要满足连接条件。
外连接分左连接、右连接、全连接三种。

INNER JOIN 在表中存在至少一个匹配时。

LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。

RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。

FULL JOIN 只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。



索引是对数据库表中一列或多列的值进行排序的一种结构,换句话说用于定位相同字段的一种标识符,其就相当于图书的目录。

当sql语句在执行查询操作的时候,有两种搜索方式。第一种搜索信息方式是全表搜索,第二种根据索引,找到符合查询条件的索引值,再通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。

建立索引的优点

  • 1.大大加快数据的检索速度;

  • 2.创建唯一性索引,保证数据库表中每一行数据的唯一性;

  • 3.加速表和表之间的连接;

  • 4.在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。

索引的缺点

  • 1.索引需要占物理空间。

  • 2.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。

索引的设计原则:

  • 提高查询语句的效率,减慢了DML语句的速度。

  • 在全表扫描和索引之间权衡。

  • 能够使用组合索引的则尽量使用组合索引。

  • 对于大表,尽量利用local的分区索引。

索引使用的一些具体规则:

  • 在哪些列上建立索引:

    1. Where字局中引用的列

    2. Join中利用的列

    3. 在子表的FK上建立索引(防止对父表操作时锁住子表)

  • 在哪些列上不要建立索引:

    1. 经常有DML操作

    2. 排它性小

    3. 不建议表上索引超过5个

  • 索引不起作用的情况:

    1. 存在数据类型隐形转换

    2. 列上有数学运算

    3. 使用不等于(< >)运算

    4. 使用substr字符串函数

    5. %通配符在第一个字符

    6. 字符串连接(||)

  • 删除不使用的索引

  • 定期重建大量删除操作的索引


sql优化

建表时的优化:

  • 1、只要能满足你的需求,应尽可能使用更小的数据类型:例如使用MEDIUMINT代替INT

  • 2、尽量把所有的列设置为NOT NULL,如果你要保存NULL,手动去设置它,而不是把它设为默认值。

  • 3、尽量少用VARCHAR、TEXT、BLOB类型

  • 4、如果你的数据只有你所知的少量的几个。最好使用ENUM类型

  • 5、建立索引。


查询语句的优化:

编写原则:

  • 对于任何sql语句,一定要考虑其性能。

  • 避免使用复杂的sql语句

  • 避免不必要的排序

  • 使用表的别名

  • Select语句避免使用*

具体细节规则:

    • Where条件中等号左边不用引用函数

    • Where条件中对于不同的数据类型,要做显示转换。

    • 使用not exists 替代not in,exists替代in,exists语句可以有效的利用索引。

    • 使用>=、<=,避免使用not命令

    • 使用union,替代or


你可能感兴趣的:(数据库理论知识)