1 Ch7. 資料的新增、修改以及刪除 結構化查詢語言 SQL 介紹 結構化查詢語言 SQL 介紹 使用 SSMSE 與 SQL 新增 / 刪除 / 修改資料 使用 SSMSE 與 SQL 新增 / 刪除 / 修改資料 Ch8. 基本資料查詢 使用 SQL 作基本資料查詢 使用 SQL 作基本資料查詢 結合 (JOIN) 兩張以上資料表 結合 (JOIN) 兩張以上資料表 Ch9. 系統函數與進階資料查詢 常用數學、時間、字串以及集總函數 常用數學、時間、字串以及集總函數 使用視覺化工具查詢資料 使用視覺化工具查詢資料 Ch10. 資料索引的重要性與建立技巧 索引的類型 索引的類型 如何建立索引並監控索引的效能 如何建立索引並監控索引的效能 第三篇資料定義與操作
2 資料的新增、修改 以及刪除 第七章
3 Chapter 7 Outline 7-1 結構化查詢語言介紹 7-2 使用 SSMSE 執行 T-SQL 7-3 使用 SSMSE 新增資料錄 7-4 使用 T-SQL 新增資料錄 7-5 使用 SSMSE 修改資料錄內容 7-6 使用 T-SQL 修改資料錄內容 7-7 使用 SSMSE 刪除資料錄 7-8 使用 T-SQL 刪除資料錄 7-9 本章總結
4 7-1 結構化查詢語言介紹 結構化查詢語言 Structured Query Language /SQL ) 是關聯式資料模式的標準資料庫語言,亦稱為關聯 式資料庫語言 (Relational Database Language) 。 特點 : 易懂、易學、平易近人。 特點 : 易懂、易學、平易近人。 1986 年 ANSI 為不同的 SQL 訂標準語法 1987 年 ISO 將其納為國際標準 有 SQL-89 、 SQL-92(SQL2) 等標準 所有發展 RDBMS 的廠商都聲稱他們的 SQL 相容於 SQL-92 ,但是為了提高產品的競爭力,也都會推 出他們特別的 SQL 語法以加強使用的功能與便利性。
5 7-1 結構化查詢語言介紹 ( 續 ) SQL 的功能 (Functions of SQL) 資料定義 (Data Definition) 資料定義 (Data Definition) 資料操作 (Data Manipulation) 資料操作 (Data Manipulation) 資料控制 (Data Control) 資料控制 (Data Control) SQL = DDL + DML + DCL SQL 與 SQL Server 2005 的關係 在 SQL Server 2005 中的 SQL 稱之為 Transact- SQL( 簡稱 T-SQL) 。當然, T-SQL 也包含了資 料定義、資料操作、以及資料控制等功能。 在 SQL Server 2005 中的 SQL 稱之為 Transact- SQL( 簡稱 T-SQL) 。當然, T-SQL 也包含了資 料定義、資料操作、以及資料控制等功能。
6 7-1 結構化查詢語言介紹 ( 續 ) Transact-SQL 語法慣例 斜體字: T-SQL 語法提供使用者可輸入之參數。 斜體字: T-SQL 語法提供使用者可輸入之參數。 | ( 分隔號 ) :加上括號或大括號來分隔語法項目, 您只可以選擇其中一的個項目來使用。 | ( 分隔號 ) :加上括號或大括號來分隔語法項目, 您只可以選擇其中一的個項目來使用。 [ ] ( 方括號 ) :選擇性的語法項目,但真正使用 時不需輸入方括號。例如: [a|b] 就是您可以使 用 a 或 b 其中一項 ( 也可以不選 ) 。 [ ] ( 方括號 ) :選擇性的語法項目,但真正使用 時不需輸入方括號。例如: [a|b] 就是您可以使 用 a 或 b 其中一項 ( 也可以不選 ) 。 { } ( 大括號 ) :必要的語法項目,但真正使用時 不需輸入大括號。例如: {a|b} 就是您必須挑選 a 或 b 其中一項 ( 不能不選 ) 。 { } ( 大括號 ) :必要的語法項目,但真正使用時 不需輸入大括號。例如: {a|b} 就是您必須挑選 a 或 b 其中一項 ( 不能不選 ) 。
7 7-2 使用 SSMSE 執行 T-SQL 1. 按 [ 新增查詢 ] 按鈕 2. 選擇資料庫 3. 撰寫 SQL 敘述 4. 按 [ 執行 ] 按鈕或 鍵執行 SQL 敘述 如果點選該資料庫 滑鼠右鍵彈出式選 單的 [ 新增查詢 ] 選項 就不用步驟 2 選取資 料庫了喔!
8 7-2 使用 SSMSE 執行 T-SQL 在 SSMSE 中除了可以自行撰寫 SQL 敘述之 外,也可以從檔案讀取,就建立 TeadeDB 一樣 讀取指令檔時系統會要求輸入一組正確的 登入帳號與密碼。由於目前還未建立其他 的帳號,所以使用 sa 或是 Administrator 登入, 但其預設的資料庫為 master ,因此必須注 意選擇正確的資料庫,或依 16-2 更改登入 的預設資料庫。
9 7-2 使用 SSMSE 執行 T-SQL 在 SSMSE 中點選主畫面的 [ 工具 ] [ 選項 ] 就可 以進入設定環境、文字編輯器 … 等功能畫面。
使用 SSMSE 新增資料錄 使用 SSMSE 來新增資料非常簡單,就像在 表格內填資料一樣,但是有一點要注意的 就是具有 FK 的資料表如果無法參照到對應 的值就會無法插入。 現在就以加入一筆訂單為例,客戶編號為 1013 的保華工業欲購買一台點陣式印表機 與一台網路雷射印表機 首先請在 SSMSE 中開啟 orders 資料表 首先請在 SSMSE 中開啟 orders 資料表
使用 SSMSE 新增資料錄 移動資料輸入 的指標 直接輸入資料 即可
使用 SQL 新增資料錄 為何需要使用 T-SQL 來輸入資料? 可供應用程式使用 可供應用程式使用 可以使用批次或整批方式輸入資料 ( 例如建立 TradeDB 資料庫、資料表以及內含的資料就是 使用 SQL 敘述的方式 ) 可以使用批次或整批方式輸入資料 ( 例如建立 TradeDB 資料庫、資料表以及內含的資料就是 使用 SQL 敘述的方式 ) 使用 INSERT 新增資料的簡易語法如下: INSERT [INTO] table_name[ ( column_list ) ] { VALUES ( { DEFAULT | NULL | expression } [,...n ] ) | execute_statement }
使用 SQL 新增資料錄 table_name :欲新增資料的資料表名稱 DEFAULT :該欄位使用預設值 NULL :該欄位使用 NULL 值 Expression :指定該欄位的值,可以是常數、 運算式或是變數等 execute_statement :另一段可執行的 SQL 敘述
使用 SQL 新增資料錄 範例 :請在產品資料表 products 中新增 一筆資料,編號為 120 、供應商代碼為 HHT 、 品名為 ‘ 新產品一 ’ 、價格為 280 insert into products values(120,'HHT',' 新產品一 ',280) insert into products values(120,'HHT',' 新產品一 ',280) 範例 :請新增一筆資料到 orders 資料表 中,訂單日期為 ‘2007/03/13’ 、客戶編號為 1010 。 insert into orders values('2007/03/13',1010,NULL) insert into orders values('2007/03/13',1010,NULL)
使用 SQL 新增資料錄 使用識別的欄位不用輸入資料,如果想要 寫入特定資料時就必須 使用 SET IDENTITY_INSERT table_name ON; 使用 SET IDENTITY_INSERT table_name ON; 在寫 SQL 敘述時必須將資料表的欄位都寫出來 在寫 SQL 敘述時必須將資料表的欄位都寫出來 範例 :請新增一筆資料到 orders 資料表中, order_num=200 、訂單日期為 ‘ 2007/03/13 ’ 、 客戶編號為 1010 。 範例 :請新增一筆資料到 orders 資料表中, order_num=200 、訂單日期為 ‘ 2007/03/13 ’ 、 客戶編號為 1010 。 SET IDENTITY_INSERT orders ON; -- 開啟 orders 之 IDENTITY_INSERT insert into orders(order_num,cust_num,order_date) values(200,1010,'2007/03/13'); SET IDENTITY_INSERT orders OFF;-- 使用後關閉,繼續讓系統自動產生
使用 SQL 新增資料錄 範例 :請將 TradeDB 中的 orders 資料全部抄 寫到 mydb 的 orders 資料中。 SET IDENTITY_INSERT [mydb].[dbo].[orders] ON SET IDENTITY_INSERT [mydb].[dbo].[orders] ON insert into [mydb].[dbo].[orders](order_num,order_date,customerid) select order_num,order_date,cust_num from orders SET IDENTITY_INSERT [mydb].[dbo].[orders] ON; 本範例就是執行一段 SQL 敘述作資料大量輸入的 典型例子
使用 SSMSE 修改資料錄的內 容 與新增資料使用方法類似,找到想要修改 的資料後進行修改即可。 1. 先找到欲修改的 資料錄 2. 將輸入焦點移到欲修改的欄 位,可按 鍵放棄修改。 輸入焦點一旦離開該欄位就表 示修改完成。
使用 T-SQL 修改資料錄的內容 使用 SQL 敘述修改資料內容是使用 UPDATE ,使用 UPDATE 也有一次可以更 動很多筆資料的好處,其語法結構如下 : UPDATE table_name SET column_name = { expression | DEFAULT | NULL } [,...n ] [FROM ] [ WHERE ] UPDATE table_name SET column_name = { expression | DEFAULT | NULL } [,...n ] [FROM ] [ WHERE ] table_source :資料表來源table_source :資料表來源 search_condition :限制的條件,依照該限制條件來 作更新search_condition :限制的條件,依照該限制條件來 作更新
使用 T-SQL 修改資料錄的內容 範例 :請將客戶 1018 的公司名稱改為「新 公司一」、電話號碼改為 ’ ’ 。 update customers set cust_name = ' 新公司一 ', phone = ' ' where cust_num = 1018 update customers set cust_name = ' 新公司一 ', phone = ' ' where cust_num = 1018 範例 :修改內容除了固定的指定值之外, 也可以是運算式,例如:將每一項產品的單價修 訂為原單價的 105% update products set unit_price = unit_price * 1.05 update products set unit_price = unit_price * 1.05
使用 T-SQL 修改資料錄的內容 範例 :由於在訂單編號 118 之後變更了產品 價格,請使用 UPDATE 方式更新 items 內產品的價 格。 update items set unit_price =products.unit_price update items set unit_price =products.unit_price -- 將 products 中的價格指定給 items -- 將 products 中的價格指定給 items from products -- 從 products 資料表讀取資料 where items.prod_num = products.prod_num and items.supp_code=products.supp_code and order_num> 這是 products 中的 PK ,這樣才能唯一確認產品
使用 SSMSE 刪除資料錄 在 SSMSE 中找到資料錄後刪除即可 1. 找到資料後 點選滑鼠右鍵 2. 選擇 [ 刪除 ] 選 項
使用 T-SQL 刪除資料錄 SQL 刪除資料錄是使用 DELETE ,也是可以 一次刪除很多筆符合條件的資料錄,其語 法如下: DELETE [ FROM ] table_name [FROM [,...n ] ] [ WHERE ] DELETE [ FROM ] table_name [FROM [,...n ] ] [ WHERE ] 與 UPDATE 語法類似,也能以其他資料表為基 礎來刪除資料。該語法可解讀為「由 table_name 資料表中刪除所有符合 condition 條 件的資料錄 與 UPDATE 語法類似,也能以其他資料表為基 礎來刪除資料。該語法可解讀為「由 table_name 資料表中刪除所有符合 condition 條 件的資料錄
使用 T-SQL 刪除資料錄 範例 :請刪除 [mydb].[dbo].[orders] 中 訂單編號為 200 的資料錄 delete from [mydb].[dbo].[orders] where order_num = 200 delete from [mydb].[dbo].[orders] where order_num = 200 範例 :請刪除 [mydb].[dbo].[orders] 資 料表中所有的資料錄 delete from [mydb].[dbo].[items]; delete from [mydb].[dbo].[orders]; Why? 為何刪除 orders 要先刪除 items ?
本章總結 結構化查詢語言( Structured Query Language/SQL ) 是關聯式資料模式的標準資料庫語言,亦可稱為關 聯式資料庫語言( Relational Database Language ) SQL 基本上都會提供資料定義( Data Definition )、 資料操作( Data Manipulation )以及資料控制 ( Data Control )的功能。 在 SSMSE 中可以輕鬆的新增、刪除以及修改資料 錄,缺點就是尋找正確的資料較為困難,但是可以 搭配使用 SQL 敘述來縮小資料的範圍。 使用 INSERT 、 DELETE 、 UPDATE 敘述可以在一 資料表中作資料的新增、刪除以及修改。