key):表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。
索引:数据库索引好比是一本书前面的目录,能加快数据库的查询速度。
1.
普通索引
这是最基本的索引,它没有任何限制,比如上文中为title字段创建的索引就是一个普通索引,myiasm中默认的btree类型的索引,也是我们大多数情况下用到的索引。
2.
唯一索引
与普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值(注意和主键不同)。如果是组合索引,则列值的组合必须唯一,创建方法和普通索引类似。
其实不止是mysql里,所有的数据库都有主键外键的概念。举个简单的例子。因为在中国有不少人姓名相同,所以虽然在你家里能用名字做统一标识,但是在中国这个范围却不行,所以就有了身份z号,这是主键,保证每一个人有一个。然后你会上学,上学的话就有学籍这么个东西,虽然有学籍号还有学籍信息,但是我现在想要通过身份z号知道你的学历的话,在学籍这个表中,就要加入你的身份信息,这个身份信息与学籍信息当然不是在一个表里的,最简单的方法,是把身份信息都复制到学籍信息这个表里,不过很显然,这样数据库就有两份记录,一份在身份信息表里,一份在学籍信息表里,而且都是身份信息。这叫做冗余,不但占多了空间,还不能保证修改时候的同步,而且你也许还有社会保险啦,驾驶证之类更多的信息存在,我也不可能每个表都复制身份信息过去。这时就出现在外键,我只需要在这些表中插入身份z号这个列做为外键,那我到时候通过这个唯一的编号去身份信息这个表里找就好了,而且修改身份信息的话也只要在身份信息这个表做就好了,很方便很简单不是吗欢迎分享,转载请注明来源:内存溢出
评论列表(0条)