美文网首页
SQL基础学习

SQL基础学习

作者: 兰梦_bhy | 来源:发表于2018-09-14 15:55 被阅读0次

    SQL基本规范

    • 多条SQL语句必须以分号(;)分割

        SELECT * FROM table1;
        SELECT * FROM table2;
      
    • SQL语句不区分大小写,但是开发人员对SQL关键词使用大些,表、列名使用小写;

      • 关键词:SELECT、FROM、WHERE、AND 等这些词语
    • SQL语句可以是多行,也可以是一行,建议使用多行,方便阅读

    • SQL注释

      • 单行注释:# 这是一个注释

      • 在某行后面增加注释: -- 这是一个注释

      • 多行注释:

            /*
              这是一个多行注释
            */
        

    SQL特殊语法

    排序 ORDER BY
    • 按列名称排序

        # 建议使用列名称排序
        SELECT column1, column2 FROM table
        ORDER BY column1,  column2
      
    • 按列序号排序

        SELECT column1, column2 FROM table
        ORDER BY 1,  2 
      
    • 如何按照字母大小写排序??

      • 数据库默认情况下不区分 a/A的顺序,故如果需要按照字母大小写排序需要使用 collate(校对集)
      • 具体排序方法可以参考博客园文章MySQL的order by时区分大小写
             SELECT * FROM table ORDER BY column1 COLLATE utf8_bin;
    
    过滤
    • 介于 a 和 b之间使用 BETWEEN,BETWEEN包含a和b的值

    • 判断是否为空

        SELECT column1, column2 FROM table
        WHERE column3 IS NULL
      
    like
    • 普通like语句:

      • ‘x%’: 以x开头

      • ‘%x’: 以x结尾

      • ‘x%y’:以x开头,y结尾

          SELECT column1, column2 FROM table
          WHERE column3 LIKE ‘x%’
        
    • 通配符

      • '[xy]%':以x或者y开头

      • '[^xy]%':不以x或者y开头

           SELECT column1, column2 FROM table
           WHERE column3 LIKE ‘[^xy]%’
        
    函数
    • 函数:RTRIM、LTRIM、TRIM、SOUNDEX(发音相似)
    • 聚合函数是否忽略null?
      • AVG、MIN、MAX、SUM 直接忽略
      • COUNT(column1) 忽略
      • COUNT(*) 不忽略
    联结

    具体 可参考csdn博客

    • INNER JOIN: 数据包含第一个(左边)表和二个(右边)表的集合,不能匹配的数据则丢失;
    • LEFT OUTER JOIN: 数据包含第一个(左边)表,如果第二个(右边)表没有对应记录,则为null;
    • RIHGHT OUTER JOIN: 数据包含第二个(右边)表,如果第一个(左边)表没有对应记录,则为null;
    • UNION: 两表数据合并,去掉重复数据
    • ALL UNION: 两表数据合并,保留重复数据
    求值顺序
    • WHERE语句可以包含AND和OR,其中AND的优先级高于OR,如果不合理使用,则会出现顺序错误情况

        SELECT column1, column2 FROM table
        WHERE column1 = ‘a’ or column1 = 'b' and column2 > 'c'
      
    • 以上执行顺序为

      • column1 = 'b' and column2 > 'c'
      • column1 = ‘a’
      • 优先执行and,再执行or

    注意

    • HAVING和WHERE的区别
      • WHERE可以使用表中本来就有的字段

      • HAVING只能使用从SELECT筛选过滤的字段

      • HAVING可以使用聚合函数计算过的字段

        # 引用博客园的博客例子:https://www.cnblogs.com/ljf-Sky/p/9024683.html
        SELECT goods_category_id, AVG(good_price) AS ag 
        FROM sw_goods 
        GROUP BY goods_category 
        HAVING ag > 1000
        
        SELECT goods_category_id, AVG(goods_price) AS ag 
        FROM sw_goods 
        WHERE ag > 1000  -- ag 为聚合函数计算字段,WHERE不可以使用
        GROUP BY goods_category(X)报错 
        

    相关文章

      网友评论

          本文标题:SQL基础学习

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