SQL語句常用知識清單

2020-11-16 愛數據網

查詢語句

1.DESCRIBE 語句

描述」指定表或視圖中的所有列,可以幫助我們了解數據表中包含了哪些列

語法:

Describe table_name;

2.SELECT 語句

查詢滿足條件的記錄總數

語法:

# 計算數據總數

SELECT COUNT(*) FROM "表格名」;

# 計算變量(去除了缺失值)

SELECT COUNT(欄位名) FROM "表格名";

# 計算去重後的變量

SELECT COUNT(Distinct (欄位名) ) FROM "表格名";

3.MIN/MAX/SUM/AVG 函數

最小值min,最大值max,平均值avg以及求和sum

語法:

SELECT min("欄位名")

,max("欄位名")

,avg("欄位名")

,sum("欄位名")

,count("欄位名")

FROM "表格名";

過濾語句

1.WHERE語句

WHERE語句是SQL語句中的篩選語句。它的主要功能是對數據按照特定的條件去進行篩選,一般位置在FROM的後面。

語法:

SELECT 列名稱 FROM 表名稱 WHERE 列運算符值

2.操作符

操作符是精確匹配

除了等號之外,我們還可以使用以下符號來滿足我們不同的了解數據的需求。這類操作符的特點是:在操作符的右邊,都是只有一個固定值,不管是數字還是字符。

- 不等於:<>或者!= , NOT

- 大於:>,

- 小於:<,

- 大於等於: >=

- 小於等於: <=

3.IS

用 IS 和 IS NOT 這兩個來篩選值

4.IN / BETWEEN / LIKE

- IN/BETWEEN 是範圍匹配

- IN

- 只要滿足其中一個就屬於滿足了WHERE的條件

- 語法:

SELECT "欄位名"FROM "表格名"WHERE "欄位名" IN ('值一', '值二', ...);

- BETWEEN

- 任何在兩個取值範圍之間的記錄都被認為是滿足了WHERE條件

- 語法:

SELECT "欄位名"FROM "表格名"WHERE "欄位名" BETWEEN '值一' AND '值二';

- LIKE是模糊匹配,通常搭檔百分號符%

- 語法:

SELECT "欄位名"FROM "表格名"WHERE "欄位名" LIKE '值%';

5.AND/OR

AND操作符的邏輯是篩選出滿足所有條件的數據

OR操作符的邏輯是篩選出滿足任何一個條件的數據

6.AS

- 對變量進行命名以及重命名

- 語法:

SELECT "欄位名"AS"新欄位名"FROM "表格名"

連接語句

1.INNER JOIN...ON語句(最常用)

INNER JOIN語句兩邊是需要進行連結的兩張表,ON後面的部分則是告訴SQL是根據兩張表裡的哪個欄位去進行表與表之間的連接。

語法:

SELECT column_name(s)

FROM table1

INNER JOIN table2

ON table1.column_name=table2.column_name;

2.LEFT/RIGHT JOIN語句

LEFT JOIN:包含LEFT JOIN語句左邊表的全部記錄以及語句右邊表能匹配上的部分記錄

RIGHT JOIN:包含RIGHT JOIN語句右邊表的全部記錄以及語句左邊表能匹配上的部分記錄

3.FULL OUTER JOIN語句

inner join加上left join再加上right join三種join方式的結合

數據聚合

1.GROUP BY 語句

GROUP BY語句可以實現按照特定欄位包含的分類進行匯總計算的效果(比如求最小值,最大值,平均值求和等等)

2.ORDER BY 語句

在select from語句後面加上ORDER BY語句可以實現將顯示結果按照特定欄位進行排序的效果。默認為升序,最後加desc為降序 。

3.HAVING 語句

- 將HAVING語句添加在GROUP BY語句的最後,可以起到篩選出我們想要的結果的效果。

- HAVING語句中使用的篩選的變量一般是做過聚合運算處理之後計算出來的新變量。

- HAVING語句的前面一定要加一條GROUP BY的匯總語句。

4.CASE WHEN 語句

- CASE WHEN 語句主要是根據是否滿足語句中的判斷條件會落入不同的取值,對數據進行重新分類整理和命名。

- CASE WHEN語句在結尾部分必須有個END,來提示系統整個循環語句已經結束了。

窗口函數

窗口函數(Window Function)是 MySQL 8.0新增的一個重要的功能(注意:只有新版本才有!),可以為數據分析提供強大支持,總得來說,可以分為以下三種窗口函數:排名窗口函數、聚合窗口函數、取值窗口函數。

語法格式:

窗口函數over(

partition by 分區的欄位

order by 排序欄位 desc / asc)

要點:

① 會生成一個欄位

