DQL语言---连接查询

    技术2022-07-11  106

    连接查询

    一、含义二、分类sql92标准sql99标准 三、sql92语法1.等值连接语法特点 2.非等值连接语法 3.自连接语法 四、sql99语法1.内连接语法特点分类 2.外连接语法特点交叉连接

    一、含义

    当查询中涉及到了多个表的字段,就需要使用多表连接。

    SELECT 字段1,字段2... FROM1,2...;

    当查询多个表时,没有添加有效的连接条件,会导致多个表所有行实现完全连接,这称为笛卡尔乘积。要想避免,就要添加有效的连接条件。

    二、分类

    按功能分类

    内连接

    等值连接 非等值连接 自连接

    外连接

    左外连接 右外连接 全外连接

    交叉连接

    sql92标准

    支持内连接,也支持一部分外连接(用于oracle、sqlserver,mysql不支持)

    sql99标准

    支持内连接+一部分外连接(左外和右外)+交叉连接 mysql不支持全外连接

    三、sql92语法

    1.等值连接

    语法

    SELECT 查询列表 FROM1 别名,2 别名 WHERE1.key=2.key AND 筛选条件#非必需 GROUP BY 分组字段#非必需 HAVING 分组后的筛选#非必需 ORDER BY 排序字段#非必需

    特点

    一般为表起别名多表的顺序可以调换n表连接至少需要n-1个连接条件等值连接的结果是多表的交集部分

    2.非等值连接

    语法

    SELECT 查询列表 FROM1 别名,2 别名 WHERE 非等值的连接条件 AND 筛选条件#非必需 GROUP BY 分组字段#非必需 HAVING 分组后的筛选#非必需 ORDER BY 排序字段#非必需

    3.自连接

    语法

    SELECT 查询列表 FROM 表 别名1,表 别名2 WHERE 等值的连接条件#别名1.key=别名2.key AND 筛选条件#非必需 GROUP BY 分组字段#非必需 HAVING 分组后的筛选#非必需 ORDER BY 排序字段#非必需

    四、sql99语法

    1.内连接

    语法

    SELECT 查询列表 FROM1 别名 INNER JOIN2 别名 ON 连接条件 WHERE 筛选条件#非必需 GROUP BY 分组字段#非必需 HAVING 分组后的筛选#非必需 ORDER BY 排序字段#非必需

    特点

    表的顺序可以调换内连接的结果=多表的交集n表连接至少需要n-1个连接条件

    分类

    等值连接非等值连接自连接

    2.外连接

    语法

    SELECT 查询列表 FROM1 别名 LEFT/RIGHT/FULL OUTER JOIN2 别名 ON 连接条件 WHERE 筛选条件#非必需 GROUP BY 分组字段#非必需 HAVING 分组后的筛选#非必需 ORDER BY 排序字段#非必需

    特点

    查询的结果=主表中所有的行。如果从表和它匹配的将显示匹配行,如果从表没有匹配的则显示nullleft join左边的是主表,right join右边的是主表,full join两边都是主表一般用于查询除了交集部分的剩余不匹配的行

    交叉连接

    特点:类似于笛卡尔乘积

    SELECT 查询列表 FROM1 别名 CROSS JOIN2 别名;
    Processed: 0.011, SQL: 9