数据库基础(四)

(一)约束(Constraint,创建表时加在字段后)

(1)什么是约束?常见的约束有哪些?

数据库基础(四)

(2)唯一性约束(unique):唯一性约束修饰的字段具有唯一性,不能重复。但可以为NULL(多个值为NULL并不代表重复,因为NULL之间不可比较 )。

 a:给单一列加约束

数据库基础(四)

  b:给多个列加联合约束

数据库基础(四)

(3)主键约束(primary key)推荐使用单一主键,自然主键

数据库基础(四)

数据库基础(四)

数据库基础(四)

(4)外键约束 (重点!) 格式:foreign key(字段名) reference 被引用表名(字段名)

数据库基础(四)

 数据库基础(四)

 数据库基础(四)

 (二)存储引擎(了解即可,知道存储引擎的涵义以及几种常见的存储引擎 )

 (1)什么是存储引擎:存储引擎相当于表的存储方式!存储引擎这个名字只在 mysql中存在。每一种存储引擎就对应了一种不同的存储方式。mysql支持很多存储引擎,默认使用的是InnoDB

 (2)MyISAM 存储引擎:

数据库基础(四)

 (3)InnoDB 存储引擎:

数据库基础(四)

 (4)MEMORY存储引擎:

 数据库基础(四)

 (三)事务(重点!!!)

 数据库基础(四)

  数据库基础(四)

数据库基础(四)

数据库基础(四)

注意:mysql事务默认情况下是自动提交的。即:只要执行任意一条DML语句则提交一次。 可以使用 start transaction 关闭自动提交。

     rollback只能回滚到上次事务的提交点,已提交部分不可回滚。

 

(四)索引:(重要)

  数据库基础(四)

 数据库基础(四)

 数据库基础(四)

   数据库基础(四)

 

 (五)视图(view)(用的较少)

数据库基础(四)

 数据库基础(四)

 

 (六)DBA命令

 数据库基础(四)

 

 (七)数据库设计三范式(重点内容,面试经常问!)

(1)什么是设计范式?

  答:是设计表的依据,目的是减少数据冗余,按照这个三范式设计的表不会出现数据冗余!

 (2)三范式都是那些?

  a.第一范式:任何一张表都应该有主键,并且每一个字段符合原子性不可再分

  b.第二范式:建立在第一范式的基础之上,所有非主键字段完全依赖主键不能产生部分依赖

  满足第二范式不产生部分依赖的做法:若两张表有多对多关系(如下图中,一个学生可以有多个老师,一个老师也可有多个学生),则需要产生一张关系表,该关系表中有两个外键!(口诀:多对多,三张表,关系表两个外键!)

数据库基础(四)

   c.第三范式:建立在第二范式的基础之上,所有非主键字段直接依赖主键不能产生传递依赖

  满足第三范式不产生传递依赖的做法:若两张表有一对多关系(如下图中,一个班级可以有多个学生,但是一个学生只能有一个班级),则需要在多的那个表中(即学生表)加外键!(口诀:一对多,两张表,多的表加外键!)

 数据库基础(四)

提醒:在实际的开发中,以满足客户的需求为主,有的时候会拿冗余换执行速度。(因为表连接越多,需要表联查,sql执行越慢。)

另外:一对一设计有两种方案:1.主键共享2. 外键唯一(即 将加外键的表设置为唯一性约束)

 

参考:https://www.bilibili.com/video/BV1fx411X7BD?

数据库基础(四)

上一篇:mysql查询文章表各类别前几的文章的sql语句


下一篇:mysql 存储引擎