美文网首页
【演奏的船长】数据分析学习记录W15——SQL指令学习与心得

【演奏的船长】数据分析学习记录W15——SQL指令学习与心得

作者: 演奏的船长 | 来源:发表于2019-07-14 21:13 被阅读0次

    本周通过 SQLBolt网站 学习了经典数据库语言SQL,并将其基本指令进行了归类整理以便于与理解、记忆和调用。
    归类的出发点来自于之前对区块链的了解,曾有人讲区块链就是“去掉了【更改】和【删除】功能,只保留【创建】和【读取】功能的数据库。”从这个定义出发,一方面能简单的理解区块链的本质,另一方面也能明白一般的数据库必然包含【创建】【读取】【更改】【删除】四个功能。从这四个功能出发,再来理解SQL指令会非常高效。下面就从这个框架出发,对SQL指令进行归类梳理。


    Part I-【读取】

    基本指令&语句结构

    • SELECT

      • DISTINCT
      • 聚合表达式
        • COUNT(*)
          默认根据GROUP BY进行计数
        • COUNT(column) A common function used to counts the number of rows in the group if no column name is specified. Otherwise, count the number of rows in the group with non-NULL values in the specified column.
        • MIN(column) Finds the smallest numerical value in the specified column for all rows in the group.
        • MAX(column) Finds the largest numerical value in the specified column for all rows in the group.
        • AVG(column) Finds the average numerical value in the specified column for all rows in the group.
        • SUM(column)
      • AS
      • FROM
    • JOIN(INNER/LEFT/RIGHT/FULL)

      • ON
    • WHERE

      • 表达式
        • = Case sensitive exact string comparison (notice the single equals) col_name = "abc"

        • != or <> Case sensitive exact string inequality comparison col_name != "abcd"

        • LIKE Case insensitive exact string comparison col_name LIKE "ABC"

        • NOT LIKE Case insensitive exact string inequality comparison col_name NOT LIKE "ABCD"

        • % Used anywhere in a string to match a sequence of zero or more characters (only with LIKE or NOT LIKE) col_name LIKE "%AT%"(matches "AT", "ATTIC", "CAT" or even "BATS")


          模糊查询示例
        • _ Used anywhere in a string to match a single character (only with LIKE or NOT LIKE) col_name LIKE "AN_"(matches "AND", but not "AN")

        • IN (…) String exists in a list col_name IN ("A", "B", "C")

        • NOT IN (…) String does not exist in a list col_name NOT IN ("D", "E", "F")

      • IS (NOT) NULL
    • GROUP BY

      • HAVING
    • ORDER BY..DESC

    • LIMIT/OFFSET

    心得体悟

    无论看起来多么复杂,以上这些指令,解决的都是读取什么数据的问题,SELECT之外的其它指令都是对要读取数据的进一步描述。联系之前学习的Tableau,这个过程颇有点像《数据分析学习记录W12——详细级别表达式带来的启发》中描述的切蛋糕的过程,再一辨析,这二者本就是一体两面,Tableau就是将数据库的指令语言变成了拖拽的操作,并将查询的结果可视化了。
    理解了这一点,便能透过Tableau眼花缭乱的视觉效果,把握住其本质,同时也能借由设想期待得到的视觉效果,高效的实施SQL指令操作。


    Part II-【创建】【更改】【删除】

    基本指令&语句结构

    • 表列级别

      • CREATE TABLE IF NOT EXISTS
        • Data type
        • Constraint Description
      • ALTER TABLE
        • ADD
        • DROP
        • RENAME TO
      • DROP TABLE IF EXISTS
    • 行格级别

      • INSERT INTO
        • (column, another_column, …)
        • VALUES (value_or_expr, another_value_or_expr, …)
      • UPDATE
        • SET column = value_or_expr
        • WHERE condition
      • DELETE FROM
        • WHERE condition

    心得体悟

    在SQL语言中,作为数据库基本功能的【创建】【更改】【删除】(以下简称“建改删”)无论是指令数量还是复杂度都远远低于【读取】,故将其作为一个整体记忆,在了解了可实现建改删功能的指令后,可以明显的将其分为两类:

    • 对表格、列进行建改删的
    • 对行、单元格进行建改删的

    进而,只需区分操作所在的级别,即可高效的记忆和调用这些指令。


    结语

    综上所诉,SQL指令,可以概括为为:
    【读取】数据“切蛋糕”
    【建】【改】【删除】行/列表

    相关文章

      网友评论

          本文标题:【演奏的船长】数据分析学习记录W15——SQL指令学习与心得

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