MYSQL多表学习笔记
2018-04-06 10:44
190 查看
外键:从表外键的值是对主表主键的引用。必须和主表主键类型一直。目的:保证数据的完整性。添加后不能删除主表中已经被关联的数据。不建立外键约束也可以,数据任意插入,容易出现错误。
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');
内连接和外连接的区别
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');
内连接和外连接的区别
相关文章推荐
- MySQL学习笔记9:连接查询
- MySQL学习笔记(二):MySQL数据类型汇总及选择参考
- mysql学习笔记一
- MySQL学习笔记(五)并发时经典常见的死锁原因及解决方法
- mysql学习笔记(二)SQL的约束
- mysql学习笔记 第四天
- mysql 学习笔记(3)
- MySQL学习笔记(一)――关于MySQL 5
- mysql学习笔记
- Mysql学习笔记四
- MySQL学习笔记之六:MySQL日志
- Mysql学习笔记_4
- 数据库MYSQL学习笔记
- mysql学习笔记(三)select语句
- mysql学习笔记(五)--- 字符串函数、日期时间函数
- MySQL 学习笔记(1)
- 4.mysql学习笔记:mysql的复制(一)
- MySQL学习笔记5:修改表(alter table)
- MySQL服务器学习笔记!(一) ——数据库相关概念