1 ch7. 資料的新增、修改以及刪除 結構化查詢語言 sql 介紹 結構化查詢語言...

Post on 21-Dec-2015

255 Views

Category:

Documents

6 Downloads

Preview:

Click to see full reader

TRANSCRIPT

11

Ch7.Ch7. 資料的新增、修改以及刪除 資料的新增、修改以及刪除 結構化查詢語言結構化查詢語言 SQLSQL 介紹介紹 使用使用 SSMSESSMSE 與與 SQLSQL 新增新增 // 刪除刪除 // 修改資料修改資料Ch8.Ch8. 基本資料查詢基本資料查詢 使用使用 SQLSQL 作基本資料查詢作基本資料查詢 結合結合 (JOIN)(JOIN) 兩張以上資料表兩張以上資料表Ch9.Ch9. 系統函數與進階資料查詢系統函數與進階資料查詢 常用數學、時間、字串以及集總函數常用數學、時間、字串以及集總函數 使用視覺化工具查詢資料使用視覺化工具查詢資料Ch10.Ch10. 資料索引的重要性與建立技巧資料索引的重要性與建立技巧 索引的類型索引的類型 如何建立索引並監控索引的效能如何建立索引並監控索引的效能

第三篇 資料定義與操作

22

資料的新增、修改資料的新增、修改以及刪除以及刪除

第七章第七章

33

Chapter 7 OutlineChapter 7 Outline7-1 7-1 結構化查詢語言介紹結構化查詢語言介紹7-2 7-2 使用使用 SSMSESSMSE 執行執行 T-SQLT-SQL7-3 7-3 使用使用 SSMSESSMSE 新增資料錄新增資料錄7-4 7-4 使用使用 T-SQLT-SQL 新增資料錄新增資料錄7-5 7-5 使用使用 SSMSESSMSE 修改資料錄內容修改資料錄內容7-6 7-6 使用使用 T-SQLT-SQL 修改資料錄內容修改資料錄內容7-7 7-7 使用使用 SSMSESSMSE 刪除資料錄刪除資料錄7-8 7-8 使用使用 T-SQLT-SQL 刪除資料錄刪除資料錄7-9 7-9 本章總結本章總結

44

7-1 7-1 結構化查詢語言介紹結構化查詢語言介紹結構化查詢語言結構化查詢語言 Structured Query Language /SQLStructured Query Language /SQL ))是關聯式資料模式的標準資料庫語言,亦稱為關聯是關聯式資料模式的標準資料庫語言,亦稱為關聯式資料庫語言式資料庫語言 (Relational Database Language) (Relational Database Language) 。。 特點特點 :: 易懂、易學、平易近人。易懂、易學、平易近人。19861986 年年 ANSIANSI 為不同的為不同的 SQLSQL 訂標準語法訂標準語法19871987 年年 ISOISO 將其納為國際標準將其納為國際標準有有 SQL-89SQL-89 、、 SQL-92(SQL2)SQL-92(SQL2) 等標準等標準所有發展所有發展 RDBMSRDBMS 的廠商都聲稱他們的的廠商都聲稱他們的 SQLSQL 相容於相容於 SSQL-92QL-92 ,但是為了提高產品的競爭力,也都會推出,但是為了提高產品的競爭力,也都會推出他們特別的他們特別的 SQLSQL 語法以加強使用的功能與便利性。語法以加強使用的功能與便利性。

55

7-1 7-1 結構化查詢語言介紹結構化查詢語言介紹 (( 續續 ))

SQL SQL 的功能的功能 (Functions of SQL)(Functions of SQL) 資料定義資料定義 (Data Definition)(Data Definition) 資料操作資料操作 (Data Manipulation)(Data Manipulation) 資料控制資料控制 (Data Control)(Data Control)

SQL = DDL + DML + DCLSQL = DDL + DML + DCL

SQLSQL 與與 SQL Server 2005SQL Server 2005 的關係的關係 在在 SQL Server 2005SQL Server 2005 中的中的 SQLSQL 稱之為稱之為 TransacTransact-SQL(t-SQL( 簡稱簡稱 T-SQL)T-SQL) 。當然,。當然, T-SQLT-SQL 也包含了也包含了資料定義、資料操作、以及資料控制等功能。資料定義、資料操作、以及資料控制等功能。

66

7-1 7-1 結構化查詢語言介紹結構化查詢語言介紹(( 續續 ))

Transact-SQLTransact-SQL 語法慣例語法慣例 斜體字斜體字 :: T-SQLT-SQL 語法提供使用者可輸入之語法提供使用者可輸入之參數。參數。

| (| ( 分隔號分隔號 )) :加上括號或大括號來分隔語法項:加上括號或大括號來分隔語法項目,您只可以選擇其中一的個項目來使用。目,您只可以選擇其中一的個項目來使用。

[ ] ([ ] ( 方括號方括號 )) :選擇性的語法項目,但真正使:選擇性的語法項目,但真正使用時不需輸入方括號。例如:用時不需輸入方括號。例如: [a|b][a|b] 就是您可以就是您可以使用使用 aa 或或 bb 其中一項其中一項 (( 也可以不選也可以不選 )) 。。

{ } ({ } ( 大括號大括號 )) :必要的語法項目,但真正使用:必要的語法項目,但真正使用時不需輸入大括號。例如:時不需輸入大括號。例如: {a|b}{a|b} 就是您必須挑就是您必須挑選選 aa 或或 bb 其中一項其中一項 (( 不能不選不能不選 )) 。。

77

7-2 7-2 使用使用 SSMSESSMSE 執行執行 T-SQLT-SQL1. 按 [ 新增查詢] 按鈕

2. 選擇資料庫

3. 撰寫 SQL 敘述

4. 按 [ 執行 ] 按鈕或 <F5> 鍵執行 SQL 敘述

如果點選該資料庫滑鼠右鍵彈出式選單的 [ 新增查詢 ] 選項就不用步驟 2 選取資料庫了喔!

88

7-2 7-2 使用使用 SSMSESSMSE 執行執行 T-SQLT-SQL在在 SSMSESSMSE 中除了可以自行撰寫中除了可以自行撰寫 SQLSQL 敘述敘述之外,也可以從檔案讀取,就建立之外,也可以從檔案讀取,就建立 TeadeDTeadeDBB 一樣一樣讀取指令檔時系統會要求輸入一組正確的讀取指令檔時系統會要求輸入一組正確的登入帳號與密碼。由於目前還未建立其他登入帳號與密碼。由於目前還未建立其他的帳號,所以使用的帳號,所以使用 sasa 或是或是 AdministratorAdministrator 登登入,但其預設的資料庫為入,但其預設的資料庫為 mastermaster ,因此必,因此必須注意選擇正確的資料庫,或依須注意選擇正確的資料庫,或依 16-216-2更改更改登入的預設資料庫。登入的預設資料庫。

99

7-2 7-2 使用使用 SSMSESSMSE 執行執行 T-SQLT-SQL在在 SSMSESSMSE 中點選主畫面的中點選主畫面的 [[ 工具工具 ]][[ 選項選項 ]] 就就可以進入設定環境、文字編輯器…等功能畫面。可以進入設定環境、文字編輯器…等功能畫面。

1010

7-37-3 使用使用 SSMSESSMSE 新增資料錄 新增資料錄 使用使用 SSMSESSMSE 來新增資料非常簡單,就像在來新增資料非常簡單,就像在表格內填資料一樣,但是有一點要注意的表格內填資料一樣,但是有一點要注意的就是具有就是具有 FKFK 的資料表如果無法參照到對應的資料表如果無法參照到對應的值就會無法插入。 的值就會無法插入。 現在就以加入一筆訂單為例,客戶編號為現在就以加入一筆訂單為例,客戶編號為 11013013 的保華工業欲購買一台點陣式印表機與的保華工業欲購買一台點陣式印表機與一台網路雷射印表機一台網路雷射印表機 首先請在首先請在 SSMSESSMSE 中開啟中開啟 ordersorders 資料表資料表

1111

7-37-3 使用使用 SSMSESSMSE 新增資料錄新增資料錄

移動資料輸入的指標

直接輸入資料即可

1212

7-4 7-4 使用使用 SQLSQL 新增資料錄新增資料錄 為何需要使用為何需要使用 T-SQLT-SQL 來輸入資料?來輸入資料? 可供應用程式使用可供應用程式使用 可以使用批次或整批方式輸入資料可以使用批次或整批方式輸入資料 (( 例如建立例如建立TradeDBTradeDB 資料庫、資料表以及內含的資料就是資料庫、資料表以及內含的資料就是使用使用 SQLSQL 敘述的方式敘述的方式 ))

使用使用 INSERTINSERT 新增資料的簡易語法如下:新增資料的簡易語法如下:INSERTINSERT [INTO] [INTO] table_nametable_name[ ( column_l[ ( column_list ) ] { ist ) ] { VALUESVALUES ( { DEFAULT | NULL | ( { DEFAULT | NULL | expression } [ ,...n ] ) | execute_stexpression } [ ,...n ] ) | execute_statement } atement }

1313

7-4 7-4 使用使用 SQLSQL 新增資料錄新增資料錄table_nametable_name :欲新增資料的資料表名稱:欲新增資料的資料表名稱DEFAULTDEFAULT :該欄位使用預設值:該欄位使用預設值NULLNULL :該欄位使用:該欄位使用 NULLNULL 值值ExpressionExpression :指定該欄位的值,可以是常:指定該欄位的值,可以是常數、運算式或是變數等數、運算式或是變數等execute_statementexecute_statement :另一段可執行的:另一段可執行的 SQLSQL敘述 敘述

