什么是外键:外键是指引用另一个表中的一列或者多列,被引用的列应该具有主键约束或者唯一性约束。 外键用于建立和加强两个表数据之间的连接.
为表添加外键
ALTER TABLE 表名 ADD CONSTRAINT FK_ID(外键约束名称) foreign key(外键字段名) REFERENCES 主表(主键字段名)
也可以直接在创建变的时候添加外键 CREATE TABLE student( stu_id int NOT NULL PRIMARY KEY, stu_name varchar(32), cls_id int NOT NULL, CONSTRAINT FK_ID foreign key(外键字段名) REFERENCES 外表表名(主键名) )
添加外键约束说明 我们建立外键是为了保证数据的完整性和一致性,如果主键中的数据被删除或者修改,从表中对应的数据怎么处理? 正确的做法当然是从表中的数据也随之改变,否则数据库中会存在很多无意义的数据,当然mysql帮我们想到了 这些,我们在建立外键时添加 ON DELETE 或则 ON UPDATE字句来告诉数据库,避免垃圾数据的产生 CREATE TABLE student( stu_id int NOT NULL PRIMARY KEY, stu_name varchar(32), cls_id int NOT NULL, CONSTRAINT FK_ID foreign key(外键字段名) REFERENCES 外表表名(主键名) ON DELETE CASCADE )
添加外键:alter table classes add constraint FK_TDID foreign key(teacherid) references teachers(id) on delete cascade;
连结查询:
select 表名.列名 from 表名 inner join 表名 on 表名.外键 = 表名.主键
查询的结果为两个表匹配到的数据,把都存在的拿出来
外联结分左连结和右连结
左连结 把inner 改为 left 把左表的数据拿出来去匹配右表的数据,对于右表不存在的数据使用null填充。
查询 any 相当于or all 相当于and union是把两个select语句连结起来,结果不去重。
连结查询: