[創建資料庫與資料表]
Create database 資料庫名稱 --創建資料庫(T-SQL語句大小寫不分)
GO --提交T-SQL語句的一個標誌(每個指令後面都要寫)
Use 資料庫名稱 --指定資料庫
Create Table 資料表名稱( --創建資料表
欄位1 varchar(10), --欄位名稱 資料欄位型別(可儲存Bytes數)
欄位2 varchar(10), --若有多個欄位,以","分開
欄位3 varchar(10)
)
GO
資料欄位種類補充:
https://ithelp.ithome.com.tw/articles/10213922
https://ithelp.ithome.com.tw/articles/10203456
http://www.eion.com.tw/Blogger/?Pid=1155
Create database 資料庫名稱 --創建資料庫(T-SQL語句大小寫不分)
GO --提交T-SQL語句的一個標誌(每個指令後面都要寫)
Use 資料庫名稱 --指定資料庫
Create Table 資料表名稱( --創建資料表
欄位1 varchar(10), --欄位名稱 資料欄位型別(可儲存Bytes數)
欄位2 varchar(10), --若有多個欄位,以","分開
欄位3 varchar(10)
)
GO
資料欄位種類補充:
https://ithelp.ithome.com.tw/articles/10213922
https://ithelp.ithome.com.tw/articles/10203456
http://www.eion.com.tw/Blogger/?Pid=1155
[資料表編輯與刪除]
Use 資料庫名稱
Alter Table 資料表名稱
Add 欄位4 varchar(10),欄位5 varchar(10) --新增欄位(Alter)
Alter Table 資料表名稱 Alter Column 欄位5 char(1) --改變欄位資料型別
exec sp_rename '資料表名稱.欄位4' , '更改後欄位名稱' --改變欄位名稱
Alter Table 資料表名稱 Drop Column 欄位5 --刪除欄位
GO
參考:https://dotblogs.com.tw/alancodinglog/2019/10/15/mssql_datafield_adjust
Use 資料庫名稱
Alter Table 資料表名稱
Add 欄位4 varchar(10),欄位5 varchar(10) --新增欄位(Alter)
Alter Table 資料表名稱 Alter Column 欄位5 char(1) --改變欄位資料型別
exec sp_rename '資料表名稱.欄位4' , '更改後欄位名稱' --改變欄位名稱
Alter Table 資料表名稱 Drop Column 欄位5 --刪除欄位
GO
參考:https://dotblogs.com.tw/alancodinglog/2019/10/15/mssql_datafield_adjust
[資料表刪除]
Use 資料庫名稱
Drop Table 資料表名稱測試 --刪除資料表
GO
Use 資料庫名稱
Drop Table 資料表名稱測試 --刪除資料表
GO
[資料表限制]
限制可以在表格初創時藉由 CREATE TABLE 語句來指定,或是之後藉由 ALTER TABLE 語句來指定。
NOT NULL 不允許一個欄位含有 NULL 值
UNIQUE 限制是保證一個欄位中的所有資料都是有不一樣的值
CHECK 限制是保證一個欄位中的所有資料都是符合某些條件
主鍵(Primary Key)
外來鍵(Foreign Key)
參考:https://www.1keydata.com/tw/sql/sql-constraint.html#not_null
限制可以在表格初創時藉由 CREATE TABLE 語句來指定,或是之後藉由 ALTER TABLE 語句來指定。
NOT NULL 不允許一個欄位含有 NULL 值
UNIQUE 限制是保證一個欄位中的所有資料都是有不一樣的值
CHECK 限制是保證一個欄位中的所有資料都是符合某些條件
主鍵(Primary Key)
外來鍵(Foreign Key)
參考:https://www.1keydata.com/tw/sql/sql-constraint.html#not_null
[主鍵與外來鍵]
個人理解是一個資料表中主鍵只能有一個,但是可以有多個外來鍵;主鍵本身內容值不可空白與重複;外來鍵是與其他資料表主鍵連結的資料欄位。
Use 資料庫名稱
Alter Table 資料表名稱
Add 欄位X varchar(10), Primary Key(欄位X)
--加入一個新欄位X,並且設定為主鍵
GO
Use 資料庫名稱
Create Table 資料表名稱A ( --建立另一個資料表
欄位X varchar(10),
欄位A1 varchar(10),
欄位A2 varchar(10),
欄位A3 varchar(10),
Foreign Key (欄位X) References 資料表名稱(欄位X)
--設定此資料表的欄位X為外來鍵,並且連結資料表名稱中的主鍵(欄位X)
)
GO
個人理解是一個資料表中主鍵只能有一個,但是可以有多個外來鍵;主鍵本身內容值不可空白與重複;外來鍵是與其他資料表主鍵連結的資料欄位。
Use 資料庫名稱
Alter Table 資料表名稱
Add 欄位X varchar(10), Primary Key(欄位X)
--加入一個新欄位X,並且設定為主鍵
GO
Use 資料庫名稱
Create Table 資料表名稱A ( --建立另一個資料表
欄位X varchar(10),
欄位A1 varchar(10),
欄位A2 varchar(10),
欄位A3 varchar(10),
Foreign Key (欄位X) References 資料表名稱(欄位X)
--設定此資料表的欄位X為外來鍵,並且連結資料表名稱中的主鍵(欄位X)
)
GO
[資料表輸入]
Use 資料庫名稱
Insert Into 資料表名稱 (欄位1,欄位2,欄位3)
Values ('A','B','C') --根據對應欄位輸入資料
GO
Use 資料庫名稱
Insert Into 資料表名稱 (欄位1,欄位2,欄位3)
Values ('A','B','C') --根據對應欄位輸入資料
GO
[指定欄位內容修改]
Use 資料庫名稱
Update 資料表名稱 Set 欄位1='D',欄位2='E',欄位3='F' --指定欄位更改資料
Where 欄位1 = 'A' --條件式
GO
Use 資料庫名稱
Update 資料表名稱 Set 欄位1='D',欄位2='E',欄位3='F' --指定欄位更改資料
Where 欄位1 = 'A' --條件式
GO
[指定欄位內容刪除]
Use 資料庫名稱
Delete From 資料表名稱
Where 欄位1 = 'D'--若符合條件式則將整列資料刪除
GO
Use 資料庫名稱
Delete From 資料表名稱
Where 欄位1 = 'D'--若符合條件式則將整列資料刪除
GO
[查詢相關]
[排序]
Select * From 資料表名稱 --查詢該資料表全部資料欄位
Order by 欄位X ASC --依照欄位X遞增排序(DESC則為遞減排序)
[別名]
Select 欄位X,欄位1 AS 別名 From 資料表名稱
--查詢該資料表指定資料欄位,'AS'可以設定查詢出來的資料欄位名稱
[內容不重複]
Select Distinct 欄位A1 From 資料表名稱A
--查詢該資料表指定資料欄位且內容不重複
[條件式]
Select * From 資料表名稱 --查詢該資料表全部資料欄位
Where 欄位X = 5 --條件式(可以使用'AND'跟'OR'去搭配)
[條件式_In()]
Select * From 資料表名稱 --查詢該資料表全部資料欄位
Where 欄位X In(1,3,5,7,9) --符合其中一樣即成立
[條件式_Between...And...]
Select * From 資料表名稱 --查詢該資料表全部資料欄位
Where 欄位X Between 5 And 10 --符合兩項值其中的範圍即成立
[條件式_Like 萬用字元]
Select * From 資料表名稱 --查詢該資料表全部資料欄位
Where 欄位X Like '_1%'
--萬用字元'_'可以代表一個字元,'%'可以代表多個字元
[合併查詢(類似Inner Join)]
Select 資料表名稱.欄位1,資料表名稱A.欄位A1
--不同資料表的欄位透過主外鍵相連而被查詢到
From 資料表名稱,資料表名稱A --有被使用的資料表
Where 資料表名稱.欄位X = 資料表名稱A.欄位X --主鍵與外來鍵做相連
[排序]
Select * From 資料表名稱 --查詢該資料表全部資料欄位
Order by 欄位X ASC --依照欄位X遞增排序(DESC則為遞減排序)
[別名]
Select 欄位X,欄位1 AS 別名 From 資料表名稱
--查詢該資料表指定資料欄位,'AS'可以設定查詢出來的資料欄位名稱
[內容不重複]
Select Distinct 欄位A1 From 資料表名稱A
--查詢該資料表指定資料欄位且內容不重複
[條件式]
Select * From 資料表名稱 --查詢該資料表全部資料欄位
Where 欄位X = 5 --條件式(可以使用'AND'跟'OR'去搭配)
[條件式_In()]
Select * From 資料表名稱 --查詢該資料表全部資料欄位
Where 欄位X In(1,3,5,7,9) --符合其中一樣即成立
[條件式_Between...And...]
Select * From 資料表名稱 --查詢該資料表全部資料欄位
Where 欄位X Between 5 And 10 --符合兩項值其中的範圍即成立
[條件式_Like 萬用字元]
Select * From 資料表名稱 --查詢該資料表全部資料欄位
Where 欄位X Like '_1%'
--萬用字元'_'可以代表一個字元,'%'可以代表多個字元
[合併查詢(類似Inner Join)]
Select 資料表名稱.欄位1,資料表名稱A.欄位A1
--不同資料表的欄位透過主外鍵相連而被查詢到
From 資料表名稱,資料表名稱A --有被使用的資料表
Where 資料表名稱.欄位X = 資料表名稱A.欄位X --主鍵與外來鍵做相連
[進階查詢_SQL JOIN]
- SQL JOIN (連接) 是利用不同資料表之間欄位的關連性來結合多資料表之檢索。
- SQL JOIN 是結合多個資料表而組成一抽象的暫時性資料表以供資料查詢,
- 在原各資料表中之紀錄及結構皆不會因此連接查詢而改變。
參考:https://www.fooish.com/sql/join.html
INNER JOIN 同時符合條件(AND)
FULL JOIN 符合其中一個條件(OR)
LEFT JOIN 以左表主鍵為主,右表主鍵為空也可列入
RIGHT JOIN 以上的相反
FULL JOIN 符合其中一個條件(OR)
LEFT JOIN 以左表主鍵為主,右表主鍵為空也可列入
RIGHT JOIN 以上的相反
[進階查詢_SQL UNION]
UNION 運算子用來將兩個(以上) SQL 查詢的結果合併起來,
而由 UNION 查詢中各別 SQL 語句所產生的欄位需要是相同的資料型別及順序。
UNION 查詢只會返回不同值的資料列,有如 SELECT DISTINCT。
UNION 就是像是 OR (聯集),如果紀錄存在於第一個查詢結果集或第二個查詢結果集中,就會被取出。
UNION 與 JOIN 不同的地方在於,JOIN 是作橫向結合 (合併多個資料表的各欄位); 而 UNION 則是作
而 UNION 則是作垂直結合 (合併多個資料表中的紀錄)。
UNION ALL與UNION差別在於:UNION ALL會將資料全部塞進去,UNION則是會排序以及移除重複值
UNION 運算子用來將兩個(以上) SQL 查詢的結果合併起來,
而由 UNION 查詢中各別 SQL 語句所產生的欄位需要是相同的資料型別及順序。
UNION 查詢只會返回不同值的資料列,有如 SELECT DISTINCT。
UNION 就是像是 OR (聯集),如果紀錄存在於第一個查詢結果集或第二個查詢結果集中,就會被取出。
UNION 與 JOIN 不同的地方在於,JOIN 是作橫向結合 (合併多個資料表的各欄位); 而 UNION 則是作
而 UNION 則是作垂直結合 (合併多個資料表中的紀錄)。
UNION ALL與UNION差別在於:UNION ALL會將資料全部塞進去,UNION則是會排序以及移除重複值
[函數]
常見的有
AVG (平均)
COUNT (計數)
MAX (最大值)
MIN (最小值)
SUM (總合)
其餘函數Google萬解
常見的有
AVG (平均)
COUNT (計數)
MAX (最大值)
MIN (最小值)
SUM (總合)
其餘函數Google萬解
[摳來的迴圈範例]
--定義迴圈參數
DECLARE
@TotalNum INT, --執行次數
@Num INT --目前次數
--設定迴圈參數
SET @TotalNum = 10 --執行次數
SET @Num =1 --目前次數
--執行WHILE迴圈
WHILE @Num <= @TotalNum --當目前次數小於等於執行次數
BEGIN
/*
這裡放要執行的SQL
*/
--設定目前次數+1
SET @Num = @Num + 1
END
參考:https://dotblogs.com.tw/BerryNote/2016/08/06/120741
--定義迴圈參數
DECLARE
@TotalNum INT, --執行次數
@Num INT --目前次數
--設定迴圈參數
SET @TotalNum = 10 --執行次數
SET @Num =1 --目前次數
--執行WHILE迴圈
WHILE @Num <= @TotalNum --當目前次數小於等於執行次數
BEGIN
/*
這裡放要執行的SQL
*/
--設定目前次數+1
SET @Num = @Num + 1
END
參考:https://dotblogs.com.tw/BerryNote/2016/08/06/120741
沒有留言:
張貼留言