当前位置:Gxlcms > 数据库问题 > mysql外键使用

mysql外键使用

时间:2021-07-01 10:21:17 帮助过:15人阅读

1.外键:链接两张表的字段,通过主表的主键和从表的外键来描述主外键关系,呈现的是一对多的关系。例如:商品类别(一)对商品(多),主表:商品类别表,从表:商品表。   2.外键的特点:从表外键的值是对主表主键的引用、从表外键类型必须与主表主键类型一致   3.声明外键约束     语法:alter table (从表) add [constraint] (外键名称) foreign key (从表外键字段名) references 主表 (主表的主键)     例如:(1).ALTER TABLE product(从表) ADD CONSTRAINT cid(外键名称) FOREIGN KEY (cid)(从表外键字段名) REFERENCES category(主表) (cid)(主表的主键);         (2). ALTER TABLE product ADD FOREIGN KEY (cid) REFERENCES category (cid);     [外键名称]用于删除外键约束,一般建议”_fk”结尾     alter table 从表 drop foreign key 外键名称;   3. 使用外键的目的:保证数据完整性   4.注意事项:从表外键不能添加主表中不存在的记录、主表不能删除从表中已经引用的记录 二、表与表之间的关系   表与表之间的关系,就是表与表数据之间的关系。   1. 一对多关系:     常见实例:客户和订单,分类和商品,部门和员工     一对多建表原则:在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键     语法:ALTER TABLE product ADD FOREIGN KEY (cid) REFERENCES category (cid);   2. 多对多关系:     常见实例:学生和课程,商品和订单,人和角色     多对多建表原则:需要创建第三张表,中间表至少要有两个字段,这两个字段分别作为外键指向各自一方的主键(就是将一个多对多拆分成两个一对多)     两张表分别都是主表,第三张表为从表,提供两个字段,都是外键。     语法:alter table 从表(stu_course) add foreign key(sno) references stu(sid);     alter table 从表(stu_course) add foreign key(cno) references course(cid);   3. 一对一关系:(了解)     在实际开发中应用不多,因为一对一可以创建成一张表     常见实例:公司和地址     两种原则:外键唯一,外键是主键 三、操作   1.多表查询     (1).交叉连接查询(得到两个表的乘积,基本不使用)       select * from A,B;     (2).内连接查询(使用关键字:inner join -- inner可以省略)       隐式内连接:select * from A,B where 条件;       例如:select * from category c,product p where c.cid=p.cid;       显式内连接:select * from A inner join B on 条件;       例如:select * from category as c inner join product as p on p.cid=c.cid;     (3).外连接查询(使用关键字outer join --outer可以省略)       左外连接:left outer join       select * from A left outer join B on 条件;       例如:select * from category c left join product p on p.cid=c.cid;       右外连接:right outer join       select * from A right outer join B on 条件;       例如:select * from category c right join product p on p.cid=c.cid;     内连接和外连接的区别:       左外连接:查询的是左表全部及两个表的交集       内连接:查询的是两个表的交集       右外连接:查询的是右表全部及两个表的交集   2.子查询     一条select语句结果作为另一条select语法的一部分(查询条件、查询结果、表等)     例如:查询化妆品分类上架商品详情     select * from product where cid =(select cid from category where cname=‘周伯通);

 

mysql外键使用

标签:foreign   log   存在   ons   分类   完整性   使用   不能   类别   

人气教程排行