1414

7-4 7-4 使用使用 SQLSQL 新增資料錄新增資料錄範例 範例 7-3.17-3.1 :請在產品資料表:請在產品資料表 productsproducts 中中新增一筆資料,編號為新增一筆資料,編號為 120120 、供應商代碼為、供應商代碼為HHTHHT 、品名為‘新產品一’、價格為 、品名為‘新產品一’、價格為 280 280 insert into products insert into products values(120,'HHT','values(120,'HHT',' 新產品一新產品一 ',280)',280)

範例 範例 7-3.27-3.2 ::請新增一筆資料到請新增一筆資料到 ordersorders 資資料表中,訂單日期為‘料表中,訂單日期為‘ 2007/03/13’2007/03/13’ 、客戶、客戶編號為編號為 10101010 。 。 insert into orders values('2007/03/13',101insert into orders values('2007/03/13',1010,NULL)0,NULL)

1515

7-4 7-4 使用使用 SQLSQL 新增資料錄新增資料錄使用識別的欄位不用輸入資料,如果想要使用識別的欄位不用輸入資料,如果想要寫入特定資料時就必須寫入特定資料時就必須 使用 使用 SET IDENTITY_INSERT table_name ON;SET IDENTITY_INSERT table_name ON; 在寫在寫 SQLSQL 敘述時必須將資料表的欄位都寫出來敘述時必須將資料表的欄位都寫出來 範例 範例 7-3.37-3.3 :請新增一筆資料到:請新增一筆資料到 ordersorders 資料資料表中,表中, order_num=200order_num=200 、訂單日期為‘、訂單日期為‘ 2007/02007/03/13’3/13’、客戶編號為、客戶編號為 10101010 。 。

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;--使用後關閉,繼續讓系統自動產生

1616

7-4 7-4 使用使用 SQLSQL 新增資料錄新增資料錄範例 範例 7-3.57-3.5 :請將:請將 TradeDBTradeDB 中的中的 ordersorders 資料全資料全部抄寫到部抄寫到 mydbmydb 的的 ordersorders 資料中。資料中。 SET IDENTITY_INSERT [mydb].[dbo].[orders] ONSET IDENTITY_INSERT [mydb].[dbo].[orders] ON

insert intoinsert into [mydb].[dbo].[orders] [mydb].[dbo].[orders](order_num,order_date,customerid)(order_num,order_date,customerid)

select order_num,order_date,cust_num from ordersselect order_num,order_date,cust_num from orders

SET IDENTITY_INSERT [mydb].[dbo].[orders] ON;SET IDENTITY_INSERT [mydb].[dbo].[orders] ON;

本範例就是執行一段本範例就是執行一段 SQLSQL 敘述作資料大量輸入的敘述作資料大量輸入的典型例子典型例子

1717

7-5 7-5 使用使用 SSMSESSMSE 修改資料錄的內修改資料錄的內容容

與新增資料使用方法類似,找到想要修改與新增資料使用方法類似,找到想要修改的資料後進行修改即可。的資料後進行修改即可。

1.先找到欲修改的資料錄

2. 將輸入焦點移到欲修改的欄位,可按 <Esc> 鍵放棄修改。輸入焦點一旦離開該欄位就表示修改完成。

1818

7-67-6 使用使用 T-SQLT-SQL 修改資料錄的內修改資料錄的內容容

使用使用 SQLSQL 敘述修改資料內容是使用敘述修改資料內容是使用 UPDATEUPDATE ,,使用使用 UPDATEUPDATE 也有一次可以更動很多筆資料也有一次可以更動很多筆資料的好處,其語法結構如下 :的好處,其語法結構如下 : UPDATE UPDATE table_nametable_name SET SET column_name = { column_name = {

expression | DEFAULT | NULL } [ ,...n ] expression | DEFAULT | NULL } [ ,...n ] [FRO[FROM <table_source> ] [ WHERE <search_conditionM <table_source> ] [ WHERE <search_condition> ]> ]

• table_sourcetable_source ::資料表來源資料表來源

• search_conditionsearch_condition ::限制的條件,依照該限制條件來限制的條件,依照該限制條件來作更新 作更新

1919

7-67-6 使用使用 T-SQLT-SQL 修改資料錄的內修改資料錄的內容容

範例範例 7-5.17-5.1 :請將客戶:請將客戶 10181018 的公司名稱改為的公司名稱改為「新公司一」、電話號碼改為’「新公司一」、電話號碼改為’ 02-33333333’02-33333333’ 。。 update customers set cust_name = 'update customers set cust_name = ' 新公司一新公司一 ', ',

