Mysql----8 联表查询 嵌套查询 inner join on left join on right join on

1.联表查询   必须多表要有相同的列 (多表查询)

   select  a.name,sex,password from 表1 as a inner join  表2  as b on a.name=b.name;---

   select   a.name ,password, sex from 表1 as a left join 表2  as  b  on a.name=b.name;---左表基准全查

   select  a.name ,password,sex from 表1 as a  right join 表2  as b on  a.name= b.name where password is null;---右表基准全查

2.自连接查询  , 主--从关系结构 要有外键约束

3.select 查询条件的写法  where---->group by ------>having----->order by  ------>limit

执行顺序:from 表 -----》where -----》group by------》having-----》select—》order  by  -----》limit

4.外键约束: 主表 和从表 关系:添加删除数据有顺序。

1.从表外键新增的数据,必须在主表当中存在。

2.要删除有引用关系的字段,要先删除从表中的数据,在删除主表中的数据。

从表中外键的写法: constraint `fk_id` foreign key (`id`) reference 主表名(`主表对应字段`);

3.数据库表的约束有:

非空约束 NOT NULL ,

默认约束default NUll 等 

 唯一约束 unique 

主键约束primary key(`id`)

外键约束 foreign key  

4.多表查询:不一定有约束吧? 

分为:1对多查询  多对多查询 1对一查询

合并结果集:

  union 条件:1.多张表数据列相同;2.纵向合并 

  union all  

2.连接查询: 笛卡尔乘积 相当于把多张表中数据合并成一张大表,然后找多张表共同点查询? a表 Xb表  行相乘  没有条件无意义

    查询两张表有关系的列字段。条件两张表相等字段;  一对多 相当于 左连接  或者右连接   多对一 也一样。

  包含 inner join 表 on 条件     ;    right  join 表 on 条件  ; left  join 表 on  条件;

3.子查询  又叫嵌套查询   包含多层select 查询结果集

  子查询可以出现在 from 后面 作为临表  where 后面   作为条件

子查询的结果集: 1.单行单列 作为条件      2.单行多列  作为条件    3.多行多列   作为表

单行多列 作为条件需要 配合 any  或者 all 来查询 满足任何一行或者全部行的 内容返回值。

   

  

      

原文地址:https://www.cnblogs.com/chencn/p/12303324.html