SQL Server 快速上手 (4) - 基礎語法

本篇以 SQL Server 2019 Express Edition 及 SQL Server Management Studio 18.9 為教學範例。

SQL語言概要和分類


  • DDL(Data Definition Language) DDL 又稱為資料定義語言,用於定義數據庫結構或模式,能建立或刪除資料庫和資料表等用來儲存的單位。

    常見的指令有  ` **CREATE、DROP、ALTER、TRUNCATE** `
    
  • DML(Data Manipulation Language) DML 能查詢或修改資料表的紀錄。

    常見的指令有 ` **INSERT、SELECT、UPDATE、DELETE** `
    
  • DCL(Data Control Language) DCL 為可用來取消操作和設定操作權限的指令。

    常見的指令有 ` **GRANT、REVOKE** `
    
  • TCL(Transaction Control Language) DCL 為可用來取消操作和設定操作權限的指令。

    常見的指令有 ` **COMMIT、ROLLBACK** `
    

基本SQL語法說明 (新增,查詢,修改,刪除)


資料庫管理系統(database management system)又稱DBMS,是一種針對物件資料庫,為管理資料庫而設計的大型電腦軟體管理系統。Microsoft SQL Server是其中具代表性的DBMS。 不管你將來選擇用的是哪一種資料庫(如My SQL , Oracle…等),基礎的新增(Insert)、查詢(Select)、修改(Update)、刪除(Delete)SQL語法在關聯式資料庫中是共通的,也有人會用CRUD (Create,Read,Update,Delete)來稱呼這些資料庫操作。 網路上只要搜尋 [ SQL語法 + 教學 ] 可以搜尋到無數的文章,因此本篇僅簡略說明最基礎的用法。

首先開啟SSMS 並連結資料庫 (可參考前篇文章) 對資料庫按下右鍵 > 新增查詢

點擊後會開啟空白語法輸入視窗,就可以開始寫SQL語法囉!

下面語法範例將使用上一篇的資料庫做為參考

Insert 新增資料

INSERT INTO <資料表名> (<欄位名>,<欄位名>...) Values (<資料>,<資料>...)

範例 :

    INSERT INTO [dbo].[遠距門診$]
           ([看診日期]
           ,[掛號科別]
           ,[時段]
           ,[醫師]
           ,[病人]
           ,[身分證]
           ,[手機])
     VALUES
           ('2021/10/03'
           ,N'耳鼻喉科'
           ,N'上午'
           ,N'林大名'
           ,N'劉小凡'
           ,N'Y223456789'
           ,N'0944777333')

執行成功後會看到下方有成功訊息:

Select 查詢資料

SELECT <欄位名> FROM <資料表名> WHERE <條件>

來查詢看看我們是否有新增成功

SELECT [看診日期]
      ,[掛號科別]
      ,[時段]
      ,[醫師]
      ,[病人]
      ,[身分證]
      ,[手機]
  FROM [TeleClinic].[dbo].[遠距門診$]

可以看到剛剛新增的劉小凡資料已經出現在結果上,代表新增成功

SELECT若沒有下任何查詢條件會顯示出全部,若我們只想查詢劉小凡的預約 就需要針對欄位的值作條件查詢

範例:

SELECT [看診日期]
      ,[掛號科別]
      ,[時段]
      ,[醫師]
      ,[病人]
      ,[身分證]
      ,[手機]
  FROM [TeleClinic].[dbo].[遠距門診$]
  WHERE [病人] = N'劉小凡'

*眼尖的讀者可能發現為何在輸入的中文字前面都有加一個N, 這是跟資料庫編碼有關,本篇文章為基礎教學不深入說明,有興趣者可參考 [此文章]

SELECT 陳述式的邏輯處理順序 (官方)

下列步驟顯示 SELECT 陳述式的邏輯處理順序或繫結順序。 此順序會決定在某個步驟中定義的物件提供給後續步驟之子句使用的時間。 例如,如果查詢處理器可繫結至 (存取) FROM 子句中定義的資料表或檢視表,這些物件及其資料行就會提供給所有後續步驟使用。 反之,因為 SELECT 子句是步驟 8,所以前面的子句無法參考該子句中定義的任何資料行別名或衍生資料行。 不過,ORDER BY 子句等後續子句都可以參考它們。 陳述式的實際執行方式由查詢處理器決定,其順序可能與此清單不同。

  1. FROM
  2. 開啟
  3. JOIN
  4. WHERE
  5. GROUP BY
  6. WITH CUBE 或 WITH ROLLUP
  7. HAVING
  8. SELECT
  9. DISTINCT
  10. 排序依據
  11. 頂端

Update 修改

UPDATE <資料表名> set <欄位名> = <修改資料>
WHERE <條件>

若要更新欄位資料,則使用Update語法,需切記要確認WHERE條件的答案是否是你想要修改的資料內容,因為Update語法會把查詢到的資料都會更新,實務上很常會有工程師下錯或忘記下WHERE條件導致很多災難發生!

範例:

UPDATE [dbo].[遠距門診$]
   SET 
       [掛號科別] = N'耳鼻喉科'
      ,[時段] = N'下午'
      ,[醫師] = N'陳大仁'
      ,[病人] = N'劉小凡2'
      ,[身分證] = 'Y223456789'
      ,[手機] = '0911666555'
 WHERE [病人] = N'劉小凡'
GO

執行結果顯示 1 個資料列受到影響 代表更新了一筆

若你心裡想的是要更新1筆,結果卻顯示超過1筆 或是0筆,代表你的WHERE條件可能不正確

Delete 刪除資料

DELETE FROM <資料表名>
      WHERE <條件>

範例:

DELETE FROM [dbo].[遠距門診$]
      WHERE [病人] = N'劉小凡2'

DELETE 與 UPDATE 操作都需要非常謹慎看待, 最好先用SELECT 確認你的WHERE條件是否正確 再執行修改或刪除

此篇為最基礎的CRUD語法教學 後續會循序漸進介紹資料型態 > 主索引鍵與索引

參考資料

https://www.1keydata.com/tw/sql/sql.html https://blog.techbridge.cc/2020/02/09/sql-basic-tutorial/ https://www.geeksforgeeks.org/sql-ddl-dml-tcl-dcl/ https://docs.microsoft.com/zh-tw/sql/t-sql/queries/select-transact-sql?view=sql-server-ver15


留言板
歷史留言

標籤