Views: 5
寫C#跟SQL SERVER的大概離不開Visual Studio跟SSMS,然後這篇除了會講一點SSMS操作以外,以講解SELECT
跟INSERT
指令為主,但SELECT
指令能用的語法非常非常多,這邊只講很基礎的。
SSMS如何手動新增資料到資料表(不使用SQL)
SSMS本身可以像EXCEL那樣編輯資料,這對新手其實蠻友善的,上一堂課我們已經建立好報名的資料表了,接下來我們要對裡面塞資料。同樣你要開啟SSMS並連線到資料庫。
編輯前200個資料列
對著資料表按下右鍵,有編輯前200個資料列的項目,勇敢的按下去。
很好,我們已經看到輸入資料的地方了,你很勇敢。
再來我們就可以來輸入資料了,每一行都要輸入喔
輸入好第一筆後按下Enter
如果有在前面出現驚嘆號的話,可以在資料最前方按下右鍵>執行SQL
如果要改資料這邊也可以直接改
然後可以練習一下多輸入幾筆資料
快速輸入的一個技巧
資料其實可以直接整列複製,然後到下一列貼上
一次貼上多列
也可以同時複製跟貼上多筆資料,技巧就是第一筆選取,然後按住shift選最後一筆,就會把資料選起來,然後就能複製貼上
編輯資料我們先介紹到這邊,還有很多小技巧。
CRUD 增刪修
寫網頁有個專有名詞叫做CRUD,四個字母分開念C+R+U+D 吸R優低
Create
新增資料,對應資料庫的INSERT
指令Read
讀取資料,對應資料庫的SELECT
指令Update
更新資料,對應資料庫的UPDATE
指令Delete
刪除資料,對應資料庫的DELETE
指令
其中比較容易出問題是
UPDATE
跟DELETE
指令,通常是少了WHERE,然後把全部資料刪除或更新成一樣的,這兩個指令會在下一篇說明。
Create 新增資料的SQL指令 Insert Into
insert範例
INSERT INTO 資料表名稱 (欄位1,欄位2,欄位3,...) VALUES (值1,值2,值3,....)
說明:
- 這個指令在各種資料庫系統都通用
INSERT INTO
跟VALUES
、資料表名稱、 欄位名稱大小寫不拘- 值:文字類要用單引號包起來,例如
'值1'
插入一筆資料
對著資料庫按右鍵>新增查詢
說明:
- 每條資料庫指令都翻譯成查詢,原文是Query,所有的資料庫語法都稱為Query
- SQL 是查詢的語言,我自己習慣把SQL Query稱為SQL指令或SQL Query
- 輸入後執行,執行的快速鍵是F5
INSERT INTO [Regist]
([Name],[Gender],[Birthday],[ROCID],[Email] ,[Phone],[Food],[EventID])
VALUES
('金貝貝',1,'1999/01/02','A123456789','[email protected]','0900-001-001',1,1)
Execute SQL Query 執行SQL 指令:
執行指令後會顯示(1個資料列受影響),在這邊就等於指令成功輸入,如果執行錯誤會出現紅字(如圖)
INSERT 陳述式中的資料行數量大於 VALUES 子句中所指定的值。在 VALUES 子句中值的數目必須和 INSERT 陳述式中所指定的資料行數量相符。
這是VALUE前後少一個值或多一個值
資料行 ‘某一行’ 中的字串或二進位資料將會截斷。截斷的值:……
這是指超過欄位限制,這個案例是身分證字號輸入超過十碼。
接近 ……….. 之處的語法不正確。
語法格式有錯,通常是少逗點或單引號,這個案例是少單引號'
。
SELECT 指令 讀取資料
基本語法
SELECT 欄位1,欄位2,欄位3,...
FROM 資料表名稱
WHERE 查詢條件
ORDER BY 欄位1,欄位2
說明:
SELECT
、FROM
、WHERE
、ORDER BY
、 欄位名稱、資料表名稱這些大小寫不拘SELECT
欄位1,欄位2,欄位3 是告訴資料庫查詢後要列出來的欄位FROM
資料表明稱 要查詢那個資料表WHERE
查詢條件,條件範例:WHERE 欄位1 = 10
,查詢等於10的WHERE 欄位1 >= 10
,查詢大於等於10的- 模糊查詢:
WHERE 欄位2 like '%AB%'
,查詢欄位2字串有AB的 - 組合查詢:
WHERE 欄位1 = 10 AND 欄位2 = '黃圈圈'
可以使用AND
或OR
與()
組合多個條件
SELECT *
用於列出全部欄位,通常開發期可以這樣用,但建議系統上線時候還是要列有使用到的欄位就好,查詢後用不到的欄位不要列出來可以增加系統效率。
查詢前1000筆資料 SELECT TOP 1000
SSMS本身有提供可以直接查詢前1000筆資料,非常的方便。
選擇資料表 滑鼠右鍵>選取前1000個資料列
這功能相當方便
不過我們要測試一下下面幾個語法
列出前三筆資料-所有欄位
SELECT TOP (3) *
FROM [PartyRegister].[dbo].[Regist]
這邊使用 SELECT TOP 3 來限制回傳資料筆數,這個功能非常常用。
列出前三筆ID跟NAME
SELECT TOP (3) ID,Name
FROM [PartyRegister].[dbo].[Regist]
欄位換位置
這邊欄位也可以換位
SELECT TOP (3) Name,ID
FROM [PartyRegister].[dbo].[Regist]
SELECT後欄位重新命名
這個功能在製作報表的時候很常用到,把輸出的資料除了換成想要的順序外,還要換個顯示名字,換欄位名稱寫法是在欄位名後加上 AS '新名稱'
SELECT TOP (3)
Name as '姓名',
ID as '流水號'
FROM [PartyRegister].[dbo].[Regist]
SELECT WHERE
這邊要來展示WHERE一些常用的語法
列出所有的女生的名字 Gender = 2
這邊順便說一下底畫的畫面,比較重要的是時間、結果筆數、執行成功或失敗等資訊。
SELECT
Name
FROM [PartyRegister].[dbo].[Regist]
WHERE Gender = 2
然後注意SQL判斷式的等於只有一個,跟其它程式語言在這點很不同。
組合查詢式 SELECT WHERE AND
WHERE
的查詢條件中,可以透過AND
跟 OR
跟NOT
還有括弧()
來組合查詢式,
--查詢Gender = 2 以及姓名是 錢夫人
SELECT Name
FROM [PartyRegister].[dbo].[Regist]
WHERE Gender = 2 and Name = '錢夫人'
查詢筆數 SELECT COUNT(1) WHERE
雖然上一個可以直接用有幾列知道筆數,但我們可以透過COUNT(1) 或 COUNT(*)來得知筆數
這邊用上了COUNT(1)
跟 AS
重新命名
ID不連續的問題(其實不是問題,是資料庫特性)
這個問題常被新手問,為什麼我的ID不連續?大概有幾個原因
- 插入資料失敗,但Seed會自動+1,因此造成跳號
- 資料被刪除,然後空出來的ID就會缺號。
這是所有資料庫的特性,ID就像一本書的頁碼,中間撕掉一頁不會自動補,然後如果貼上新的一頁就只能從最後面貼。
ID的值可以改嗎?
其實可以,不過大家不會這樣做….。會造成資料的外鍵索引大亂。
0 Comments