zoukankan      html  css  js  c++  java
  • MySQL多表数据记录查询(一)

    1.交叉连接SQL语句的语法结构如下:

    select * from 表1 cross join 表2;

    Select * from 表1,表2;

    2.内连接SQL语句有两种表示形式:

    使用inner join 语法结构如下:

    Select 表达式1,表达式2,...,表达式n

    From 表1 【inner】join 表2

    On 连接条件

    【where过滤条件】;

    使用where字句定义连接条件语法结构如下:

    Select 表达式1,表达式2,...,表达式n

    From 表1,表2

    Where 连接条件【and过滤条件】;

    主要参数说明:

           表达式1,表达式2,...表达式n :表示为需要检索的名称或列名。

           表1和表2 :是进行内连接的表名。

           连接条件 :连接查询中用来连接两个表的条件。

                      一般格式是:表名1.字段名1 比较运算符 表名2.字段名2

                     比较运算符主要有:=,<,>,>=,<=,当比较运算符为“=”时表示

                     等值连接,其他则为非等值连接

    1:查询学生表与成绩表的交叉连接:

    在库db_school下创建tb_class、tb_student、tb_course、tb_score四张表
    
    show databases;
    
    use db_school;
    
    show tables;
    
    select * from tb_student cross join tb_score;
    
    或
    
    Select * from tb_student,tb_score;

    2:查询每个学生选修课程的情况:

    Select tb_student.*,tb_score.* from tb_student,tb_score
    
    Where tb_student.studentNo=tb_score.studentNo;
    
    或
    
    Select tb_student.*,tb_score.* b
    
    From tb_student inner join tb_score
    
    On tb_student.studentNo=tb_score.studentNo;

    3:查询与“数据库”这门课学分相同的课程信息:

    Select c1.*  //c1表示tb_course的别名//
    
    From tb_course as c1,tb_course as c2
    
    Where c1.credit=c2.credit and c2.courseNa=’数据库’;
    
    或
    
    Select c1.*
    
    From tb_course as c1 join tb_course as c2
    
    On c1.credit=c2.credit
    
    Where c2.courseName=’数据库’;

    4:用自然连接查询每个学生及其选修课程的情况,要求显示每个学生学号、姓名、选修的课程号和成绩;

    Select a.studentNo,studentName,courseNo,score
    
    From tb_student as a natural join tb_score as b;

    注意:自然连接只有当连接字段在两张表中的字段名都相同才可以使用,否则返回的就是笛卡儿积的结果集!

     

    5:使用左外连接查询所有学生及其选修课程的情况,包括没有有选修课程的学生,要求显示学号、姓名、性别、班号、选修的课程号和成绩:

    向学生表中插入一条数据:

    Insert into tb_student b
    
    Values(‘2013310102’,’林海’,’男’,’19960118’,’北京’,’满’,’IS1301’);
    
    然后进行左连接查询:
    
    Select a.studentNo,studentName,sex,classNo,courseNo,score
    
    From tb_student as a left outer join tb_score as b
    
    On a.studentNo=b.studentNo;

     

    6:使用右外连接查询所有学生及其选修课程的情况,包括没有有选修课程的学生,要求显示学号、姓名、性别、班号、选修的课程号和成绩:

    Select courseNo,score,b.studentNo,studentName,sex,classNo
    
    From tb_score as a right outer join tb_student as b
    
    On a.studentNo=b.studentNo;

    连接查询?

      连接查询是关系数据库中重要的查询方式,其包括交叉连接,内连接和外连接。

    什么是笛卡儿积?

      就是没有连接条件表关系返回的结果。

    自连接和自然连接的区别?

      自然连接操作就是表关系的笛卡儿积中,首先根据表关系中相同名称的字段自动进行记录匹配,然后去掉重复的字段

    等值与非等值连接的区别

      一个选择所匹配字段值相等的数据记录一个不相等
    连接条件及其格式是怎么样的?
      字段数据所要达成的效果,内连接、外连接、交叉连接,自然连接、自连接,等值连接、不等连接,
      左连接、右连接、全外连接
    外连接根据连接表的顺序分为几种?它们有什么区别?
      左 连 接:连接于第一个为主
      右 连 接:连接于第二个为主
      全外连接:除了选择相匹配的数据记录,还包含关联左右两边表中不匹配的数据记录

  • 相关阅读:
    CSS相关(2)
    CSS相关(1)
    Git(待补充)
    Jenkins学习(1)-什么是Jenkins
    Yaml(待补充)
    Tomcat(待补充)
    Json(待补充)
    Java语言学习(8)-Java中的异常处理
    Java语言学习(7)-Java中IO
    Java语言学习(6)-Java中封装类(正则表达式操作类)
  • 原文地址:https://www.cnblogs.com/Jackbk/p/12693378.html
Copyright © 2011-2022 走看看