標籤:des io ar os 使用 sp for strong 資料
最近看了一本SQL SERVER2010的教材,順便記錄了一下筆記(PS:此書暫時沒有看完、所以暫時更新一下內容)!一下內容為本人自己整理、如有錯誤還請大家指出以免影響別人的學習。
1、 建立一個表TestDB
DROP TABLE TestDB
CREATE TABLE TestDB(
id varchar(15) NOT NULL,
name varchar(15) NOT NULL,
sex int NOT NULL,
CONSTRAINT pk_id PRIMARY KEY(id)
);
2、 向TestDB表中插入一條資料
INSERT INTO TestDB (id,name,sex) VALUES (‘001‘,‘Clown‘,1);
3、 查詢TestDB中全部資料
SELECT * FROM TestDB;
4、 給查詢的列名起個自訂的別名
SELECT id AS c1,name AS c2,sex AS c3 FROM TestDB;
也可以不加[AS]
SELECT id c1,name c2,sex c3 FROM TestDB;
也可以對別名加[“”],則可以使用關鍵字做別名
SELECT id "AS",name "SUM",sex "CHAR" FROM TestDB;
5、 使用DISTINCT消除重複的行(計算量大、一般情況不建議使用)
SELECT DISTINCT name,sex FROM TestDB;
6、 ORDERY BY進行升序排列
SELECT * FROM TestDB ORDER BY sex
7、 ORDERY BY CASE按照條件排序
SELECT id c1,name c2,sex c3
FROM TestDB
ORDER BY CASE -- ORDER BY為一個隱式遊標(CURSOR)
WHEN name=‘Clown‘ -- 如果[name]列的值全部為[Clown]
THEN sex -- 則按照[sex]排序
ELSE id -- 否則按照[id]排序
END;
8、 ORDERY BY [column] DESC降序排列
SELECT * FROM TestDB ORDER BY id DESC;
9、 WHERE進行資料篩選
-- 篩選出[id]為[001]的所有行的所有列
SELECT * FROM TestDB WHERE id=‘001‘;
註:不能在WHERE中使用SUM()或者COUNT()等彙總函式!
比較子最快的為相等[=]其次是不相等[<、<=、>、>=]最慢的為不等於[<>或!=]
表中選擇特定行的操作稱為[限制]
WHERE語句不能用[列名]的[別名]、必須用原列名
WHERE在SELECT之前進行計算
10、多條件查詢串連符:AND 、OR 、NOT
AND:查詢多個條件同時為[真]
OR:一個條件成立即可以
NOT:取與條件相反的結果
-- 篩選出[id]為[001]的所有行的所有列
SELECT * FROM TestDB WHERE NOT id<>‘001‘;
註:同時使用是AND、OR、NOT優先順序:NOT最高其次是AND最後為OR
11、LIKE模糊查詢
-- 查詢[name]欄位含有[C]的資料
SELECT * FROM TestDB WHERE name LIKE ‘%C%‘
-- 查詢[name]欄位含有6位長度的資料
SELECT * FROM TestDB WHERE name LIKE ‘_____%‘
-- 查詢[name]欄位[C]或[a]或[b]開頭並[lown]結尾的資料
SELECT * FROM TestDB WHERE name LIKE ‘[Cab]lown%‘
-- ESCAPE ‘\‘ 此句聲明[\]為逸出字元相當於查詢的是[_Clown]關鍵字
SELECT * FROM TestDB WHERE name LIKE ‘\_Clown%‘ ESCAPE ‘\‘
-- 不是以[A]開頭的[6]位或以上的關鍵字
SELECT * FROM TestDB WHERE name LIKE ‘[^A]Clown%‘
註:LIKE僅試用於字串
12、BETWEEN篩選出大於等於並小於等於的一個段
-- 篩選出[id]大於等於並且小於等於的資料
SELECT * FROM TestDB WHERE id BETWEEN 1 AND 2
13、IN關鍵字篩選值是否等於給定的值
-- 篩選出[id]為[001]和[003]的值
SELECT * FROM TestDB WHERE id in (‘001‘,‘003‘)
14、IS NULL值是否為[NULL](PS:[NULL]不代表字面量)
-- 篩選出[name]為[NULL]的資料;[NULL]不代表字面量而是說明是否為空白
SELECT * FROM TestDB WHERE name IS NULL
-- 篩選出[name]為非空的資料;[NULL]不代表字面量而是說明是否為空白
SELECT * FROM TestDB WHERE name IS NOT NULL
15、SUBSTRING(Column,position,length)提取字串
-- 提取[name]列值、從第[1]位開始共[1]位
SELECT SUBSTRING(name,1,1) FROM TestDB
16、UPPER(string)、LOWER(string)大小寫轉換函式
-- [name]列轉換為小寫
SELECT LOWER(name) FROM TestDB
-- [name]列轉換為大寫
SELECT UPPER(name) FROM TestDB
17、擷取目前時間戳
-- 擷取目前時間戳
SELECT CURRENT_TIMESTAMP
18、類型轉換CAST(expression AS type)
-- 將[sex]列轉換為[varchar]類型
SELECT CAST(sex as varchar) FROM TestDB
19、CASE函數相當於IF ELSE
-- CASE相當於IF ELSE
SELECT id, ColumnName =
CASE id
WHEN ‘001‘ THEN ‘Road‘
WHEN ‘002‘ THEN ‘Mountain‘
WHEN ‘003‘ THEN ‘Touring‘
ELSE ‘Not for sale‘
END
FROM TestDB
ORDER BY id;
20、INNER JOIN 內連結
-- 內連結->返回[TestDB]表中[id]等於[TestDB2]表中[OrderId]
SELECT * FROM TestDB t1
INNER JOIN TestDB2 t2
ON t1.id = t2.OrderId
21、sp_help 查看錶的結構
-- [G_GAMEList]為表名稱
sp_help G_GAMEList
22、UPDATE SET 更新資料
-- [G_GAMEList]為表名,[GG_Date]為需要修改的欄位以及值,如不加WHERE則修改全部
UPDATE G_GAMEList
SET GG_Date = ‘2014-10-28‘
WHERE GG_Id = ‘1‘;
23、DELETE 刪除,不刪除表結構
-- 刪除[G_GAMEList]表、有刪除記錄可以恢複
DELETE G_GAMEList
-- 刪除[G_GAMEList]表中[GG_AddId]欄位為[1]的行
DELETE FROM G_GAMEList WHERE GG_AddId=‘1‘;
24、DROP TABLE 刪除,刪除表結構以及表
-- DROP刪除表不可恢複,但速度比DELETE快
DROP TABLE G_GAMEList
25、TRUNCATE 刪除可以使自增欄位歸零但資料不可恢複,不刪除表結構
TRUNCATE TABLE dbo.a;
26、約束
NOT NULL 阻止向列中插入空值
PRIMARY KEY 設定表的主鍵
FOREIGN KEY 設定表的外鍵
UNIQUE 阻止向列中插入重複的值
CHECK 使用邏輯(布爾)運算式限制插入列中的值
列約束:是列定義的一部分,它設定作用於列的條件。
資料表條件約束:是有別於列定義並加強於表中多個列的條件。
27、CREATE TABLE t_Name 建立表
-- 建立一張新表
CREATE TABLE t_TestTable(
id varchar(10),
name varchar(10)
)
28、DEFAULT設定列的預設值
-- 建立一張新表,設定[name]預設值為‘‘
CREATE TABLE t_TestTable(
id varchar(10),
name varchar(10) NOT NULL DEFAULT ‘‘
)
29、主鍵PRIMARY KEY與外鍵 FOREIGN KEY
-- 設定[C_Id]為主鍵
CREATE TABLE t_City(
C_Id varchar(10) NOT NULL PRIMARY KEY,
C_Name varchar(10) NOT NULL,
C_Parment int DEFAULT 0,
)
-- 建立一個[t_User]表,[U_Id]為主鍵,[U_City]為外鍵主鍵為[t_City]表中的[C_Id]列
CREATE TABLE t_User(
U_Id varchar(10) NOT NULL PRIMARY KEY,
U_Name varchar(10) NOT NULL,
U_Sex int NOT NULL DEFAULT 1,
U_City varchar(10),
CONSTRAINT FK_U_City
FOREIGN KEY(U_City)
REFERENCES t_City(C_Id)
)
INSERT INTO t_City(C_Id,C_Name)VALUES(‘1‘,‘呼倫貝爾‘);
-- 外鍵不能插入父表中沒有的資料
INSERT INTO t_User(U_Id,U_Name,U_Sex,U_City) VALUES (‘1‘,‘Clown‘,1,‘1‘);
-- 外鍵可以為空白
INSERT INTO t_User(U_Id,U_Name,U_Sex) VALUES(‘2‘,‘Clown‘,1);
註:外鍵可以為[NULL]但是不能為父表中不存在的值。
30、UNIQUE值唯一
CREATE TABLE t_Test(
T_Id varchar(10),
CONSTRAINT un_id
UNIQUE(T_Id)
)
註:UNIQUE標識[T_Id]列為唯一值不能插入重複資料
31、建立臨時變數表
建立局部變數表:
CREATE TABLE #t_TempTable(
TT_Id CHAR(3),
)
建立全域變數表:
CREATE TABLE ##t_AllTempTable(
ATT_Id CHAR(3),
)
註:建立臨時變數表是用來儲存臨時的資料當會話結束或事物結束時則資料清除
32、ALTER修改
-- 向[t_City]表中增加列[C_Time]
ALTER TABLE t_City
ADD C_Time VARCHAR(10);
-- 刪除[C_Time]列
ALTER TABLE t_City
DROP COLUMN C_Time
33、CREATE INDEX建立索引
-- 為表[t_City]的[C_Id]列建立索引
CREATE INDEX index_Name ON t_City(C_Id);
-- 刪除索引
DROP INDEX index_Name ON t_City;
註:索引查詢速度變快但是修改和添加資料時變慢,在添、改資料時索引也需要自動維護
《SQL SERVER 2008資料庫學習筆記(一)——Clown》