MS SQL 學習紀錄-1
為了以後不會忘記所學,而寫了這一篇學習紀錄
建議使用 SQL Server Developer 版本作為主要練習軟體
本系列主要教於操作對於,正規化資料庫等等在此系列不贅述
T-SQL 簡介
- Structured Query Language (SQL) 最早由 IBM 開發出來,現在已是業界標準,也變成 ANSI 和 ISO 的標準。此外,許多資料庫系統都支援 SQL 語言,並發展出自已的語言:
– 甲骨文:PL / SQL
–IBM DB2:SQL PL
–Sybase:T-SQL - SQL 是一種宣告式語言,不用明確的告訴電腦每一步該怎麼做,所以不用迴圈語句、條件分支語句就可以傳回所要的資料,它不要求用戶指定對資料的存放方法,也不需要用戶了解其具體的資料存放方式,例:
Return all the customers whose city is Portland. (傳回所有城市是波特蘭的客戶)
SELECT *
FROM Sales.Customers
WHERE city IN ('Portland');
-
Transact-SQL (交易式結構化查詢語言) 簡稱 T-SQL。T-SQL 是微軟根據 ANSI-SQL 實作出來的結構化查詢語言,並應用於自家的產品:SQL Server。
-
注意事項:
SQL 是一種宣告式語言,所以從資料表查詢資料時,不用再使用迴圈方式,不斷重覆讀取一筆記錄後跳到下一筆的動作,用戶也不用知道現在在哪一筆記錄的位置上。
SQL 會自動處理資料表並指向正確記錄的位置,一筆一筆將資料傳回給 Database Engine 處理。
T-SQL 分類
為了方便記憶,遂將 T-SQL 分成 3 大類:
- Data Manipulation Language (DML) 資料操作(縱)語言:SELECT、INSERT、UPDATE、DELETE,常用於對資料表或檢視表的操作,本課程會花多數時間說明 SELECT 的用法
- Data Definition Language (DDL) 資料定義語言:CREATE、ALTER、DROP,當用於定義物件結構:
定義執行個體層級的物件,例如:資料庫
定義資料庫層級的物件,例如:結構描述 - Data Control Language (DCL) 資料控制語言:GRANT、REVOKE、DENY,常用於可授與權限的物件之安全性控制,在 DBA 管理會介紹
資料庫練習檔案
本系列會以以下三個資料庫進行練習,不過基本上會是以TSQL2進行操作
- AdventureWorksDW
- AdventureWorks
- TSQL2
链接: link 下載連結,裡面還有包含VM&SQL sever的安裝PDF
注意事項:
- 使用實體主機和虛擬主機練習的學員,下列作業必須在「虛擬主機」上執行。(用虛擬主機操作較好,環境乾淨不易出錯)
載入AdventureWorksDW資料庫
-
解壓縮到指定資料夾 C:\Samples\AdventureWorksDW\,注意尾端還有一個反斜線符號。解壓縮的路徑直接將上述的路徑複製貼上就好
-
在 SSMS 開啟 C:\Samples\AdventureWorksDW\instawdbdw.sql
-
從「查詢」選擇「SQLCMD模式」
-
按【執行】按鈕
載入AdventureWorks資料庫
- 解壓縮到指定資料夾 C:\Samples\AdventureWorks\,注意尾端還有一個反斜線符號。
解壓縮的路徑直接將上述的路徑複製貼上就好 - 執行 SSMS,並開啟 C:\Samples\AdventureWorks\instawdb.sql
- 找到行號 1806 行位置的指令應如右所示 CODEPAGE=‘ACP’。
- 將 「ACP」 改為 「RAW」,改完結果應如右所示 CODEPAGE=‘RAW’。
- 記得儲存變更。
- 從「查詢」選擇「SQLCMD模式」
- 按【執行】按鈕
TSQL2資料庫的壓縮檔
- 使用 7-Zip 使用「解壓縮到此」。
- 執行 SSMS,並開啟『TSQL2 — Setup2.sql』。
- 按【執行】按鈕或功能鍵【F5】。
TSQL2 資料庫幾個主要的資料表:
- HR.Employees:員工資料表,儲存員工個資
- Sales.Customers:客戶資料表,儲存客戶個資
- Sales.Orders:訂單資料表,儲存已成立的訂單資訊
- Sales.OrderDetails:訂單明細資料表,儲存各訂單的明細資訊
- Production.Products:產品資料表,儲存各產品的資訊
- Production.Categories:產品類別 (產品目錄) 資料表,儲存產品類別的資訊
- Production.Suppliers:產品供應商資料表,儲存供應商的個資
建立資料庫圖表
方便日後查詢方便,將練習用的資料表建立關聯性
-
首次使用時,必須安裝圖表支援
-
加入那些有 Schema 名稱,但不包含數值 2 的資料表
-
最後的結果
-
儲存 (檔名自訂)
SQL 的「查詢」
T-SQL 的指令或陳述式可以在 SSMS 的「查詢視窗」中執行,輸入指令前,必須先點選【新增查詢】開啟一個新的「查詢視窗」
「查詢視窗」各部份說明
「查詢視窗」可儲存副檔名為 .sql 的 T-SQL 指令檔
注意事項:
按 【F5】 可以執行「查詢視窗」的所有 T-SQL 指令或陳述式
若要執行指定的 T-SQL 指令或陳述式,只要在「查詢視窗」中,利用滑鼠選取 (反白) ,再按 【F5】 即可
T-SQL 指令或陳述式也可以在命令列工具的 SQLCMD.exe 中執行
目前 T-SQL 指令或陳述式結尾處,並未全面強制要求加上分號 ( ; ) 的符號,但有些新的 T-SQL 指令或陳述式結尾處必須加上分號 ( ; ),建議加上分號 (;)養成習慣
查詢資料
使用 GUI 界面,在欲查詢的資料表,使用【選取前 1000 個資料列】來產生查詢指令
自動開啟一個新的「查詢視窗」
使用 T-SQL 陳述式查詢資料表
-- 開啟指定的資料庫
USE TSQL2;
GO
-- 查詢指定資料表的指定資料行 (欄位名稱)
SELECT CustID, ShipCountry
FROM Sales.Orders;
-- 查詢指定資料表的所有資料行 (欄位)
SELECT *
FROM Sales.Orders;
注意事項:
不建議在應用程式開發的程式碼中使用 SELECT * 傳回所有資料行的資料,因為執行效率差的問題,只有在上課教學或練習時才使用 SELECT *
SELECT 查詢邏輯順序
- T-SQL 指令檔的執行順序雖然是循序式的由上往下執行指令,但 SELECT 查詢卻有一定的邏輯順序
順序 | SELECT 子句 |
---|---|
5 | SELECT 選取資料行 (欄名) 清單 |
1 | FROM 資料來源表格 |