今天学习的内容主要是如何为一张表创建主键(PRIMARY KEY),如何创建唯一约束(UNIQUE KEY),为数据表创建索引的好处,以及如何创建外键约束。
主键相关知识点:一张表只能有一个主键。如下面的表中把id字段定义成主键。
要点:属性AUTO_INCREMENT必须要和主键在一起使用才行,当主键那一列的属性不一定要定义成AUTO_INCREMENT型。
唯一约束相关知识点:一张表可以有多个唯一约束。下面为user3表添加几个字段,并把一些字段定义成唯一约束。再把username字段也修改成唯一约束。
首先插入两个字段password 和 salary,并把password定义成唯一约束。
我们再通过SHOW CREATE TABLE `user3` 命令来查看当前表的结构
发现修改成功。再把username字段修改成唯一约束来证明一张表中允许存在多个唯一约束。
添加唯一约束成功说明了可以存在多个唯一约束。
为表中的一列或多列创建索引的好处是能够提高数据表的查询效率。比如user3表中的username字段有N条记录,现在要查找的是记录中最后一条SELECT * FROM `user3` WHERE `username`="李四",没有添加索引,查找时会挨个匹配,时间效率将为O(N),但添加索引后,由于字段username的记录是放在B-树中或哈希树中的,查找时是按已经写好的最优算法来匹配的,时间效率自然会O(n)快出巨多。
外键约束的要求:
1.父表和字表必须使用相同的存储引擎,而且禁止使用临时表。
2.数据表的存储引擎只能为InnoDB。
3.外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。
4.外键列和参照列必须创建索引。如果外键列不存在索引的话,MYSQL将自动创建索引。
下面创建一个province1表,是表user11的父表。
将user11表中的pid定义成外键,通过外键约束,pid不用定义字符类型来存储省份的信息,而可以通过外键与表provinces1关联。
创建provinces1表:
再创建user11表:
把pid设置成外键约束,通过参考provinces1表中的id字段来达到关联的目的。
创建外键约束必须符合上面的4个要求才行。
其中存储引擎指的是如何存储数据,如何为存储数据建立索引和如何更新,查询
数据等技术的实现方法。因为在关系数据库中数据的存储是表的形式存储的,
所以存储引擎也可以称为表类型(即存储和操作此表的类型)。
SHOW CREATE TABLE 表名;来查看表的存储引擎
通过ALTER TABLE 表名 ENGINE=引擎类型;来修改表的类型
通过SHOW ENGINES来查看你的数据库所支持的存储引擎类型,以及数据库默认的存储引擎。
可以通过打开my.ini配置文件来修改默认的存储引擎类型。