这周的收获主要就是细节方面与思维方面的一些小小的提升吧。首先做师兄布置给的作业学会了如何三表联查;具体就是 : select *from (表1 inner join 表2 on表1.字段号=表2.字段号)inner join 表3 on 表1.字段号=表3.字段号; 。 还有在实践的过程中发现那种很长的字段名中间是不能分开的,比如说commdity ID 中间的那个空格就不能有,否则会报错;以及详细的了解了一下各种约束:(主键约束、自增约束、外键约束、唯一约束、非空约束、默认约束) 虽然“因为降低数据导入的效率以及增加维护成本而避免使用外键约束”,但是师兄坚持让我学,那么我来总结一下我所学的重点: 基本语法:add foreign key(外键字段)reference主表(主键)on 约束模式
约束模式:1.district :不允许操作 2.cascade:级联(主表变化,从表跟着变化) 3.set null:置空模式 ,主表变化(删除),从表对应记录设置为空。 注意:外键约束主要的对象是主表操作,从表就是不能插入主表不存在的数据。(设置为空的话也可以) 通常在进行约束的时候需要指定操作:update 和 delete 通常约束模式 : on update cascade(更新级联), on delete set null(删除置空) 总之:约束的作用就是保证数据的完整性,主表与从表的数据要一致,正是因为外键有非常强大的数据约束作用,而且可能导致数据在后台的变化不可控,导致程序在进行设计开发逻辑的时候,没有办法很好的把握数据(业务),所以外键比较少使用
接下来就是我听了N多课,找了N多资料才明白的一二三范式,最后跟师兄讨论后也才真正对其有些理解。简而言之,第一范式:没有重复的列 第二范式:属性完全依赖于主键(消除部分子函数依赖) 第三范式 : 属性不依赖与其他非主属性(消除传递依赖) 。
最后是自己今天上午的收获 :
key值(PRI UNI MUL) 的含义 : 如果key值是空的,那么该列值可以重复,表示该列没有索引,或者是一个非唯一的复合索引的非前排导列
如果key是PRI,那么该列是主键的组成部分
如果key是UNI,那么该列是一个唯一值索引的第一列(前导列),并且不含有空值NULL
如果key是MUL,那么该列的值可以重复,该列是一个非唯一索引的前导列(第一列)或者是 一个唯一性索引的组成部分但是可以含有空值NULL。