zoukankan      html  css  js  c++  java
  • 内连接

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

    内连接的语法:

    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内连接时多对多的关系

  • 相关阅读:
    HDU 2089 不要62
    HDU 5038 Grade(分级)
    FZU 2105 Digits Count(位数计算)
    FZU 2218 Simple String Problem(简单字符串问题)
    FZU 2221 RunningMan(跑男)
    FZU 2216 The Longest Straight(最长直道)
    FZU 2212 Super Mobile Charger(超级充电宝)
    FZU 2219 StarCraft(星际争霸)
    FZU 2213 Common Tangents(公切线)
    FZU 2215 Simple Polynomial Problem(简单多项式问题)
  • 原文地址:https://www.cnblogs.com/Setme/p/2536598.html
Copyright © 2011-2022 走看看