② 關鍵詞:

  • 排序函數

  • over:用來指定函數執行窗口範圍。如果後面的括號中什麼都不寫則是指窗口範圍是:滿足where條件的所有行

  • partition by:窗口按照哪些欄位進行分組,窗口函數在不同的分組上分別執行,例如按照某區域分組。

  • order by:按照哪些欄位進行排序

③ 排序函數over是必選的

④ over括號裡面的內容是可選的

下面具體來說一下,以下幾類窗口函數:

1.排名窗口函數

排名窗口函數用於對數據進行分組排名。

常見的排名窗口函數包括:

  • ROW_NUMBER,為分區中的每行數據分配一個序列號,序列號從 1 開始分配。

  • RANK,計算每行數據在其分區中的名次;如果存在名次相同的數據,後續的排名將會產生跳躍。

  • DENSE_RANK,計算每行數據在其分區中的名次;即使存在名次相同的數據,後續的排名也是連續的值。

  • PERCENT_RANK,以百分比的形式顯示每行數據在其分區中的名次;如果存在名次相同的數據,後續的排名將會產生跳躍。

  • CUME_DIST,計算每行數據在其分區內的累積分布,也就是該行數據及其之前的數據的比率;取值範圍大於 0 並且小於等於 1。

  • NTILE,將分區內的數據分為 N 等份,為每行數據計算其所在的位置。

2.取值窗口函數

取值窗口函數用於返回指定位置上的數據。

常見的取值窗口函數包括:

  • FIRST_VALUE,返回窗口內第一行的數據。

  • LAST_VALUE,返回窗口內最後一行的數據。

  • NTH_VALUE,返回窗口內第 N 行的數據。

  • LAG,返回分區中當前行之前的第 N 行的數據。

  • LEAD,返回分區中當前行之後第 N 行的數據。

3.聚合窗口函數

聚合函數over partition by 分區的欄位 order by 排序欄位 desc / asc)

聚合函數,如sum. avg, count, max, min等

注意:窗口函數可以用於SELECT 列表或者ORDER BY 子句中,但是不能出現在其他子句中。

本篇為數據分析初學者在學習sql語句時常用知識點,大家可參照以上內容順序學習鞏固SQL語句。不要把它放進收藏夾吃灰喔~

END

後續我們還會分享更多實用乾貨和實戰案例

敬請持續關注~

或留言你想要了解或學習的內容

我們擇期安排

本文為愛數據學院作者南湖漁歌提供

版權歸愛數據學院所有,轉載請聯繫後臺

球分享

球在看

