美文网首页SQLSQL-Server
SQL-Server之--基本关键字

SQL-Server之--基本关键字

作者: ys简单0 | 来源:发表于2017-06-23 12:58 被阅读25次

    由于最近得兼职做后台的业务逻辑以及接口的工作,因此在此把最近总结到的有关数据库查询的东西进行一下总结和备忘。生活不易,且过且珍惜呀....

    1.LEFT JOIN ,RIGHT JOIN, INNER JOIN的区别

    LEFT JION 左连接,主要依照左表,返回左表的所有记录和右表中联结字段相等的记录。
    RIGHT JOIN 右连接,主要依照右表,返回包括右表中的所有记录和左表中联结字段相等的记录。
    INNER JOIN 等值连接,只返回两个表中联结字段相等的行
    ON 为连接条件,后可以用AND 或 OR连接附加连接条件

    1.1查询语句直观来看三者区别

    Designer_UserInfo表中的数据如下:
    ID         TrueName
    1           小糖豆
    2           小土豆
    3           大猴子
    4           小萝卜
    Student_UserInfo表中数据如下
    ID           Age
    1             10
    2             11
    3             15
    8             4
    
    使用LEFT JOIND的查询语句为
    SELECT *FROM Designer_UserInfo LEFT JOIN Student_UserInfo ON Designer_UserInfo.ID=Student_UserInfo.ID
    返回结果为
    ID         TrueName   ID1           Age
    1           小糖豆      1            10
    2           小土豆      2             11
    3           大猴子      3             15
    4           小萝卜     NULL          NULL
    
    使用RIGHT JOIND的查询语句为
    SELECT *FROM Designer_UserInfo RIGHT JOIN Student_UserInfo ON Designer_UserInfo.ID=Student_UserInfo.ID
    返回结果为
    ID         TrueName   ID1           Age
    1           小糖豆      1            10
    2           小土豆      2             11
    3           大猴子      3             15
    NULL        NULL       8             4
    
    使用INNER JOIND的查询语句为
    SELECT *FROM Designer_UserInfo INNER JOIN Student_UserInfo ON Designer_UserInfo.ID=Student_UserInfo.ID
    返回结果为
    ID         TrueName   ID1           Age
    1           小糖豆      1            10
    2           小土豆      2             11
    3           大猴子      3             15
    

    1.2返回字段

    SELECT *返回所有字段,如果是连表查询,则返回两个表中的所有字段,若是单表查询则返回当前表中所有字段;
    SELECT Designer_UserInfo.* 返回Designer_UserInfo表中所有字段,不管是单表还是连表;
    SELECT Designer_UserInfo.ID 则只返回Designer_UserInfo表中的ID字段不管是连表还是单表。
    如:
    SELECT Designer_UserInfo.TrueName,Student_UserInfo.Age FROM Designer_UserInfo LEFT JOIN Student_UserInfo ON Designer_UserInfo.ID=Student_UserInfo.ID 
    结果直返这两个字段:
    TrueName Age
    小糖豆 10
    小土豆 11
    大猴子 15
    小萝卜 null
    注意SELECT后面添加的返回字段必须用‘,’隔开,最后一个字段后什么都不用加
    
     若想返回两个表中的两个字段可以这样写:
    SELECT Designer_UserInfo.ID,Student_UserInfo.ID
    FROM Designer_UserInfo INNER JOIN Student_UserInfo ON Designer_UserInfo.ID=Student_UserInfo.ID
    

    2.连接条件 ON AND OR

    如上面的查询语句ON是连表查询的连接条件,Designer_UserInfo中的ID等于Student_UserInfo中的ID,但是一般后面还会跟其他的连接条件,如果是两者都需要满足的话就用AND连接,如果两者只要有一个条件满足就可以用OR来连接。
    一定要记住NAD 和 OR跟在ON后面代表的是连接条件,跟在WHERE后表示查询条件,两者之间产生的效果是截然不同的,下面举例说明。
    一般在数据库中都会有一个字段用来标识是否删除,因此连表条件一般加上这个如下:

    SELECT *FROM Designer_UserInfo INNER JOIN Student_UserInfo ON Designer_UserInfo.ID=Student_UserInfo.ID AND Student_UserInfo.isDel=0
    

    2.1 OR的使用

    如果我们把查询语句改为
    SELECT *FROM Designer_UserInfo LEFT JOIN Student_UserInfo ON Designer_UserInfo.ID=Student_UserInfo.ID OR Designer_UserInfo.ID=Student_UserInfo.Age
    结果就会变成
    1   小糖豆 1   10
    2   小土豆 2   11
    3   大猴子 3   15
    4   小萝卜 8   4
    

    3.查询条件 WHERE

    WHERE关键字为查询条件,一般后面会添加其他的查询条件用AND来连接

    3.1单独WHERE使用

    现在我们在上面连表语句的基础上添加查询条件
    SELECT *FROM Designer_UserInfo LEFT JOIN Student_UserInfo ON Designer_UserInfo.ID=Student_UserInfo.ID WHERE Designer_UserInfo.TrueName='小糖豆'
    这条查询语句的意思就是:根据条件Designer_UserInfo.ID=Student_UserInfo.ID连接表并从中查找出Designer_UserInfo.TrueName为`小糖豆`的数据
    
    运行结果为:
    1   小糖豆 1   10
    
    不连表的情况下使用WHERE查询
    SELECT *FROM Designer_UserInfo WHERE Designer_UserInfo.TrueName='小糖豆'
    运行结果为:
    1   小糖豆
    
    

    3.2 WHERE 和 AND 一起使用

    从表中查出TrueName是小糖豆并且ID是1的数据
    SELECT *FROM Designer_UserInfo WHERE Designer_UserInfo.TrueName='小糖豆' AND Designer_UserInfo.ID=1
    结果为:
    1   小糖豆
    若把查询语句改为:
    SELECT *FROM Designer_UserInfo WHERE Designer_UserInfo.TrueName='小糖豆' AND Designer_UserInfo.ID=2
    因为数据库中没有满足条件的数据所以结果为:
    null   null
    

    3.3 AND作为连接条件和作为查询条件的区别

    先来看一下作为连接条件:
    SELECT *FROM Designer_UserInfo LEFT JOIN Student_UserInfo ON Designer_UserInfo.ID=Student_UserInfo.ID AND Student_UserInfo.Age=10
    结果为:
    1   小糖豆 1   10
    2   小土豆 null  null  
    3   大猴子 null  null  
    4   小萝卜 null  null  
    再来看一下作为查询条件:
    SELECT *FROM Designer_UserInfo LEFT JOIN Student_UserInfo ON Designer_UserInfo.ID=Student_UserInfo.ID WHERE 1=1 AND Student_UserInfo.Age=10
    运行结果为:
    1   小糖豆 1   10
    
    1. 多表联查
    最后来举一个多表联查的例子
    SELECT
        Designer_UserInfo.ID,
        Designer_UserInfo.TrueName,
        ftt_table.[Work],
        Student_UserInfo.Age
    FROM
        Designer_UserInfo
    INNER JOIN ftt_table ON Designer_UserInfo.ID = ftt_table.ID
    INNER JOIN Student_UserInfo ON ftt_table.ID = Student_UserInfo.ID
    运行结果为:
    1   小糖豆 学生          10
    2   小土豆 学生          11
    3   大猴子 老师          15
    

    相关文章

      网友评论

        本文标题:SQL-Server之--基本关键字

        本文链接:https://www.haomeiwen.com/subject/octfcxtx.html