第 10 章 更多的查詢技巧.

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

Select 指令 基本結構 WHERE Like語法 Order by與group by Having 與 AS
目 录 第 1 章 数据库技术基础 第 2 章 SQL Server基础 第 3 章 数据库管理 第 4 章 查询和视图
第2讲 Transact-SQL语言.
第一讲 数据查询优化.
第 10 章 更多的查詢技巧.
第四章 數列與級數 4-1 等差數列與級數 4-2 等比數列與級數 4-3 無窮等比級數 下一頁 總目錄.
Views ,Stored Procedures, User-defined Function, Triggers
第7章 建立資料表與完整性限制條件 7-1 資料型別 7-2 資料表的建立 7-3 建立完整性限制條件 7-4 修改與刪除資料表
SQL Structured Query Language 用以操縱資料庫的指令集 資料操作語言DML:操作資料錄
Excel資料庫分析 台灣微軟資深講師 王作桓.
9 SELECT敘述的進階查詢 9-1 SQL的多資料表查詢 9-2 合併查詢 9-3 集合運算查詢 9-4 子查詢
第3章 變數與運算子 3-1 電腦記憶體的基礎 3-2 變數的命名與宣告 3-3 VB.NET的資料型別
LINQ 建國科技大學 資管系 饒瑞佶.
Visual C++ introduction
簡易C++除錯技巧 長庚大學機械系
9/28號專題報告 Web網頁遊戲 曾建瑋.
連結資料庫 ACCESS MSSQL.
第4章 SQL语言基础及数据库定义 4.1 基本概念 4.2 SQL Server 提供的主要数据类型 4.3 数据定义.
2-3 基本數位邏輯處理※.
第八章 利用SELECT查詢資料.
保留字與識別字.
Java程式概觀.
C語言簡介 日期 : 2018/12/2.
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
使用選取查詢增加威力 - Select Query.
PHP與MySQL 入門學習指南 凱文瑞克 著 第 27 章 資料庫查詢作業.
SQL語法.
資料庫管理(Access 2003) 第五章 利用查詢來 統計與分析資料 許欽嘉 老師.
App Inventor2呼叫PHP存取MySQL
第十二章 SQL語言簡介 講授大綱: 新增資料庫 新增資料表 新增資料 修改資料 刪除資料 查詢資料 透視ASP.NET-第12章
資料庫程式設計 VB資料庫設計簡介 週次:6 建國科技大學 資管系 饒瑞佶.
Java 程式設計 講師:FrankLin.
第一單元 建立java 程式.
MySQL开发规范 DB组-张浩.
第三章 資料型態與輸出控制 本章學習目標 認識Matlab的基本資料型態 練習資料型態的轉換 學習如何控制Matlab的輸出格式
数据库技术.
JAVA 程式設計 資訊管理系 - 網路組.
輸入&輸出 函數 P20~P21.
第14章 SQL数据查询与操纵 内容提要 本章知识点
SQL查询语句 蔡海洋.
CH05. 選擇敘述.
挑戰C++程式語言 ──第8章 進一步談字元與字串
第 8 章 資料的新增、修改 與刪除.
GridView.
GridView操作 (II).
LINQ資料查詢技術.
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
第4章 表的创建与维护 4.1 数据类型 4.2 数据完整性约束 4.3 创建数据表 4.4 修改数据表 4.5 删除数据表.
第11章 SQL基本查詢指令 11-1 SELECT查詢指令 11-2 WHERE子句的比較運算子 11-3 WHERE子句的邏輯運算子
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
MiRanda Java Interface v1.0的使用方法
陣列與結構.
SQL語法教學 2015/10/15 John.
第 4 章 認識 SQL 語言與資料型別.
1-1 二元一次式運算.
資料表示方法 資料儲存單位.
資料庫系統_答案 Database System Week3
Cloud Training Material- 事件 Sherman Wang
連結資料庫 MYSQL.
計算機程式設計 老師:謝孟諺 助教:楊斯竣.
第四組 停車場搜尋系統 第四組 溫允中 陳欣暉 蕭積遠 李雅俐.
單元三:敘述統計 內容: * 統計量的計算 * 直方圖的繪製.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
Joining Multiple Tables
Introduction to the C Programming Language
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

第 10 章 更多的查詢技巧

本章重點 10-1 用UNION 合併多個查詢結果 10-2 子查詢 Subquery 10-3 使用 SQL Server Management Studio 設計 SQL 查詢 10-4 T-SQL 的常數 10-5 隱含式型別轉換 10-6 T-SQL 的運算子 10-7 運算子的優先順序 10-8 處理欄位中的 NULL 值

本章重點 10-12 彙總函數搭配 OVER 子句的應用 10-9 使用 APPLY 運算子在查詢時 同時呼叫函數進行運算 10-10 邏輯函數:I I F ( )、CHOOSE() 10-11 排序函數:ROW_NUMBER()、 RANK() 與 DENSE_RANK() 10-12 彙總函數搭配 OVER 子句的應用 10-13 使用 PIVOT 與 UNPIVOT 將 直式資料表轉為橫式

