雖然很多時候我們會有程式軟體的支援,幫我們自動產生SQL指令,但是如果不會寫SQL指令,那麼要自己寫程式處理資料時問題就大了!我們之後的範例基本上都需要在程式內自己建立SQL語句。另一方面,SQL內容雖然龐大,但是以使用機率來說,下面將介紹的四個指令會用就已經算學會95%了!其他的SQL指令除了資料庫管理者之外,基本上都極少或根本不會用到。當然這四個指令也有許多變形,遇到使用時機時再一一介紹吧!
        本單元內容是利用一個簡單的資料表,讓同學直接輸入SQL指令字串操作資料,然後讓 GridView 物件顯示資料內容,相信直接的體驗會讓你非常有 "fu" 的輕鬆學會最重要的SQL核心語法。

SQL指令的四大天王 :
         SQL操作資料的語法很多,多到可以寫成一本書,但是最常用的就是選擇新增刪除編輯資料的四個指令:Select, Insert, Delete, Update,我們先從Select介紹最簡單的基本語法結構範例:
選擇 Select * From [資料表] 所有欄位
Select [項目1] From [資料表] Where [項目X]='資料x'  
Select [項目1], [項目2] From [資料表] Where [項目X]='資料x'  
Select [項目1], [項目2] From [資料表] Where [項目X] like '%資料x%'  
Select [項目1], [項目2] From [資料表] Where [項目X]='資料x' and [項目Y]='資料y'  
Select Distinct [項目1], [項目2] From [資料表] Where [項目X]='資料x' 只取不重複的資料
Select Top 10  [項目1], [項目2] From [資料表] Where [項目X]='資料x' 只取前10筆
Select * From [資料表] Order by [項目1] (Desc) 排序(遞減)

使用Select篩選資料 範例資料庫
        首先請用VWD建立一個ASP.NET空網站,將上面的Access範例資料庫檔案加入。建議最好存個備份,因為稍後會修改甚至刪除資料,必要時可以將使用中改亂的資料庫檔案覆蓋掉就可以復原繼續玩了。接著加入一個Web Form (aspx)網頁,在網頁上加入一個 GridView 不要做任何資料連結但是可以選擇一個美化樣式,下方加入一個TextBox與Button,設計完畫面概略如下圖:


接著雙擊『確定』鍵寫程式如下:

上述程式首先是使用程式建立一個 AccessDataSource 物件,前面的單元我們都是用軟體精靈引導建立這個物件,事實上它的內容很簡單,只是指定資料檔以及 Select 指令而已,用程式寫也只需要一行!接著就是讓 GridView使用這個新的AccessDataSource為資料來源,最後執行資料連結(DataBind)就會看到結果了!
以前面單元的資料庫內容為例的話,執行程式後寫入指令『select * from 通訊錄』結果如下:

當然範例資料庫的內容豐富很多,事實上是一個實驗版校內點名系統的舊資料庫,資料表就有三個:
M:學生選課資料表
系所編號:各系基本資訊
教師表:教師基本資訊

根據範例資料庫的練習題:
1.顯示整張系所編號表 Select * from 系所編號
2.顯示教師資料表某位老師的資料 Select * from 教師表 where 教師='張逸中'
3.顯示教師資料表張姓老師們的資料 Select * from 教師表 where 教師 like '%張%'
4.顯示某課程的點名單 Select 班級, 學號, 姓名 from M where 科目='網頁程式設計'
5.顯示某位學生的課表資料 Select 科目, 教室, 時間 from M where 姓名='學生姓名'
6.顯示某教室的課表資料 Select Distinct 時間, 科目, 教師 from M where 教室='教室編號'
7.顯示某教師週三上課的資料 Select Distinct 時間, 科目, 教室 where 教師='教室姓名' and 時間 like '%三%'

新增 Insert into [資料表] ([項目1], [項目2]) Values('資料1', '資料2')  
刪除 Delete from [資料表] where [項目1]='資料1'  
Delete from [資料表] where [項目1]='資料1' and(or) [項目2]<>'資料2' 多條件(或)
更新 Update [資料表] set [項目1]='資料1' where [項目2]='資料2'  
Update [資料表] set [項目1]='資料1',  [項目2]='資料2' where [項目2]='資料2' 更新多欄資料

使用Delete, Insert 與 Update 範例資料庫
接著請在網頁上再加入一個GridView物件,這次直接在設計時將資料表連接(會產生AccessDataSource1),下方一樣加入可以輸入指令的TextBox與Button,設計好的畫面如下:

接著雙擊確定鍵寫程式如下:

上面的程式基本上就是直接使用設計時產生的AccessDaatSourse1物件,以使用者輸入的新指令更改AccessDataSourse1的Delete, Insert & Update等等指令(Command)並執行它們,執行後磁碟裡的資料庫內容會被改變,網頁上的GridView因此需要重新連結資料庫(DataBind)顯示最新資料。接著就是練習SQL的時間啦!

Delete指令
(請參考網頁最上方的語法結構)
範例:刪除『張三』的資料SQL語句是:
 Delete from 通訊錄 where 姓名='張三'

在此請注意Where就是條件式的意思,凡是資料表或項目名稱可以直接寫它的名稱就好,加上方括號也可以(比較清晰好閱讀),但是資料內容則一定要加引號,單或雙引號皆可(但是一定要對稱)。
練習題
1.如何刪除住台北的人?(地址='台北')
2.如何全部刪除所有資料?(不寫條件)

 Insert指令
範例:新增一筆資料:姓名:林書豪,電話:5555555,地址:休斯頓。語法是:
  Insert into 通訊錄 (姓名, 電話, 住址) Values('林書豪', '5555555', '休斯頓')

在此要注意的是多個欄位之間的分隔記號必須是英文的逗點,打成中文版的大寫","會出錯的!

Update指令:
範例:將李四的名字改成李四端:
 Update 通訊錄 set 姓名='李四端' where 姓名='李四'
set就是設定的意思,翻譯移下就是:將姓名改成'李四端',如果姓名原本是'李四'的話!

練習題
1.將住在台北的人改名張三丰。
2.將王五的電話改成你的手機號碼。

PS.如果你是使用SQL資料庫時,除了AccesDataSource變成SqlDataSource之外,其他程式碼是完全一樣的!