zoukankan      html  css  js  c++  java
  • SQL数据库连接查询

    连接查询
    连接概述:

    定义:根据各个数据库表之间的逻辑关系从二个或多个数据表中检索数据。
    注 意:1、连接的两个字段必须数据类型和值域相同。
    2、尽量在表的主键上的基础上,指定连接条件。
    连接分类
    连接查询分为以下几类:
    内连接:基本内连接、多表连接、自连接
    外连接:左外连接、右外连接、全外连接、交叉连接
    内连接概述
    内连接方式:

     1、在select语句的where子句中使用比较运算符给出连接条件对表进行连接.
     2、用表名1 inner join 表名2 on 连接条件 语句进行连接,join指定需要连接的数据表,on指定连接条件(inner可省略)。
    语法:

    select 字段1,字段2,……
    from 表1 inner join 表2 on 连接条件

    内连接— …inner join… on…
    【例】查找学生数据库中每个学生的情况和选修的课程情况

    select * from student inner join subject on student.学号=subject.学号

    【例】查找选修了课程号为2且成绩在80分以上的学生姓名和成绩

    select 姓名,成绩 from student inner join subject  
    on student.学号=subject.学号 
    where 课程号=2 and 成绩>=80

    多表连接
    功能:多表连接主要用于两个以上的表之间的查询。
    语法:

    select…from 表1 join 表2 on 条件1
    join 表3 on 条件2 
    join 表4 on 条件3 
    ……

    多表内连接案例
    【例】从数据库grade中查询学生的姓名、课程名和成绩

    select  姓名,课程名,成绩    from student 
        join subject  on student.学号=subject.学号
    join course    on course.课程号=subject.课程号

    *自连接(特殊的内连接)
    功能:
    自连接查询一个表中各行之间的关系。主要用于比较一个表中  各个记录之间的值,规范化的数据库中很少使用自连接
    【例】查找选修了不同课程成绩相同的学生的学号、课程号和成绩

    select a.学号,a.课程号,a.成绩 
    	from subject a join subject b   
      on a.成绩=b.成绩 and a.课程号<>b.课程号

    外连接

    left outer join

    左外连接,结果集中除了包括满足连接条件的行外,还包括左表所有行。

    right outer join

    右外连接,结果集中除了包括满足连接条件的行外,还包括右表所有行。

    full outer join

    全外连接,结果集中除了包括满足连接条件的行外,还包括两个表的所有行。

    select  字段名1,字段名2……字段n  from  
              表1 left outer join 表2 on 连接条件
         ----表1 right outer join 表2 on 
         ----表1 full outer join 表2 on

    左/右/全外连接案例
    【例】查找所有学生情况及他们选修的课程号,若学生未选修任何课程,也要包括其情况。

    select student.*,课程号 from student left outer join subject           
    on student.学号=subject.学号

    查找被选修了的课程的选修情况和所有开设的课程名。

    select subject.*,课程名 from subject right join course
    on course.课程号=subject.课程号
    

    cross join交叉连接(乘集)
    功能:

      交叉连接将从被连接的表中返回所有可能的记录组合(如:一个表8条记录,另一个表9条记录,结果将返回72条 记录)。一般用于数据库创建测试数据,或为清单及企业模版创建所有可能的组合数据。
    语法:

    select 字段1,字段2,……
       from 表1 cross join 表2

    【例】返回student表和course表所有可能记录的组合

    select 学号,姓名,课程号,课程名
    from student cross join course

    --提示cross join可以基于两个以上的表,不能带where语句
    内连接和外连接的区别
    内连接必满足所有条件;
      外连接在满足条件同时,还要满足方向性中的所有行

  • 相关阅读:
    webpack的入门实践,看这篇就够了
    vue系列教程-15vuex的使用
    vue系列教程-14axios的使用
    vue系列教程-13vuecli初体验
    vue系列教程-12vue单文件组件开发
    vue系列教程-11vuerouter路由
    vue系列教程-10vue过滤器和自定义指令
    vue系列教程-09vue组件
    Spring Redis开启事务支持错误用法导致服务不可用
    MySQL主从数据库配置与原理
  • 原文地址:https://www.cnblogs.com/CharmingDang/p/9663678.html
Copyright © 2011-2022 走看看