10-1 用 UNION 合併多個查詢結果

用 UNION 合併多個查詢結果 UNION 的條件與結果 UNION 的語法 應用範例

UNION 的條件與結果 欲合併的查詢結果, 其欄位數必須相同 欲合併的查詢結果, 其對應的欄位 合併結果的欄位名稱會以第一個查詢結果的欄位名稱為名, 其他查詢結果的欄位名稱則會被忽略掉。 合併時, 若對應的欄位具備不同的資料型別, 則SQL Server 會進行相容性的型別轉換, 轉換的原則是以"可容納較多資料的型別為主"。

UNION 的語法

UNION 的語法 select_statement ALL 小括弧( ) GROUP BY 和 HAVING 子句只能用在個別的select_statement 中, 不可用於整個UNION 敘述的 最後。 ORDER BY 及 COMPUTE 子句則只能用在整個敘 述的最後, 針對最後的合併結果做排序或計算, 不能 用在個別的 select_statement 中。 只有第一個 select_statement 可以設定 INTO 子句。 ALL 小括弧( )

應用範例

應用範例

應用範例 不刪除資料表合併後重複的資料

應用範例

應用範例 加入臨時的資料

10-2 子查詢 Subquery 子查詢的語法與範例 子查詢的類型與處理方式 獨立子查詢與關聯子查詢

子查詢的語法與範例 整個子查詢敘述需用小括弧 ( ) 括住。 子查詢中不能使用 INTO 子句。 若子查詢中有用到 "SELECT TOP n...", 才可設定ORDER BY 子句來排序。

子查詢的類型與處理方式 方法 1 :直接取值-直接使用子查詢的傳回值, 例如用 =、>、< 做比較, 或進行加減乘除等運算。 方法 2: 比對清單-使用 IN、ALL、或 ANY (SOME) 運算子判斷某個值是否存在於傳回清單中, 其比對結果為 True 或 False。 方法 3 :測試存在-使用 EXISTS 運算子判斷是否有傳回資料, 其測試結果亦為 True 或 False。

子查詢的類型與處理方式

子查詢的類型與處理方式 直接取值的子查詢

子查詢的類型與處理方式 比對清單的子查詢 IN

子查詢的類型與處理方式 ALL

子查詢的類型與處理方式 ANY、SOME

子查詢的類型與處理方式 測試存在的子查詢

相同功能的不同查詢方式

獨立子查詢與關聯子查詢 獨立子查詢 是指可以脫離主查詢,單獨執行的子查詢。

獨立子查詢與關聯子查詢 關聯子查詢 是指無法單獨存在的子查詢。

10-3 使用 SQL Server Management Studio 設計 SQL 查詢 查詢設計工具 設計查詢的技巧─ 各窗格的操作 設定群組欄位 整個查詢敘述的屬性設定

查詢設計工具

查詢設計工具

查詢設計工具

設計查詢的技巧─ 各窗格的操作 圖表窗格 載入/移除資料來源

設計查詢的技巧─ 各窗格的操作 在列示窗中雙按您要加入的資料來源, 或選取資料來源再按加入鈕, 即可將資料來源載入圖表窗格中。

設計查詢的技巧─ 各窗格的操作

設定資料表別名

設計查詢的技巧─ 各窗格的操作 JOIN 資料表

設計查詢的技巧─ 各窗格的操作

設計查詢的技巧─ 各窗格的操作

設計查詢的技巧─ 各窗格的操作

設計查詢的技巧─ 各窗格的操作

設計查詢的技巧─ 各窗格的操作

設計查詢的技巧─ 各窗格的操作 設定顯示欄位及排序欄位

設計查詢的技巧─ 各窗格的操作 準則窗格

設計查詢的技巧─ 各窗格的操作

設計查詢的技巧─ 各窗格的操作

設計查詢的技巧─ 各窗格的操作 SQL 窗格

設計查詢的技巧─ 各窗格的操作 結果窗格 結果窗格顧名思義就是顯示查詢結果的地方。在設計好查詢敘述後, 按下執行 鈕, 查詢結果就會出現在此窗格中。

設定群組欄位

設定群組欄位

設定群組欄位

整個查詢敘述的屬性設定

在一般的查詢窗格中使用查詢設計工具

在一般的查詢窗格中使用查詢設計工具

在一般的查詢窗格中使用查詢設計工具

10-4 T-SQL 的常數 字串常數 (Character string constants) 必須以單引號括起來,若字串內容本身即含有單引號時, 可用連續兩個單引號來表示。

T-SQL 的常數 Unicode 字串常數 (Unicode string) 和字串常數表示法相同,但必須在字串最前面加上一個大寫的 N。

T-SQL 的常數 二元碼常數 (Binary constants) 必須以 0x 開頭的 16 進位數值來表示,前後不必加引號。

T-SQL 的常數 位元常數 (bit constants) 只有 0 與 1 兩種值。 日期時間常數(datetime constants) 必須用單引號括起來的日期或時間字串。

更改年月日的順序

更改年月日的順序

更改年月日的順序

更改年月日的順序

統一的日期表示法

