• SQL连接查询


    一、内连接

      等值连接

    SELECT * FROM Student AS s INNER JOIN Class AS c ON c.ClassID = s.ClassID
    1    张三    19    1    1    班级1
    2    李四    18    1    1    班级1
    3    王五    16    2    2    班级2
    3    王五    16    2    2    班级2

      不等值连接

    SELECT * FROM Student AS s INNER JOIN Class AS c ON c.ClassID != s.ClassID
    1    张三    19    1    2    班级2
    1    张三    19    1    3    班级3
    1    张三    19    1    4    班级4
    1    张三    19    1    5    班级5
    1    张三    19    1    2    班级2
    2    李四    18    1    2    班级2
    2    李四    18    1    3    班级3
    2    李四    18    1    4    班级4
    2    李四    18    1    5    班级5
    2    李四    18    1    2    班级2
    3    王五    16    2    1    班级1
    3    王五    16    2    3    班级3
    3    王五    16    2    4    班级4
    3    王五    16    2    5    班级5
    4    啦啦    20    7    1    班级1
    4    啦啦    20    7    2    班级2
    4    啦啦    20    7    3    班级3
    4    啦啦    20    7    4    班级4
    4    啦啦    20    7    5    班级5
    4    啦啦    20    7    2    班级2

      自然连接

    SELECT * FROM Student AS s ,Class AS c WHERE c.ClassID=s.ClassID
    1    张三    19    1    1    班级1
    2    李四    18    1    1    班级1
    3    王五    16    2    2    班级2
    3    王五    16    2    2    班级2

    二、外连接

      左外连接

    SELECT * FROM Class AS c LEFT JOIN Student AS s ON s.ClassID = c.ClassID
    1    班级1    1    张三    19    1
    1    班级1    2    李四    18    1
    2    班级2    3    王五    16    2
    3    班级3    NULL    NULL    NULL    NULL
    4    班级4    NULL    NULL    NULL    NULL
    5    班级5    NULL    NULL    NULL    NULL
    2    班级2    3    王五    16    2

      右外连接

    SELECT * FROM Class AS c RIGHT JOIN Student AS s ON s.ClassID = c.ClassID
    1    班级1    1    张三    19    1
    1    班级1    2    李四    18    1
    2    班级2    3    王五    16    2
    2    班级2    3    王五    16    2
    NULL    NULL    4    啦啦    20    7

      全外连接

    SELECT * FROM Class AS c FULL JOIN Student AS s ON s.ClassID = c.ClassID
    1    班级1    1    张三    19    1
    1    班级1    2    李四    18    1
    2    班级2    3    王五    16    2
    3    班级3    NULL    NULL    NULL    NULL
    4    班级4    NULL    NULL    NULL    NULL
    5    班级5    NULL    NULL    NULL    NULL
    2    班级2    3    王五    16    2
    NULL    NULL    4    啦啦    20    7

    三、交叉连接

       CROSS JOIN  后面不能用ON过滤,可以用WHERE 

    SELECT * FROM Class AS c CROSS JOIN Student AS s
    1    班级1    1    张三    19    1
    2    班级2    1    张三    19    1
    3    班级3    1    张三    19    1
    4    班级4    1    张三    19    1
    5    班级5    1    张三    19    1
    2    班级2    1    张三    19    1
    1    班级1    2    李四    18    1
    2    班级2    2    李四    18    1
    3    班级3    2    李四    18    1
    4    班级4    2    李四    18    1
    5    班级5    2    李四    18    1
    2    班级2    2    李四    18    1
    1    班级1    3    王五    16    2
    2    班级2    3    王五    16    2
    3    班级3    3    王五    16    2
    4    班级4    3    王五    16    2
    5    班级5    3    王五    16    2
    2    班级2    3    王五    16    2
    1    班级1    4    啦啦    20    7
    2    班级2    4    啦啦    20    7
    3    班级3    4    啦啦    20    7
    4    班级4    4    啦啦    20    7
    5    班级5    4    啦啦    20    7
    2    班级2    4    啦啦    20    7
    View Code

     数据库脚本下载

  • 相关阅读:
    完美的隐藏软键盘方法
    Android开发——构建自定义组件
    android 中 系统日期时间的获取
    Android开发之Intent跳转到系统应用中的拨号界面、联系人界面、短信界面
    总结:调用startActivityForResult,onActivityResult无响应的问题
    Android 頁面中有 EditText ,進入時取消自動彈出鍵盤
    Android中 Bitmap和Drawable相互转换的方法
    ImageView的属性android:scaleType
    动态添加组件(XML)
    Openfire3.8.2在eclipse中Debug方式启动最简单的方式
  • 原文地址:https://www.cnblogs.com/wudequn/p/7090832.html
Copyright © 2020-2023  润新知