外键:从表外键的值是对主表主键的引用。必须和主表主键类型一直。目的:保证数据的完整性。添加后不能删除主表中已经被关联的数据。不建立外键约束也可以,数据任意插入,容易出现错误。
alter table 从表 add constraint 外键名 foreign key( 从表外键字段 ) references 主表 ( 主表主键)
例如再product表中添加category_id为category表主键cid的外键 alter table product add constraint product_fk foreign key (category_id) references category (cid);
表与表的关系
一对多建表原则:再多的一方创建新一个字段作为外键指向一的一方主键。
多对多建表原则:把一个多对多拆成两个一对多。建立第三张表作为中间表,至少两个字段,分别作为外键指向各自一方的主键
一对一建表原则:主键对应,可以建成一张表。
多表查询:
①交叉查询 select * from A, B; 结果为AB的乘积。(少用)
②内连接
显式内连接 select * from A inner ( 可以省略) join B on 条件;
例如select * from products inner join category on cid =category_id;
③外连接,左/右外连接
select * from A left/right join B on 条件;
例如 select * from products left join category on cid = category_id;
④ 子查询
select * from A where 某字段 = (B表中的某字段)
select * from products where category_id = (select cid from category where cid ='c003');
内连接和外连接的区别