1 主键
关系表由行和列组成,每一列表示一个字段,每一行表示一条数据。主键由一列或多列组成,可唯一标识一条数据。注意不要将带有实际含义的字段作为主键,以防字段发生改变。
2 外键
一个表中的外键(FOREIGN KEY)只能指向另一个表中的主键(PRIMARY KEY)或唯一约束的键(UNIQUE KEY),以确保可以通过外键唯一确定另一个表中的数据。
现有students和classes两张表,如下所示:
students表
id | class_id | name | gender | score |
---|---|---|---|---|
1 | 1 | 小白 | M | 87 |
2 | 2 | 小黄 | F | 90 |
3 | 1 | 小橘 | F | 72 |
classes表
id | name |
---|---|
1 | 神机班 |
2 | 妙算班 |
# students表引入classes表中的id作为外键
ALTER TABLE students
ADD CONSTRAINT fk_class_id
FOREIGN KEY (class_id)
REFERENCES classes (id);
3 索引
索引是数据库中高效获取数据的数据结构,一般存储在磁盘文件中,所占空间较大,查询速度快,总而言之即“空间换时间”。
索引不宜过多,以免占用过多存储空间。
# 添加索引
ALTER TABLE students
ADD INDEX idx_score (score);
# 添加多个索引
ALTER TABLE students
ADD INDEX idx_score_name (score, name);
#添加唯一索引
ALTER TABLE students
ADD UNIQUE INDEX uni_name (name);
#添加唯一约束
ALTER TABLE students
ADD CONSTRAINT uni_name UNIQUE (name);