索引:其实就好比书的目录,也可以说是书签,索引的存在就是问了更快的查询,就好比你用新华字典查一个字的时候,你也不会一页页的去找,会先去找目录里面的字在哪一页,这样会快很多,索引也是同样的道理
索引又分了很多种,各种有各种的特点,解决的场景不同,我们要会选择适合的索引
普通索引:语法:key/index(字段名1,自动名2....)
唯一索引:它的值是唯一的,不能插入相同的值,和主键索引有类是之处,unique key(字段名1,字段名2....)
全文索引:主要是为了解决模糊查询而存在的一种索引,当数据量很大的时候,用模糊查询很慢,但是用全文索引是很快的,fulltext(字段名1,字段名2....)
主键索引:值也是唯一的,一般作用于id,与auto_crement连用,一张表只能有一个主键索引,primary key(字段名)
下面是新建的表,当一张表有很多索引的时候,一般都把建索引放在最后
查看表的索引:show index from 表名;
注意事项:唯一索引和主键索引一样,不能插入重复的值:
全文索引的用法:
select * from 表名 where match(列名) against ('值');
外键约束:就是用来约束两个表之间的数据关系,比如之前的学生表和分数表之间的关系,分数表是依托学生表存在的,不可能存在有分数没有学生的这种情况,外键约束也就是应用在这种情况下,只有引擎innodb才支持,myisam不支持;
语法:
foregin key(字段) references 表名(字段名)
从下面可以看出,mark表只能插入外键对应的主表有值的数据,所以就不会出现只有分数没有学生的情况,还有一点就是当插入错误,它的id也在增长;
当有外键的时候,主表的数据也是不能删除的,避免了出现数据错误的情况;