多表联查
一对一: 一张表的一条记录一定只能与另外一张表的一条数据进行对应
一对多: 一个尸体的某个数据与另外一个实体的多个数据有关联关系,一对多的关系在设计的时候需要设计表外键(constraint)约束 (foreign key)外键
多对多(3个表,2个实体表,1个关系表): 一个实体的到时见对应另外一个实体的多个数据,另外实体的数据也同样对应当前实体的多个数据;
比如:一个学生可以有多个老师,一个老师可以教多个学生;
解决方案:创建一个中间表,专门用来维护多表之间的对应关系,通常是能够唯一标识出数据的字段(主键);
中间表,用来表述主键表和外键表对应关系的
constraint 约束
foreign key 外键
foreign key就是表与表之间的某种约定关系,由于这种关系的存在,能够让表与表之间的数据更加的完整,关联性更强
foreign key的语句的句例: FOREIGN KEY(id) REFERENCES 关联的表名(id);
表的外键必须是另一张表的主键
外键的概念:删除主键信息时,当该主键字段值在外检表中存在时,该记录是不能删除的,要把外检表的相关信息删除之后,才能删除
交叉查询: 也叫笛卡尔积查询,将左表和右表的信息,做一个乘积将所有信息查询出来,会产生临时表,比较占用内存,生成的记录数 = 表1数据个数 * 表2数据个数
内连接查询: 内连接关键字;inner join on 查询两张表,设定条件,将两张表中对应的数据查询出来,不会产生笛卡尔积和临时表,性能高
左外连接: 关键字;left join on 设定条件,将两张表对应的数据查询出来,同时将左表自己没有关联的数据也查询出来
这里注意:join前面是左表,后面是后表
右外连接: 关键字;right join on 设定条件,将两张表对应的数据查询出来,同时将右表自己没有关联的所有数据查询出来
联合查询: 例如; select * from 表名1 left join 表2 on 表1.id = 表2.外键id having price > 20;