統一的日期表示法

統一的日期表示法

T-SQL 的常數 整數常數 (Integer constants) 精確位數常數 (Decimal constants) 是指 numeric 或 decimal 型別的資料,以含有小數點的數值表示。 浮點常數 (Float and Real constants) 是指 float 或 real 型別的資料,以科學記號表示。 貨幣常數 (Money constants) 是指 money 或 smallmoney 型別的資料,以 $ 開頭的數值表示。 標記常數 (Uniqueidentifier constants) 是 uniqueidentifier 型別的資料,可以用字串或二元碼常數表示。

10-5 隱含式型別轉換 型別轉換的兩種類型 轉換型別的優先順序 型別轉換的限制

型別轉換的兩種類型 資料型別的轉換分成兩種類型, 像剛才 smallint 和int 的資料進行運算, SQL Server會自動將 smallint 資料轉換成 int 型別, 這樣的 “自動型別轉換” 就稱為隱含式型別轉換 (Implicit conversion);而需由我們主動以 CAST 或 CONVERT 函數來轉換型別時, 則稱為強迫式型別轉換 (Explicit conversion) 或稱明確轉換。

轉換型別的優先順序

型別轉換的限制 當然, 並不是每種型別都可以相互轉換的, 例如nchar 型別是無法轉換成 image 的;而有些型別只能用強迫式型別轉換而不允許隱含式型別轉換, 例如 nchar 轉換成 binary。

10-6 T-SQL 的運算子 指定運算子 算數運算子 比較運算子 邏輯運算子 位元運算子 字串連結運算子 單一運算元運算子 複合運算子

指定運算子 將數值或字串等資料指定給欄位或變數。

算數運算子 括 + (加)、- (減)、* (乘)、/ (除) 與 % (整數相除的餘數)。

算數運算子

比較運算子 比較數字的大小,或是字串的差異。

比較運算子

邏輯運算子 AND、OR:是做為兩個陳述式的邏輯判斷之用。

邏輯運算子 BETWEEN:表示在兩者之間, 因此只要是在給定條件之間的資料都符合要求。

邏輯運算子 IN:用來判斷給定的值是否在指定的項目列表或是子查詢中。

邏輯運算子 LIKE:用指定的字串來找尋記錄。

邏輯運算子 NOT:可將邏輯運算元的值反向。

位元運算子 &:運算子前後的兩個運算元都為 1 的時候,結果為 1。只要有一個不是 1,則結果為 0。 |:運算子前後的兩個運算元只要有一個是 1,則結果就是 1,只有當兩個都是0 的時候才會是 0。 ^:為互斥運算子,當兩個運算元的值不一樣的時候才會是 1,否則為 0。

字串連結運算子

單一運算元運算子

複合運算子

10-7 運算子的優先順序

10-8 處理欄位中的 NULL 值 NULL 值的運算 ISNULL( ) 函數 檢查是否為 NULL 值

NULL 值的運算

ISNULL( ) 函數

檢查是否為 NULL 值

檢查是否為 NULL 值

10-9 使用 APPLY 運算子在查詢時 同時呼叫函數進行運算

使用 APPLY 運算子在查詢時 同時呼叫函數進行運算

使用 APPLY 運算子在查詢時 同時呼叫函數進行運算

使用 APPLY 運算子在查詢時 同時呼叫函數進行運算

10-10 邏輯函數:I I F ( )、CHOOSE()

邏輯函數:I I F ( )、CHOOSE()

邏輯函數:I I F ( )、CHOOSE()

邏輯函數:I I F ( )、CHOOSE()

10-11 排序函數:ROW_NUMBER()、 RANK() 與 DENSE_RANK() 針對資料表的欄位進行排序 指定查詢範圍 分組排名

針對資料表的欄位進行排序

針對資料表的欄位進行排序

針對資料表的欄位進行排序

指定查詢範圍

分組排名

10-12 彙總函數搭配 OVER 子句的應用 使用 OVER 子句做分組彙總 使用 OVER 子句計算移動平均值、累計總和

使用 OVER 子句做分組彙總

使用 OVER 子句做分組彙總

使用 OVER 子句做分組彙總

使用 OVER 子句做分組彙總

使用 OVER 子句計算移動平均值、 累計總和

使用 OVER 子句計算移動平均值、 累計總和

使用 OVER 子句計算移動平均值、 累計總和

使用 OVER 子句計算移動平均值、 累計總和

使用 OVER 子句計算移動平均值、 累計總和

10-13 使用 PIVOT 與 UNPIVOT 將直式資料表轉為橫式

使用 PIVOT 與 UNPIVOT 將直式資料表轉為橫式

使用 PIVOT 與 UNPIVOT 將直式資料表轉為橫式

使用 PIVOT 與 UNPIVOT 將直式資料表轉為橫式

PIVOT 的語法與使用方法

PIVOT 的語法與使用方法

PIVOT 的語法與使用方法

PIVOT 的語法與使用方法

UNPIVOT 的語法與使用方法

UNPIVOT 的語法與使用方法

UNPIVOT 的語法與使用方法