SQL基础学习

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 SELECT 语句 一、查询SQL SELECT 语法 (1)SELECT 列名称 FROM 表名称 (2...
    有钱且幸福阅读 5,759评论 0 33
  • Spark SQL, DataFrames and Datasets Guide Overview SQL Dat...
    Joyyx阅读 8,354评论 0 16
  • 这两天事情太多了,一直没有锻炼。明天好好练。
    misang阅读 141评论 0 1
  • 在巨大的换乘站里观察来往,小小的陌生世界仿佛形成了。匆忙的、淡定的、略微忧愁的,每一款神情都有其模样。奔跑的...
    外太空的橘子阅读 280评论 0 0
  • 格格和苏苏突然杀到我家 最后她们两个在尬舞 一个有模有样 一个僵硬生疏 哈哈哈哈 还拒绝了我的上火的好吃的年货 那...
    爱元若哥哥阅读 80评论 0 1