1. MySQL多表查询
1.1 外键约束
为了消除多张表查询出现的笛卡尔积的现象,MySQL在建表并进行多表之间的关键查询可以使用外键关联查询。
外键:从表1(sub)的某列引用(ref)另外一个表2(main)的某列的值,把表1的这列叫做表2这列的外键。
1.2 外键的设置使用
比如上述最简单的员工(employee)和部门表(department),设置外键dept_id与id相关联。
步骤如下:
①在多方表中设置fk外键,使用外键dept_id关联一方表中的主键id,并选择好参考表;
②修改选项设置中的存储引擎为InnoDB,支持设置外键操作;
注意:在MySQL中,InnoDB支持事务和外键.MyISAM 不支持事务和外键。
上述操作也可以使用SQL语句方式修改存储引擎为InnDB:
ALTER TABLE表名ENGINE='InnoDB';
如在命令行界面输入如下语句:
同样使用SQL语句创建外键关联:
ALTER TABLE employee ADD CONSTRAINT employee_fk(外键名) FOREIGN KEY (dept_id) REFERENCES dept(dept_id);
1.3 连接查询分类
连接查询总的分类可以用一张图来简单描述,主要分为外连接查询(左外连接、右外连接、全连接)、内连接查询(内连接、自连接)。
1.4 内连接查询
内连接两张表的情况如下图,连接查询得到的是两张表的交集部分。