zoukankan      html  css  js  c++  java
  • 【SQL】- 基础知识梳理(三)

    一、引言

    有时为了得到一张报表的完整数据,需要从两个或更多的表中获取结果,这时就用到了“连接查询”。

    二、连接查询

    连接查询的定义:

    数据库中的表通过键将彼此联系起来,从而获取这些表中的数据

    连接查询的语法:

    ROM  join_table join_type join_table[ON (join_condition)]

    其中join_table指出参与连接操作的表名,连接可以对同一个表操作,也可以对多表操作,对同一个表操作的连接又称做自连接。join_type 指出连接类型。join_condition指连接条件。使用比较运算符(包括=、>、<、<>、>=、<=、!>和!<)进行表间的比较操作

    三、连接类型

    连接类型的分类:内连接、外连接、交叉连接

    下面做数据准备:

    create table Student
    (
    id int not null,
    Studentname varchar(10),
    ClassId nvarchar(10)
    )
    go
    insert into Student values 
    (1,'michael',11),
    (2,'cumming',12),
    (3,'andy',13),
    (4,'pgone',15)
    go
    create table Class
    (
    id int not null,
    name varchar(10)
    )
    go
    insert into Class values 
    (11,'一班'),
    (12,'二班'),
    (13,'三班'),
    (14,'四班')
    go
    View Code

    内连接:返回左右表中相互匹配的

    select * from Student a inner join Class b on a.ClassId=b.id
    “等于”
    select * from Student a,Class b where a.ClassId=b.id

    外连接:左连接(LEFT JOIN)或左外连接(LEFT OUTER JOIN)、右连接(RIGHT JOIN)或右外连接(RIGHT OUTER JOIN)、全连接(FULL JOIN)或全外连接(FULL OUTER JOIN)。我们就简单的叫:左连接、右连接和全连接。

    左连接:返回左表中的行,如果左表中的行在右表中没有匹配行,则结果集中右表的行返回空值

    select * from Student a left join Class b on a.ClassId=b.id

    右连接:与左连接相对,返回右表中的行,如果右表中的行在左表中没有匹配行,则结果集中左表的行返回空值

    select * from Student a right join Class b on a.ClassId=b.id

    全连接:返回左右两表中的所有行,当某行在另一表中没有匹配行时,则另一表返回空值

    select * from Student a full join Class b on a.ClassId=b.id

    交叉连接:返回被连接两个表的笛卡尔积,返回的行数等于两个表行数的乘积(例如:student和class,返回4*4=16条记录)

    select * from Student a cross join Class b 

     (注:cross join后加条件只能用where,不能用on)  

  • 相关阅读:
    Golang 学习之路
    Kubernetes 资源对象之DaemonSet
    Spring Cloud服务注册中心交付至kubernetes
    自动化运维之Ansible入门
    MySQL 高可用之主从复制
    Kubernetes 强大的namespace
    SaltStack RESTful API操作
    Kubernetes 服务自动发现CoreDNS
    2个月……
    一次游玩与这两周的一些感想
  • 原文地址:https://www.cnblogs.com/jdzhang/p/7572029.html
Copyright © 2011-2022 走看看