• 内连接


    内连接也叫连接,是最早的一种连接,最早被称为普通连接或自然连接。内连接是从结果中删除其他被连接表中没有匹配行的所有行,所以内连接可能会丢失信息。

    内连接的语法:

    SELECT fieldlist FROM table1 [INNER] join table2 ON table1.column=table2.column

    一个表中的行和与另外一个表中的行匹配连接。表中的数据决定了如何对这些行进行组合。从每一个表中选取一行,根据这些列的值是否相同,组合方式分为一对一、多对一和多对多的关系。

    1.一对一关系

    当连接的两个表,两个连接列的值完全相同,则两个表连接相当于一对一的关系。

    下面在“pubs”数据库中“titles”和“titleauthor”两个表中,根据相同列“title_id”进行内连接。在查询分析器中输入的SQL语句如下:

    use pubs
    select * from titles inner join titleauthor on titles.title_id=titleauthor.title_id

    实现的过程如图1所示。

    图1内连接时一对一的关系

    说明:表“titles”和“titleauthor”都是SQL Server自带的数据库“pubs”的表。由于两个表中的title_id列都是具有惟一值的索引,所以两个表的内连接属于一对一的关系。

    2.多对一关系

    当连接的两个表,其中一个表要连接的列出现重复值,另外一个表的值是惟一的。这时连接的两个表之间的出现了多对一的关系。

    下面“student”表中的“学号”具有惟一值,而“grade”成绩表中的“学号”有重复值。现在实现这两个表的内连接。在查询分析器中输入的SQL语句如下:

    use student
    select * from grade join student on student.学号=grade.学号 

    实现的过程如图2所示。

    图2内连接时多对一的关系

    3.多对多关系

    当连接的两个表,要连接的列都出现重复值,这时连接的两个表之间出现多对多的关系。

    本例是SQL Server自带的数据库“pubs”,其中的两个表“titles”和“roysched”中的“royalty”列都有重复值,现在实现这两个表的内连接。在查询分析器中输入的SQL语句如下:

    use pubs
    select * from titles inner join roysched on titles.royalty=roysched.royalty

    实现的过程如图3所示。

    图3内连接时多对多的关系

  • 相关阅读:
    透传是什么
    C++ #pragma once
    限流策略了解
    mysql系列~GTID基础
    go基础类型~数组,切片,字符串
    go基础系列~结构体
    C# 绘制统计图(柱状图, 折线图, 扇形图)
    如何利用Tensorflow2进行猫狗分类识别
    【c++复习笔记】——智能指针详细解析(智能指针的使用,原理分析)
    设计原则
  • 原文地址:https://www.cnblogs.com/Setme/p/2536598.html
Copyright © 2020-2023  润新知