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 来查询 满足任何一行或者全部行的 内容返回值。