MySql数据库的关系表、连接方式、嵌套查询以及查询结果集的合并
一、关系表(【】为选择性存在语句)
1.一对多关系:在多方表中创建外键关联一方表中的主键
语法:【constraint 外键约束名称】 foreign key(外键字段) references 主表名称(主表外键);
2.一对一关系:在某一方创建“唯一外键”关联另一方
使用unique关键字创建唯一约束。
3.多对多关系:通过第三方中间表维护“多对多的关系”,中间表至少需要两个外键字段,分别关联于两个多方表。
二、连接
1.等值连接:获取两个表中匹配关系的记录
select 字段名1,字段名2,... from 表A,表B,... where 连接条件 【其它过滤条件】;
2.内链接:获取两个表中匹配关系的记录
select 字段名1,字段名2,... from 表A inner join 表B on 连接条件 【其它过滤条件】;
3.外连接
1)左外连接(left join):将左表的数据全部查询出来,右表数据只有满足条件和其它连接条件时才能查询出来。
select 字段名1,字段名2,... from 表A left join 表B on 连接条件 【其它过滤条件】;
2)右外连接(right join):将右表的数据全部查询出来,左表数据只有满足条件和其它过滤条件才能被查出来。
select 字段名1,字段名2,... from 表A right join 表B on 连接条件 【其它过滤条件】;
三、嵌套查询(子查询)
子查询的查询结果集经常作为外部查询的条件,应该使用括号将子查询括起来。
常用关键字有;
1.in:用来检查字段值是否在子查询结果集中
2.all:用来判断字段值是否满足子查询结果集中所有的记录
3.any:用来判断字段值是否满足子查询结果集中任何一条记录
四、合并查询结果集
select 字段名1,字段名2,... from 表A union 【all】 select 字段名1,字段名2,... from 表B;
注:
1.合并表的字段数量应该一样,对应的数据类型应该匹配。
2.查询结果集的字段名以第一个表为准,所以排序时应该以第一个表的字段名为标准。
3.如果查询结果集中包含重复的记录,则union回自动去重,而union all会将所有记录都查询出来。(包括重复记录)