我们学习数据库肯定是离不开表 table 的,而刚学到这一块知识时研究了好久,这一块语法有点绕或者难以理解和有点复杂。

我说说我学到这里的一些经验吧。

谈谈主键外键的意义。
主键是一个表的关键字,能够唯一确定这条记录的。是表的标识列。一般数据长度越段越好。
外键就是参考主表中某一个字段的值,一般是一个主键记录多个外键的记录。
字段设置了外键就制约了该字段必须在外键的范围内。

说说联合主键和复合主键。
都是保证其唯一性。
联合主键是多个主键联合形成一个主键组合;
复合主键是表的主键含有一个以上的其他字段组成;表中的一个字段既是主键又是其他表中某个字段的外键关联。
一般主键的字段的长度和数目越少越好。



下面是网友分析主从表的关系。


主从表关系:从表数据依赖于主表,一般最后查询数据时把主表与从表进行关联查询。


主表可用于存储主要信息,从表用来存储客户扩展信息。


只能说这两张表通过主外键相关联,比如学生和教师两张表,


教师的主键可以放到学生这张表中作为外键,


但学生这张表的信息并不是教师表的信息的扩展信息。


只是用来说明该学生的教师的编号是多少,


进而从教师这张表可以查到与之对应的教师姓名。


主外键和主从表从目前看来是没有必然联系的,


只能说主从表必然有主外键,而有主外键的两张表不一定为主从表。

外键约束的要求


  1 ? 父表和子表必须使用相同的的存储引擎,而且禁止使用临时表。


      子表指的是有外键的表。


      父表是子表参照的表。 


  2 ? 数据表的存储引擎只能为INNODB.


  3 ? 外键列和参照列必须具有相似的数据类型。数字的长度或是否有符号位必须相同,而字符的长度则可以不同。


      外键列是增加过for in关键词的那列。


      参照列是外键列参照的列。


  4 ? 外键列和参照列必须创建索引。如果外键列不存在索引的话,MYSQL将自动创建索引。

       注意,是外建列而不是参照列。MySQL是不可能为参照列自动创建索引的。

添加键的语法

添加主键约束 alter table 表名 add constraint 主键名 primary key 表名(主键字段名)

添加外键约束 alter table 表名 add constraint 外建名 foreign key (外键字段名)references 关联表名 (关联字段名)

联合主键的写法:

primary key (字段1,字段2,……)

备注:在添加主键时,(主键字段名)这个主键字段名也可以写多个 (字段1,字段2,……)。这就算是添加联合主键的方法吧。