浅析数据库基础知识

180 阅读2分钟

数据库共有3种类型,为关系数据库、非关系型数据库和键值数据库。

这篇文章主要以mysql的关系数据库为基础。

关系型数据库的范式

  1. 第一范式(1NF)
  • 定义:字段不可再分

数据库中的每一个字段都是最小单位,不可再被分割。

  • 缺点:容易产生数据冗余; 修改数据库时可能造成数据异常;一个数据变动可能造成多处修改。
  1. 第二范式(2NF)
  • 定义:在第一范式的基础上,要有 键(可以是多个字段) ,且所有字段必须完全依赖于建。

即,如果某个键不能完全确定其他值,那么就不是完全依赖。

  1. 第三范式(3NF)
  • 定义:一个表中,不能有两层依赖,即A能确定B,B能确定C,即A间接依赖于C。第三范式不允许存在这种情况。

  • 解决方法:分别建表。

  1. BC范式
  • 定义:BC范式要求键中的属性也不能存在间接依赖。

JOIN 链接表

当存在多张表时,我们可以通过join将多个表连接起来,找到我们想要的数据。

select table1name.attr as xxx , table2name.attr as yyy 
from table1 inner join table2 
on table1中的内容 = table2中的内容
  1. inner join 表示 只显示两张表都有的属性
  2. left join 表示 保留左边那张表的NULL
  3. right join 表示 保留右边那张表的NULL
  4. full outer join 保证两边都显示

mysql 存储引擎

show engines;

常见的存储引擎:

  1. InnoDB——mysql默认,支持事务、遵循ACID、支持行锁和外键
  2. MyISMA——拥有较高的插入、查询速度,但不支持事务
  3. Memory——在内存中,能快速访问数据
  4. Archive——只支持insert和select

索引

通过索引,我们可以提高我们的搜索效率

ceate unique index index1 on tablename(attr(100));

show index in users;