mysql外键使用
一、外键 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='周伯通');
无论从事什么行业,只要做好两件事就够了,一个是你的专业、一个是你的人品,专业决定了你的存在,人品决定了你的人脉,剩下的就是坚持,用善良專業和真诚赢取更多的信任。