欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysql学习笔记:多表查询

程序员文章站 2022-05-29 16:42:44
...
  • 内连接查询

    • 隐式内连接
      例:查询总分低于500的学生的id、姓名、总分。
      SELECT
      			t1.id,		-- 学生ID
      			t1.name,	-- 学生姓名
      			t2.score	-- 学生总分
      FROM
      			student t1,	-- 学生表
      			grade t2	-- 成绩表
      WHERE 
      			t1.id = t2.id AND t2.score < 500;
      
    • 显式内连接
      SELECT
      			t1.id,		-- 学生ID
      			t1.name,	-- 学生姓名
      			t2.score	-- 学生总分	
      FROM
      			student t1,	-- 学生表
      JOIN
      			grade t2	-- 成绩表
      ON
      			t1.id = t2.id AND t2.score < 500;
      
  • 外连接
    例:有两个表:学生表与成绩表,有一个学生没有参加考试,所以成绩为NULL。
    我们查询时又想显示出他的姓名。

    • 左外连接
      显示前一个表的全部记录
      SELECT
      			t1.id,		-- 学生ID
      			t1.name,	-- 学生姓名
      			t2.score	-- 学生总分	
      FROM
      			student t1	-- 学生表
      LEFT JOIN
      			grade t2	-- 成绩表
      ON
      			t1.id = t2.id AND t2.score < 500;
      
    • 右外连接
      显示后一个表的全部记录
      SELECT
      			t2.id,		-- 学生ID
      			t2.name,	-- 学生姓名
      			t1.score	-- 学生总分	
      FROM
      			grade t1	-- 成绩表
      RIGHT JOIN
      			student t2	-- 学生表		
      ON
      			t1.id = t2.id AND t1.score < 500;
      
  • 子查询
    将一个查询语句作为一个表来使用
    例:查询女性学生的id、姓名、总分

    SELECT
    		t1.id,		-- 学生ID
    		t1.name,	-- 学生姓名
    		t2.score	-- 学生总分
    FROM
    		(SELECT id, name FROM student WHERE sex = '女') t1,	-- 显示性别为女的学生表
    		grade t2	-- 成绩表
    WHERE
    		t1.id = t2.id;
    
相关标签: 笔记