phone = '0233333333'phone = '0233333333' where cust_num = 1018where cust_num = 1018

範例範例 7-5.27-5.2 :修改內容除了固定的指定值之外,:修改內容除了固定的指定值之外,也可以是運算式,例如:將每一項產品的單價修也可以是運算式,例如:將每一項產品的單價修訂為原單價的訂為原單價的 105%105% update products set unit_price = unit_price * 1.05update products set unit_price = unit_price * 1.05

2020

7-67-6 使用使用 T-SQLT-SQL 修改資料錄的內修改資料錄的內容容

範例範例 7-5.37-5.3 :由於在訂單編號:由於在訂單編號 118118 之後變更了產之後變更了產品價格,請使用品價格,請使用 UPDATEUPDATE 方式更新方式更新 itemsitems 內產品的內產品的價格。價格。 update items set update items set unit_price =products.unit_priceunit_price =products.unit_price

---- 將將 productsproducts 中的價格指定給中的價格指定給 itemsitems

from productsfrom products -- -- 從從 productsproducts 資料表讀取資料資料表讀取資料where itemswhere items.prod_num.prod_num = products = products.prod_num.prod_num and and

items.supp_codeitems.supp_code=products=products.supp_code.supp_code and and

order_num>118order_num>118

----這是這是 productsproducts 中的中的 PKPK ,,這樣才能唯一確認產品這樣才能唯一確認產品

2121

7-7 7-7 使用使用 SSMSESSMSE 刪除資料錄 刪除資料錄 在在 SSMSESSMSE 中找到資料錄後刪除即可中找到資料錄後刪除即可

1.找到資料後點選滑鼠右鍵

2. 選擇 [刪除]選項

2222

7-8 7-8 使用使用 T-SQLT-SQL 刪除資料錄刪除資料錄 SQLSQL 刪除資料錄是使用刪除資料錄是使用 DELETEDELETE ,也是可以,也是可以一次刪除很多筆符合條件的資料錄,其語一次刪除很多筆符合條件的資料錄,其語法如下:法如下: DELETEDELETE [ FROM ] table_name [FROM <table [ FROM ] table_name [FROM <table

_source> [ ,...n ] ] _source> [ ,...n ] ] [ [ WHEREWHERE <search_condition <search_condition> ]> ]

與與 UPDATEUPDATE 語法類似,也能以其他資料表為基礎語法類似,也能以其他資料表為基礎來刪除資料。該語法可解讀為「由來刪除資料。該語法可解讀為「由 table_nametable_name資料表中刪除所有符合資料表中刪除所有符合 conditioncondition條件的資料條件的資料錄錄

2323

7-8 7-8 使用使用 T-SQLT-SQL 刪除資料錄刪除資料錄範例範例 7-7.17-7.1 :請刪除:請刪除 [mydb].[dbo].[order[mydb].[dbo].[orders]s] 中訂單編號為中訂單編號為 200200 的資料錄的資料錄 delete fromdelete from [mydb].[dbo].[orders] [mydb].[dbo].[orders] wherewhere order_nu order_nu

m = 200m = 200

範例範例 7-7.27-7.2 :請刪除:請刪除 [mydb].[dbo].[order[mydb].[dbo].[orders]s] 資料表中所有的資料錄 資料表中所有的資料錄 delete from [mydb].[dbo].[items]; delete from [mydb].[dbo].[orders];

Why?Why? 為何刪除為何刪除 ordersorders 要先刪除要先刪除 itemsitems ??

2424

7-9 7-9 本章總結本章總結 結構化查詢語言(結構化查詢語言( Structured Query Language/SQStructured Query Language/SQLL)是關聯式資料模式的標準資料庫語言,亦可稱)是關聯式資料模式的標準資料庫語言,亦可稱為關聯式資料庫語言(為關聯式資料庫語言( Relational Database LanguagRelational Database Languagee) ) SQLSQL 基本上都會提供基本上都會提供資料定義資料定義(( Data DefinitionData Definition )、)、資料操作資料操作(( Data ManipulationData Manipulation )以及)以及資料控制資料控制(( DData Controlata Control )的功能。 )的功能。 在在 SSMSESSMSE 中可以輕鬆的新增、刪除以及修改資料錄,中可以輕鬆的新增、刪除以及修改資料錄,缺點就是尋找正確的資料較為困難,但是可以搭配缺點就是尋找正確的資料較為困難,但是可以搭配使用使用 SQLSQL 敘述來縮小資料的範圍。 敘述來縮小資料的範圍。 使用使用 INSERTINSERT 、、 DELETEDELETE 、、 UPDATEUPDATE 敘述可以在一資敘述可以在一資料表中作資料的新增、刪除以及修改。 料表中作資料的新增、刪除以及修改。

top related