相關焦點

  • 資料庫常用的sql語句匯總(2)
    資料庫相關sql語句表相關創建表 create table t1(id int,name varchar(10));查看所有表 show tables;查看單個表屬性 show create table t1
  • 常用SQL語句分享
    一、本期小編為大家分享一些常用的SQL語句,能夠較熟練的掌握一定的SQL語句,在做數據維護的時候往往可以達到事半功倍的效果。當然,語句在實際運用中需要舉一反三,使用各種條件組合來實現。小編水平有限,如有錯漏,請不吝賜教。
  • mysql資料庫常用的SQL語句匯總
    set charset gbk; 黑窗口中sql語句必須寫分號,代表一個語句的結束,客戶端不用寫分號。 客戶端中的注釋:--空格 # 2種方式 多行注釋 /*.....空格 */<6>創建資料庫 create database 資料庫名字;分號為結束符,不可缺。
  • 運維程式設計師:運用SQL Server Profiler監視查看自己寫的sql語句
    SQL Server Profiler的中文意思是SQL Server事件探查,一個Sql的監視工具,可以具體到每一行Sql語句,每一次操作,和每一次的連接。為什麼要使用SQL Server Profiler?
  • 日進一步第三天,SQL語句之order by
    ,持續日更,做產品助理的斜槓青年公眾號:輕鬆自由7799第一天的SELECT……FEOM……是最常用的查詢語句數據分析之小白的第一條sql語句第二天的group by則是方便快捷分組語句數據分析之小白的第二條sql語句
  • Mybatis基本知識四:動態SQL介紹
    上一篇文章:《Mybatis基本知識三:單表查詢屬性名與查詢欄位的映射》才疏學淺,若文中有紕漏,請多多指正!!!本節主要介紹動態SQL,其主要用於解決用戶提交的查詢條件不確定的情況。用戶提交的查詢條件不同,執行的SQL也就不同。
  • Oracle優化:sql語句的執行順序
    理解 sql 語句的執行順序對我們優化 sql 有很大的幫助,那麼 sql 語句的執行順序是怎樣的呢,以一條簡單的的語句做分析:① 先執行 from 子句,明確數據的來源,從哪個表或哪個視圖來查詢② 接著執行 where 子句,根據列出來的條件篩選數據
  • MS SQL Server——SQL語句導入導出大全
    &34;USA&39;)go/***************** 導出到DBF ***************/如果要導出數據到已經生成結構(即現存的)FOXPRO表中,可以直接用下面的SQL語句 如果要用你上面的語句插入的話,文本文件必須存在,而且有一行:姓名,銀行帳號1,銀行帳號2然後就可以用下面的語句進行插入
  • 最強解讀MyBatis是如何執行SQL語句的?
    MyBatis 如何獲取 sql 語句?MyBatis 如何執行 sql 語句?MyBatis 如何實現不同類型數據之間的轉換?在過去程式設計師使用JDBC連接資料庫,總會帶來諸多不便。MyBatis 如何獲取 sql 語句? 與獲取資料庫源類似,只要解析Mapper配置文件中的對應標籤,就可以獲得對應的sql語句。
  • 最常用的SQL語句大全來了,快收藏起來吧
    9、說明:創建視圖:create view viewname as select statement刪除視圖:drop view viewname10、說明:幾個簡單的基本的sql語句 12、說明:日程安排提前五分鐘提醒 SQL: select * from 日程安排 where datediff('minute',f開始時間,getdate())>5 13、說明:一條sql 語句搞定資料庫分頁
  • 3分鐘短文 | Laravel 獲取模型查詢生成的SQL語句
    如果在沒有debug,或者沒有 blade 模板渲染的頁面,如何獲取 ORM 組裝出來的SQL語句呢?學習時間比如有一個原始的查詢:DB::table(&39;)->get();它生成的SQL語句是SELECT * FROM users那麼在程序上下文中,應該如何獲取並列印這個SQL語句呢
  • 書寫高性能SQL語句技巧,網友都說好
    作為一名程式設計師,少不了要寫一些sql語句,但每個人寫出來的sql執行效率還是有差距的,功力深厚的人,寫的sql簡潔而且高效,初學者,往往只是實現功能,至於性能問題,可能無從下手。在這裡我將之前在sql優化方面的一些技巧和高效寫法,給大家總結了一下,不說能百分百解決sql性能問題,基本上能解決百分之八十以上的sql性能問題。
  • 使用explain和show profile來分析SQL語句實現優化SQL語句
    SQL語句優化是建立在慢查詢分析的基礎上,通過慢查詢定位有問題的SQL語句,關於慢查詢的介紹及其分析工具,可以參考[mysql慢查詢及慢查詢日誌分析工具]一、通過explain查詢1 用法:explain sql2 作用:用於分析sql語句(1)、id:執行explain的一個編號(沒有實際意義)(2)、
  • mysql基礎之sql語句分類及實際中的用途
    上節課中老韓說「select * from student」這是sql語句,sql語句是什麼呢?sql語句:結構化查詢語言(Structured Query Language)簡稱SQL,結構化查詢語言是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關係資料庫系統。說白了sql語句就是操作資料庫的語言,sql語句從作用上來分可以分為下面四類。
  • SQL語句大全
    9、說明:創建視圖:create view viewname as select statement 刪除視圖:drop view viewname10、說明:幾個簡單的基本的sql語句選擇:select *
  • SQL 語句中 where 條件後 寫上 1=1 是什麼意思
    例如:  String sql="select * from table_name where 1=1";  if( conditon 1) {  sql=sql+" and var2=value2";  }  if(conditon 2) {  sql=sql+" and var3=value3";
  • Python基礎知識:pymsql連接資料庫,增刪改查任我行
    調用connect發回的遊標connection.cursor(),執行查詢語句。接下來我們需要調用cursor.execute()來執行sql語句,connection.commit(),最後調用connection.close()方法關閉資料庫連接。翻閱pymysql的源碼,可以看到connection的實例化所需要的參數。
  • 揭秘:一條SQL語句的執行過程是怎麼樣的?
    原始碼裡的主要目錄及其作用如下,我們需要分析的代碼基本都在 sql 目錄下,它包含了編譯器和服務端的核心組件。注意,你在調試程序的時候,有兩個設置斷點的好地方:dispatch_command:在 sql/sql_parse.cc 文件裡。在接受客戶端請求的時候(比如一個 SQL 語句),會在這裡集中處理。
  • 資深DBA整理MySQL基礎知識四:大神們都忽略的SQL語句執行的順序
    前幾篇說了一些SQL語句的基礎知識,SQL語句也是一種程式語言,語言執行是有順序的。在學習SQL語言的時候一定要知道他執行的順序,這樣才能能好的理解SQL,學好SQL。下面進入正題,先放兩張圖。圖一圖二從上圖的順序中我們不難看出,所有的查詢語句都是從
  • 優化SQL查詢:如何寫出高性能SQL語句
    產生一個正確的「執行計劃」有兩點很重要: (1)    SQL語句是否清晰地告訴查詢優化器它想幹什麼? (2)    查詢優化器得到的資料庫統計信息是否是最新的、正確的? 2、 統一SQL語句的寫法 對於以下兩句SQL語句,認為是相同的,資料庫查詢優化器認為是不同的。