`

inner join 和where 区别 .

    博客分类:
  • db
 
阅读更多
1 .WHERE子句中使用的连接语句,在数据库语言中,被称为隐性连接。INNER JOIN……ON子句产生的连接称为显性连接。(其他JOIN参数也是显性连接)WHERE 和INNER JOIN产生的连接关系,没有本质区别,结果也一样。但是!隐性连接随着数据库语言的规范和发展,已经逐渐被淘汰,比较新的数据库语言基本上已经抛弃了隐性连接,全部采用显性连接了。

2 .无论怎么连接,都可以用join子句,但是连接同一个表的时候,注意要定义别名,否则产生错误!

a> inner join:理解为“有效连接”,两张表中都有的数据才会显示left join:理解为“有左显示”,比如on a.field=b.field,则显示a表中存在的全部数据及a//b中都有的数据,A中有、B没有的数据以null显示

b> right join:理解为“有右显示”,比如on a.field=b.field,则显示B表中存在的全部数据及a//b中都有的数据,B中有、A没有的数据以null显示

c> full join:理解为“全连接”,两张表中所有数据都显示,实际就是inner +(left-inner)+(right-inner)

3 .join可以分主次表   外联接有三种类型:完全外联,左联,右联.
完全外联包含两张表的所有记录.
左联是以左边的表为主,右边的为辅,右联则相反

4.一般要使得数据库查询语句性能好点遵循一下原则:

•   在做表与表的连接查询时,大表在前,小表在
•不使用表别名,通过字段前缀区分不同表中的字段
•查询条件中的限制条件要写在表连接条件前
•尽量使用索引的字段做为查询条件
语法格式:
    其实 INNER JOIN ……ON的语法格式可以概括为:
    FROM (((表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号) INNER JOIN 表4 ON Member.字段号=表4.字段号) INNER JOIN 表X ON Member.字段号=表X.字段号
    您只要套用该格式就可以了。
   
    现成格式范例:
    虽然我说得已经比较明白了,但为照顾初学者,我还是以本会员注册系统为例,提供一些现成的语法格式范例,大家只要修改其中的数据表名称和字段名称即可。
   
    连接两个数据表的用法:
    FROM Member INNER JOIN MemberSort ON Member.MemberSort=MemberSort.MemberSort
    语法格式可以概括为:
    FROM 表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号
   
    连接三个数据表的用法:
    FROM (Member INNER JOIN MemberSort ON Member.MemberSort=MemberSort.MemberSort) INNER JOIN MemberLevel ON Member.MemberLevel=MemberLevel.MemberLevel
    语法格式可以概括为:
    FROM (表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号
   
    连接四个数据表的用法:
    FROM ((Member INNER JOIN MemberSort ON Member.MemberSort=MemberSort.MemberSort) INNER JOIN MemberLevel ON Member.MemberLevel=MemberLevel.MemberLevel) INNER JOIN MemberIdentity ON Member.MemberIdentity=MemberIdentity.MemberIdentity
    语法格式可以概括为:
    FROM ((表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号) INNER JOIN 表4 ON Member.字段号=表4.字段号
   
    连接五个数据表的用法:
    FROM (((Member INNER JOIN MemberSort ON Member.MemberSort=MemberSort.MemberSort) INNER JOIN MemberLevel ON Member.MemberLevel=MemberLevel.MemberLevel) INNER JOIN MemberIdentity ON Member.MemberIdentity=MemberIdentity.MemberIdentity) INNER JOIN Wedlock ON Member.Wedlock=Wedlock.Wedlock
    语法格式可以概括为:
    FROM (((表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号) INNER JOIN 表4 ON Member.字段号=表4.字段号) INNER JOIN 表5 ON Member.字段号=表5.字段号


分享到:
评论

相关推荐

    SqlServer中Group By高级使用--Inner Join分组统计

    这个查询将返回每个客户的名字以及他们的总订单金额,通过Inner Join将订单表和客户表关联,然后使用Group By对客户进行分组,最后计算每个客户的订单总金额。 进一步扩展,如果我们想在分组统计中包含更复杂条件,...

    【SQL】在sql server中 delete时 使用INNER JOIN

    - **数据同步**:在需要保持两个或多个表间数据一致性时,可以使用 `INNER JOIN` 来定位需要更新或删除的数据,从而确保数据的一致性和完整性。 - **复杂查询**:对于涉及多个表的复杂查询,可能需要先删除某些表中...

    Mysql之innerjoin,leftjoin,rightjoin详解.pdf

    inner join、left join 和 right join 是 Mysql 中三种最常用的连接查询方式。 inner join inner join 又称等值连接,是指从两个表中选择公共列的记录。只有当两个表中的列值相等时,才会返回结果集。例如: ...

    SQL中的left outer join,inner join,right outer join用法详解

    SELECT * FROM t_institution i INNER JOIN t_teller t ON i.inst_no = t.inst_no WHERE i.inst_no = "5801" 等价于早期的连接语法: SELECT * FROM t_institution i, t_teller t WHERE i.inst_no = t.inst_no AND...

    关于SQL 中的inner join的使用

    这里的关键在于使用了两次 INNER JOIN 连接操作:首先将 `table1` 和 `table2` 连接,然后将结果与 `table3` 进行连接。最后通过 `WHERE` 子句筛选出市场部的员工。 ##### 场景2:查询市场部员工或年龄大于50岁的...

    数据库实验5;数据库实验5

    这个查询涉及到联接操作,通过`INNER JOIN`将`student`,`enroll`和`course`表连接在一起,根据学生ID和课程ID匹配选课信息。查询语句如下: ```sql SELECT student.studentid, studentname, studentage, ...

    数据库系统原理课程设计报告.pdf

    (7)找出学生代号为“S101”和“S102”两个学生都选修了的课程:SQL语句为SELECT S.SNO, G.CNO, C.CNAME FROM (S INNER JOIN G ON S.SNO=G.SNO) INNER JOIN C ON G.CNO=C.CNO WHERE ((S.SNO)Like 's101') AND ...

    join on 语句及扩展

    这里我们将深入探讨几种JOIN类型及其使用,以及ON和WHERE子句的区别。 1. INNER JOIN: INNER JOIN返回两个表中匹配的记录。这意味着如果某个记录在其中一个表中没有对应的匹配项,那么这个记录就不会出现在结果集中...

    Left join优化规则的研究

    当 Left Join 可以被转化为 Inner Join 时,通常是因为在 WHERE 子句中存在关于右表的非 NULL 条件。这允许数据库跳过对左表中无匹配项的记录,从而提高查询速度。 2.1 条件转化 对于以下 Left Join 查询: ```sql ...

    SQL经典面试题集(一).pdf

    解法二:`SELECT S.S#, S.SN FROM S INNER JOIN SC ON S.S# = SC.S# INNER JOIN C ON SC.C# = C.C# WHERE C.CN = '税收基础'` (2)查询选修课程编号为'C2'的学员姓名和所属单位: 这个问题与第一个问题类似,只是...

    SQL 之JOIN 用法完全版.rar

    需要注意的是,ON条件和WHERE条件的区别:ON用于定义表之间的关联,而WHERE用于筛选满足特定条件的行。 8. **多表JOIN**: SQL允许同时JOIN三个或更多表,通过嵌套JOIN语句或使用多个JOIN子句实现。 9. **性能...

    sql 多表查询

    此查询涉及S和SC两个表,通过`INNER JOIN`将学生表与成绩表连接起来,确保只返回那些在SC表中有记录的学生信息。 ```sql SELECT S.Sno, S.Sname, C.Cname, SC.Score FROM S INNER JOIN SC ON S.Sno = SC.Sno INNER ...

    多表查询-相关子查询-SCD-答案[文].pdf

    以上就是对给定数据库SCD的相关子查询操作的解析,通过这些例子,我们可以更好地理解和运用SQL中的JOIN和子查询来处理多表查询问题。对于软件开发人员来说,掌握这些查询技巧对于设计和优化数据库查询至关重要。

    sql语句join中on和where的区别

    ### SQL语句JOIN中ON和WHERE的区别 #### 引言 在SQL中,JOIN操作用于合并两个或多个表中的行。正确理解`ON`和`WHERE`子句的区别对于高效地编写查询至关重要。本文将详细解释这两者的不同,并通过具体的例子来加深...

    SQL50道练习题(附答案)

    AND COUNT(DISTINCT SC.C#) = (SELECT COUNT(*) FROM (SELECT DISTINCT C.C# FROM SC AS SC4 INNER JOIN Course AS C ON SC4.C# = C.C# WHERE SC4.S# = '1002') AS C); ``` #### 15. 删除学习“叶平”老师课的SC...

    数据库系统原理课程设计报告.doc

    - (4)检索选修了课程代号为“c11”和“c23”的学生:`SELECT S.* FROM S INNER JOIN G ON S.SNO = G.SNO WHERE G.CNO LIKE 'c11' AND EXISTS (SELECT * FROM G AS G2 WHERE G.SNO = G2.SNO AND G2.CNO LIKE 'c23'...

    sql语句中join的用法和效率说明.doc

    在SQL Server中,INNER JOIN和WHERE子句在逻辑上是等效的,但它们在执行计划上的表现可能会有所不同。通常情况下,INNER JOIN通过创建一个中间表来保存匹配的行,然后再进行后续处理,而WHERE子句则可能需要多次遍...

    数据库实验报告

    - 找出选修课程编号为2的学生的班级和学号(SELECT Student.Sclass, Student.Sno FROM Student INNER JOIN SC WHERE (SC.Cno = '2') AND (SC.Grade = '及格')):筛选出选修课程编号为2且成绩为“及格”的学生班级...

Global site tag (gtag.js) - Google Analytics