认识sql——foreignKey
这是dept表,主键id,
CREATE TABLE test_dept (
id INT(11) NOT NULL AUTO_INCREMENT,
deptname VARCHAR(32),
locadd VARCHAR(32),
PRIMARY KEY (`id`)
);
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| deptname | varchar(32) | YES | | NULL | |
| locadd | varchar(32) | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+
这是emp表,主键id,外键deptid(references指向表名(主键名
))
CREATE TABLE test_emp (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(32),
deptid INT(11),
PRIMARY KEY (`id`),
FOREIGN KEY (`deptid`) REFERENCES test_dept (`id`)
);
+--------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(32) | YES | | NULL | |
| deptid | int(11) | YES | MUL | NULL | |
+--------+-------------+------+-----+---------+----------------+
- 当这两个表创建成功后,就形成了有外键关联的表,一定程度耦合。
- 向emp表插入数据时,属性deptid必须在dept表中有存在值,否则插入失败;
- 同样,当emp表中尚有包含deptid属性的记录时,是无法删除操作的。