zoukankan      html  css  js  c++  java
  • mysql(三)多表查询

    Mysql 表与表之间的三种关系

    • 表与表之间一般存在三种关系,即一对一,一对多,多对多关系。
        article_cate 文章分类表
        有id,title,state, 字段
    
        article   文章表
        有id,title,description,cate_id,state 字段
    
        一个分类对应 多个文章
        一条文章只对应 一个分类
        article_cate 表中的ID 关联了 article表中的 cate_id 字段
    
    
    1. 一对一
      查询 所有文章 及其 分类ID

       笛卡尔积连接
       select article.id as id,article.title as title,article_cate.title as cate 
       from article,article_cate 
       Where article.cate_id=article_cate.id;
      
       内连接
       select article.id as id,article.title as title,article_cate.title as cate 
       from article 
       INNER JOIN article_cate ON article_cate.id=article.cate_id;
      
      
    2. 一对多

    返回 分类ID 为 2 的数据
    select * from article where cate_id=2
    
    
    1. 多对多
    多对多的关系需要借助中间表来关联
    三个表 课程表,中间表,学生表 lesson, lesson_student, student 
    表结构字段如下:
    lesson[id,name],
    lesson_student[lesson_id,student_id],
    student[id,number,password,classId,name]
    
    1、查询张三选修了那些课程
        张三的 Id 为 1
    
    普通查询:
        SELECT * FROM lesson where id in (select lesson_id from lesson_student WHERE student_id=1);
    
    笛卡尔积关联查询:
        SELECT * FROM lesson,lesson_student where lesson.id=lesson_student.lesson_id AND lesson_student.student_id=1;
    
    INNER JOIN(内连接查询):
        SELECT * FROM lesson INNER JOIN lesson_student ON lesson.id=lesson_student.lesson_id AND lesson_student.student_id=1;
    
    
    2、查询 Java 程序设计被那些学生选修了
        Java 程序设计的 id 为 2
    普通查询:
        SELECT * FROM student where id in (select student_id from lesson_student WHERE lesson_id=2);
    
    笛卡尔积关联查询:
    SELECT * FROM student,lesson_student 
    where student.id=lesson_student.student_id AND lesson_student.lesson_id=2;
    
    内连接:
    SELECT * FROM student INNER JOIN lesson_student ON student.id=lesson_student.student_id AND lesson_student.lesson_id=2;
    
    左外连接:LEFT JOIN   ON
    
    右外连接:RIGHT JOIN  ON
    
    左右连接 没有匹配上的数据不会返回
    
    
    
  • 相关阅读:
    一个web应用的诞生(4)
    一个web应用的诞生(7)
    一个web应用的诞生(6)
    HTTP状态码大全(转自wiki)
    十分钟搞懂什么是CGI
    HTTP真的很简单
    QT程序在发布的时候应注意的地方
    QT中获取选中的radioButton的两种方法
    WinEdit编辑器中中文乱码
    C++ lstrlen()
  • 原文地址:https://www.cnblogs.com/kgwei520blog/p/13783003.html
Copyright © 2011-2022 走看看