Microsoft PowerPoint - sql2005_ch09.ppt

Similar documents
项目 3 创建和管理表 任务实现 Office Visio PK 3 FK FK1 3.1 相关知识 SQL Server 一 制订表规划 1. 表要存储什么对象 2. 表中每一列的数据类型和长度 059

投影片 1

untitled

SQL Server SQL Server SQL Mail Windows NT

01 SQL Server SQL Server 2008 SQL Server 6-1 SSIS SQL Server ( master ) ( msdb ) SQL Server ( master ) master 6-1 DTS sysadmin 6-1 sysa

ebook45-5

目錄 C ontents Chapter MTA Chapter Chapter

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

untitled

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

RUN_PC連載_12_.doc

目錄

四川省普通高等学校

starter_pdfmerge

學 科 100% ( 為 單 複 選 題, 每 題 2.5 分, 共 100 分 ) 1. 請 參 閱 附 圖 作 答 : (A) 選 項 A (B) 選 項 B (C) 選 項 C (D) 選 項 D Ans:D 2. 下 列 對 於 資 料 庫 正 規 化 (Normalization) 的 敘

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00

一 個 SQL Injection 實 例 的 啟 示 頁 2 / 6 因 此, 在 知 名 網 站 上 看 到 SQL Injection, 讓 人 驚 心, 卻 不 意 外 網 站 專 案 外 包 是 目 前 業 界 的 常 態, 而 在 價 格 取 勝 的 制 度 下, 低 價 得 標 的 S

ebook46-23

SP_ SP_03 JAVA...6 SP_10 SQL...8 SP_ SP_ SP_ SP_ SP_ SP_ SP_ SP_04.NET...33 SP_02 C...37 SP_05

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp

untitled

untitled

untitled

FileMaker 16 ODBC 和 JDBC 指南

Microsoft Word - ACI chapter00-1ed.docx

一步一步教你搞网站同步镜像!|动易Cms

Microsoft Word - 01.DOC

习题1

开展纵横输入法分层教学 提高成人计算机应用能力

DB2 (join) SQL DB2 11 SQL DB2 SQL 9.1 DB2 DB2 ( ) SQL ( ) DB2 SQL DB2 DB2 SQL DB2 DB2 SQL DB2 ( DB2 ) DB2 DB2 DB2 SQL DB2 (1) SQL (2) S

Microsoft PowerPoint - Chapter3

FileMaker 15 ODBC 和 JDBC 指南

untitled

Java 程式設計入門

Excel VBA Excel Visual Basic for Application

1-1 database columnrow record field 不 DBMS Access Paradox SQL Server Linux MySQL Oracle IBM Informix IBM DB2 Sybase 1-2

123

<4D F736F F D20BBB7BEB3D0C5CFA2CFB5CDB3CAFDBEDDBFE2B7C3CECABDD3BFDAB9E6B7B6A3A8B1A8C5FAB8E5A3A E646F63>

untitled

目錄... ivv...vii Chapter DETECT

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

Microsoft PowerPoint - sql2005_ch10.ppt

季刊9web.indd

ACI pdf

untitled

ASP.NET 2.0網頁設計範例教本

Transact-SQL是一种定义、操作并控制数据的语言

天津天狮学院关于修订2014级本科培养方案的指导意见

通过Hive将数据写入到ElasticSearch

Oracle高级复制冲突解决机制的研究

软件测试(TA07)第一学期考试

数 据 库 系 统 基 础 2/54 第 6 章 数 据 库 管 理 与 维 护

概述

上海市教育考试院关于印发新修订的

3.1 num = 3 ch = 'C' 2

MySQL資料庫教學

回滚段探究

01 Transact-SQL() 是與 SQL Server 溝通的核心 凡存取 SQL Server 執行個體的所有應用程式, 不論其使用者介面為何 ( 例如, 我們一般透過.NET VB ASP 寫的應用程式 SQL Server 自己的管理介面 SQL Server Management S

<4D F736F F D20C9CFBAA3CAD0BCC6CBE3BBFAB5C8BCB6BFBCCAD4C8FDBCB6BFBCCAD4B4F3B8D95FBDA8D2E9B8E55F5F E646F63>

第5章修改稿

Microsoft Word - ACG chapter00c-3ed.docx

CC213

Microsoft Word - 附章.doc

Microsoft Word - 附章.doc

幻灯片 1

(Microsoft PowerPoint - \262\304\244\273\263\271)

R D B M S O R D B M S R D B M S / O R D B M S R D B M S O R D B M S 4 O R D B M S R D B M 3. ORACLE Server O R A C L E U N I X Windows NT w w

Java

運算子多載 Operator Overloading

Microsoft Word - 11.doc

未命名

C 1

威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 號 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

Microsoft PowerPoint - sql2005_ch08.ppt

幻灯片 1

If Close[Length]!= 0 Then B Close[Length] 是 Length 日前的 Close 不是 0 的話則執行 B % Number 以 Divisor 來求取除法並傳回剩下的部份和 Divisor 具備相同的符 號 格式 :Number % Divisor Numb

投稿類別:資訊類

教 学 目 标 描 述 主 要 数 据 库 对 象 创 建 表 描 述 列 定 义 时 可 用 的 数 据 类 型 改 变 表 的 定 义 删 除 改 名 和 截 断 表 描 述 每 个 DML 语 句 插 入 行 到 表 中 更 新 表 中 的 行 从 表 中 删 除 行 描 述 约 束 创 建

概述

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

untitled

FY.DOC

ebook45-4

Microsoft PowerPoint - STU_EC_Ch02.ppt

######## First set of commands x <- 0.5; y <- 0 if (x>3) y <- 1 else y <- 2 ######## Second set of commands x <- 0.5; y <- 0 if (x>3) y <- 1 else ###

Microsoft PowerPoint - 04-array_pointer.ppt

Microsoft PowerPoint - VB14.ppt

(HMI) IO A

封面-12

穨文件1

C/C++语言 - C/C++数据

PowerPoint Presentation

Microsoft PowerPoint - 06_迴圈2.pptx

PowerPoint Presentation

1

VB控件教程大全

计算机在汉语研究中的应用――以字频统计为例

計畫書封面範例

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF

新版 明解C++入門編

Transcription:

第九章 T-SQL 設計 9-1 關於 T-SQL 9-1-1 關於程式語言 9-1-2 T-SQL 的組成 9-1-3 測試及執行 9-2 基本語法說明 9-2-1 變數及常數 9-2-2 資料型別優先順序 9-2-3 運算子 9-2-4 取得工作狀態 9-2-5 設定工作狀態 9-2-6 流程控制 9-2-7 錯誤處理 9-3 實務說明 9-3-1 日期處理 9-3-2 小數資料處理 9-3-3 自動編號的處理 9-3-4 PIVOT TABLE 1/37

9.1 關於 T-SQL 9-1-1 關於程式語言 T-SQL 專指內附於 SQL Server 的程式語 言 所有 SQL Server 的處理動作都可藉由 T-SQL (Transact-SQL) 來完成 每一程式的基本語法概念都相同 除了基本語法外, 尚必須了解每一程式語法提供的資源, 包括函數 可用物件等 2/37

9-1-2 T-SQL 的組成 1. 基本語法 ( 參考 9-2) 2. 系統資源 - 以 sp_ 為名稱字首的系統預存程序 3. 資料定義語言 - DDL, 功能是定義及管理資料庫結構, 包括資料表, 索引, 檢視等 4. 資料操作語言 - DML, 功能是針對資料表中的記錄進行各式處理, SELECT, INSERT, UPDATE, DELETE DDL: Data Definition Language DML: Data Manipulation Language 3/37

9-1-3 測試及執行 T-SQL 語法都在查視視窗中測試及執行 按下按鈕, 執行程式, 結果會顯示在下半部的 訊息 視窗中 4/37

9-2 基本語法說明 9-2-1 變數及常數 何謂變數 變數就是在執行時可變動的資料, 數 不是數字, 而是資料, 變 之意就是在執行時可因需要而改變 型態可以是 SQL Server 提供的資料型態 名稱必須以 @ 為首表示區域變數, 另 @ @ 為首表示全域變數 ( 系統函數, 表 9-7) 以 DECLARE 予以宣告 5/37

使用變數 使用兩個變數 變數 變數值的來源不同, 分別以 SET 及 SELECT 取得 6/37

常數 常數指的是固定不變的資料 設定常數 : SET 文字二進位數字日期及時間 在前後各加上英文單引號 ( ), 若是 Unicode 文字, 請加上 N 表示法以 0x 為首, 其後的長度不定, 不必使用單引號 數字資料在表示時, 不需使用單引號 小數 :money, decimal, real, float 日期及時間資料必須加上單引號, 可以是各種合法的格式 SET @PID=N'F153342401' DECLARE @x binary SET @x=0x123 DECLARE @x int DECLARE @y money SET @x=12 SET @y=$10.5 DECLARE @x datetime,@y datetime,@z datetime SET @x='2005/11/23 12:00' SET @y='11/23/2005' SET @z='11 23, 2005' 7/37

8/37 9-2-2 資料型別優先順序資料型別優先順序資料型別優先順序資料型別優先順序 優先順序 : 當一個運算式有兩個不同型態的資料時, 優先順序相對較低者會嚐試轉換為另一個優先順序相對較高者 binary 24 Tinyint 12 varbinary 23 Smallint 11 char 22 int 10 varchar 21 bigint 9 nchar 20 smallmoney 8 nvarchar 19 money 7 uniqueidentifier 18 decimal 6 timestamp 17 real 5 image 16 float 4 text 15 smalldatetime 3 ntext 14 datetime 2 bit 13 sql_variant 1 型態型態型態型態優先順序優先順序優先順序優先順序型態型態型態型態優先順序優先順序優先順序優先順序

9-2-3 運算子 算術運算子 運算子 意義 + ( 加法 ) 加法 - ( 減法 ) 減法 * ( 乘 ) 乘法 / ( 除 ) 除法 % ( 餘數 ) 傳回除法的整數餘數 如 12 % 5 = 2 9/37

位元運算子 位元運算子的特色是只可使用在整數型態的資料 位元比較之意是以資料中各個位元的實際資料做比較,& 可比較是否相同, 可比較是否相異,^ 可比較互斥 運算子 & ( 位元 AND) ( 位元 OR) ^ ( 位元互斥 OR) 意義執行 AND 比較 執行 OR 比較 執行互斥比較 二者不相同為 TRUE. 10/37

比較運算式 比較的結果只有兩種, 不是 True 就是 False 運算子 = ( 等於 ) 等於 意義 > ( 大於 ) 大於 < ( 小於 ) 小於 >= ( 大於或等於 ) 大於或等於 <= ( 小於或等於 ) 小於或等於 <> ( 不等於 ) 不等於!= ( 不等於 ) 不等於!< ( 不小於 ) 不小於!> ( 不大於 ) 不大於 11/37

邏輯運算子 邏輯運算子與比較運算子類似, 都是傳回 True 或 False 的結果, 差別是邏輯運算子通常使用在 SELECT 語法的 WHERE 之後, 也就是做為篩選條件 12/37

ALL AND 運算子 意義 如果所有的比較集都為 TRUE 則為 TRUE 如果兩個布林運算式都為 TRUE 則為 TRUE ANY BETWEEN...AND... EXISTS IN LIKE NOT OR SOME 如果任何比較集為 TRUE 則為 TRUE 如果運算元在某範圍之間則為 TRUE 如果子查詢 (Subquery) 包含任何資料列則為 TRUE 如果運算元等於運算式清單中的任何一個則為 TRUE 如果運算元符合某個模式則為 TRUE 反轉任何其他布林運算子的值如果其中一個布林運算式為 TRUE 則為 TRUE 如果某些比較集為 TRUE 則為 TRUE 13/37

9-2-4 取得工作狀態 SQL Server 提供許多以 @@ 符號為首的系統環境變數, 可以取得工作狀態的資訊 14/37

設定工作狀態, 語法是使用 SET 大部份都是 ON 及 OFF 二選一, 非開即閉的選擇 9-2-5 設定工作狀態 15/37

9-2-6 流程控制 IF...ELSE 01 use ebook 02 Declare @a int, @b int 03 Select @a=sum(totals) from Orders 04 where Totals is not null 05 Select @b=sum(totals) from Orders 06 where Totals is not null and PayOK = 1 07 if @a >0 08 BEGIN 09 print @a-@b -- 列印相減結果 10 END 11 ELSE 12 BEGIN 13 print ' 無資料可計算 ' 14 END 16/37

流程控制 WHILE 01 DECLARE @Start smallint, @End smallint 02 SET @End=round(RAND()*10,0) -- 取得迴圈執行次數 03 SET @Start = 1 04 WHILE @Start < @End 05 BEGIN 06 SELECT @Start Number 07 SET @Start = @Start + 1 -- 累計加 1 08 END 17/37

流程控制 CONTINUE 及 BREAK 此二者均使用在迴圈內, 在迴圈內任意處使用 Break, 表示離開迴圈 01 DECLARE @Az smallint, @End smallint 02 SET @Az=1 03 SET @End = round(rand()*10,0) 04 WHILE @Az < @End 05 BEGIN 06 SET @Az = @Az + 1 07 IF @Az=3 08 BREAK 09 ELSE 10 CONTINUE 11 END 18/37

流程控制 RETURN 可使用在程式內任意處, 功能是中止執行 GOTO 01 USE ebook 02 GO 03 DECLARE @tablename sysname 04 SET @tablename = N'members' 05 t_loop: 06 IF (@@FETCH_STATUS <> -2) 07 BEGIN 08 SELECT @tablename = RTRIM(UPPER(@tablename)) 09 EXEC ('SELECT ' + @tablename + ' = COUNT(*) FROM ' + @tablename ) 10 END 11 IF (@@FETCH_STATUS <> -1) GOTO t_loop 19/37

9-2-7 錯誤處理 可使用兩種錯誤處理的設計, 一是傳統的 @@ERROR 01 Declare @InputID int 02 SET @InputID=1 03 INSERT INTO Producttype (id,productcategoryname, LevelID) VALUES (@InputID,' 散文 ',1) 04 IF @@ERROR <>0 05 BEGIN 06 print ' 發生錯誤 ' 07 END 20/37

新增 TRY CATCH 敘述 01 Declare @InputID int 02 SET @InputID=1 03 BEGIN TRY 04 INSERT INTO Producttype (id,productcategoryname,levelid) VALUES (@InputID,' 散文 ',1) 05 END TRY 06 BEGIN CATCH 07 print 'error' 08 END CATCH 21/37

9.3 實務說明 9-3-1 日期處理 格式設定 可以使用 SET DATEFORMAT 敘述 SET DATEFORMAT: 只有在將字元字串轉換成日期值時, 才會在字元字串的解譯中使用這項設定 它不會影響日期值的顯示 也可使用 CONVERT 函數 22/37

SET DATEFORMAT 三種顯示相同結果 23/37

CONVERT 函數 24/37

DATENAME 函數 DATENAME ( datepart, date ) datepart 參數 25/37

26/37

日期加減處理 加減處理 可使用 DateAdd 函數 使用三個引數, 分別代表單位 加減數字及基準日等 27/37

9-3-2 小數資料處理 藉由兩種方式執行四捨五入, 分別是型態的自動處理及 ROUND 函數 28/37

9-3-3 自動編號的處理 一個資料表只有一個型態為 int 及 IsIdentity 屬性為是的欄位, 也就是自動編號 輸入資料至自動編號 USE ebook SET IDENTITY_INSERT Category ON GO INSERT INTO Category (CateID, CateName, CateType) VALUES (38,' 日文 ',' 語言別 ') 29/37

自動編號的處理 取得剛產生的自動編號 - 取出 @@IDENTITY 30/37

9-3-4 PIVOT TABLE 製作類似 Access 的交叉資料表或 Excel 的樞紐分析表 31/37

View: eb_vw_productordername 32/37

Pivot: eb_vw_productordername 33/37

View: eb_vw_productmember 34/37

PIVOT: eb_vw_productmember 35/37

[ 補充篇 ]PIVOT 範例 :T-SQL USE AdventureWorks GO SELECT DaysToManufacture, AVG(StandardCost) AS AverageCost FROM Production.Product GROUP BY DaysToManufacture -- Pivot table with one row and five columns SELECT 'AverageCost' AS Cost_Sorted_By_Production_Days, [0], [1], [2], [3], [4] FROM (SELECT DaysToManufacture, StandardCost FROM Production.Product) AS SourceTable PIVOT ( AVG(StandardCost) FOR DaysToManufacture IN ([0], [1], [2], [3], [4]) ) AS PivotTable 36/37

[ 補充篇 ]PIVOT 範例 : 結果 37/37