SqlCollections - 數據管理

  1 --==============================數據管理===============================
  2 --插入記錄
  3 INSERT INTO 訂單明細(折扣,數量,單價,產品ID,訂單ID)
  4 VALUES (0.8,3,26,2,10248)
  5 
  6 --容許插入標識列
  7 SET IDENTITY_INSERT 類別 ON
  8 GO
  9 
 10 --INSERT INTO批量插入數據
 11 --格式:INSERT INTO 表1(字段1,字段2...) + 返回結果集的語句(如SELECT * FROM 表二、EXEC sp_who)
 12 --表1必須是事先已經存在的表!
 13 CREATE TABLE 僱員通信錄
 14 (
 15     僱員ID int PRIMARY KEY,
 16     姓氏 nvarchar(20),
 17     名字 nvarchar(20)
 18 )
 19 GO
 20 INSERT INTO 僱員通信錄    --INSERT INTO 表1 SELECT 字段1,字段2 FROM 表2
 21 SELECT 僱員ID,姓氏,名字
 22 FROM 僱員
 23 GO
 24 SELECT * FROM 僱員通信錄
 25 GO
 26 TRUNCATE TABLE 僱員通信錄
 27 GO
 28 INSERT INTO 僱員通信錄(僱員ID,姓氏,名字)    --INSERT INTO 表1(字段1,字段2) SELECT 字段1,字段2 FROM 表2
 29 SELECT 僱員ID,姓氏,名字
 30 FROM 僱員
 31 GO
 32 SELECT * FROM 僱員通信錄
 33 GO
 34 DROP TABLE 僱員通信錄
 35 GO
 36 
 37 --SELECT INTO批量插入數據
 38 --格式:SELECT 字段1,字段2 INTO 表2 FROM 表1 
 39 --表2必須是事先不存在的表!
 40 SELECT 產品ID,產品名稱
 41 INTO #缺貨記錄
 42 FROM 產品
 43 WHERE 庫存量 = 0
 44 
 45 --複製表結構的方法
 46 --使用SELECT INTO,但讓WHERE返回空結果集
 47 SELECT *
 48 INTO #訂單2
 49 FROM 訂單
 50 WHERE 0 = 1
 51 
 52 --更新記錄
 53 UPDATE 產品
 54 SET 單價 = 單價 * 1.5
 55 
 56 --關聯多表批量更新
 57 UPDATE b
 58 SET b.單價 = a.單價
 59 FROM 產品 a
 60 JOIN 訂單明細 b
 61 ON a.產品ID = b.產品ID
 62 WHERE a.產品名稱 = N'牛奶'
 63 
 64 --刪除記錄
 65 DELETE 訂單 WHERE 訂購日期 < '1996.8.1'
 66 
 67 --刪除全部記錄
 68 --TRUNCATE刪的快,刪除後不能用事務日誌恢復
 69 --TRUNCATE刪除後,自增加字段會從新開始編號
 70 --若該表是其餘表外鍵指向的表,則不能用TRUNCATE刪除數據
 71 TRUNCATE TABLE 訂單明細
 72 
 73 --關聯多表批量刪除
 74 DELETE 訂單
 75 FROM 僱員 a
 76 JOIN 訂單 b
 77 ON a.僱員ID = b.僱員ID
 78 WHERE a.姓氏 = N'' AND a.名字 = N''
 79 
 80 --查看最前記錄
 81 SELECT TOP 8 *    --查詢出8條記錄
 82 FROM 訂單明細
 83 ORDER BY 數量 DESC
 84 
 85 SELECT TOP 8 WITH TIES *    --WITH TIES顯示排名並列的記錄,共查詢出9條
 86 FROM 訂單明細
 87 ORDER BY 數量 DESC
 88 
 89 SELECT TOP 10 PERCENT *        --查詢出前百分之多少的記錄
 90 FROM 訂單明細
 91 ORDER BY 數量 DESC
 92 
 93 --查詢不重複的記錄
 94 SELECT DISTINCT 貨主城市 FROM 訂單
 95 
 96 --查詢標識列
 97 SELECT $IDENTITY FROM 類別
 98 
 99 --查詢GUID列
100 SELECT $ROWGUID FROM 類別
101 
102 --多表聯合查詢
103 --[Inner] Join:只顯示符合條件的記錄;
104 --Left [Outer] Join:顯示左表中全部的記錄,以及右表中符合條件的記錄;
105 --Right [Outer] Join:顯示右表中全部的記錄,以及左表中符合條件的記錄;
106 --Full [Outer] Join:顯示全部表中的記錄,包括符合條件和不符合條件的記錄;
107 --Cross Join:將一個表的每條記錄與另外一個表的每條搭配,不須要On設置條件。
108 
109 --Join自身
110 SELECT 僱員.僱員ID,僱員.姓氏,僱員.名字,主管.姓氏,主管.名字
111 FROM 僱員
112 LEFT JOIN 僱員 AS 主管
113 ON 僱員.上級 = 主管.僱員ID
114 
115 --查詢字段爲NULL
116 SELECT *
117 FROM 僱員
118 WHERE 上級 IS NULL
119 
120 --替換NULL值
121 SELECT 類別ID,類別名稱,ISNULL(說明,'暫無說明') AS 說明
122 FROM 類別
123 
124 --模糊查詢
125 --通配符:%:0個或多個字符;_:1個字符,可重用;[]:指定範圍中的任意單個字符;[^]不屬於指定範圍內的任意單個字符。
126 --查詢包含通配符的文本,只需將通配符用[]包起來
127 SELECT * 
128 FROM 產品
129 WHERE 產品名稱 LIKE '%奶酪'    --以奶酪結尾的
130 --WHERE 產品名稱 LIKE '__奶酪'    --以奶酪結尾,且必須是4個字的
131 --WHERE 產品名稱 LIKE '[麻醬]油'    --麻油或醬油
132 
133 --有關子查詢
134 SELECT * FROM 
135 (
136 SELECT * FROM 訂單
137 --ORDER BY 訂單ID    --子查詢不容許排序操做(例外:TOP、FOR XML)
138 )a    --子查詢必須取別名
139 
140 --分組 GROUP BY
141 SELECT 貨主城市,COUNT(訂單ID) AS 訂單總數,YEAR(訂購日期) AS 訂購年份
142 FROM 訂單
143 GROUP BY 貨主城市,YEAR(訂購日期)
144 --WITH CUBE    --可選:對GROUP BY列出的全部分組字段進行彙總運算
145 WITH ROLLUP    --可選:對GROUP BY列出的第一個字段進行彙總運算
146 ORDER BY 貨主城市,YEAR(訂購日期)
147 
148 --HAVING子句
149 --HAVING與WHERE區別:彙總函數只能在HAVING子句中使用
150 --形式上:WHERE一定在GROUP BY以前,HAVING一定在GROUP BY以後
151 SELECT 貨主城市,COUNT(訂單ID) AS 訂單總數
152 FROM 訂單
153 GROUP BY 貨主城市
154 HAVING COUNT(訂單ID) > 20
155 
156 --UNION合併結果集
157 SELECT 聯繫人姓名,地址,電話
158 FROM 供應商
159 UNION ALL    --合併全部記錄,包括重複記錄
160 SELECT 聯繫人姓名,地址,電話
161 FROM 客戶
162 UNION    --去除重複數據
163 SELECT '張三','aaa','123'    --能夠使用UNION加入臨時數據
相關文章
相關標籤/搜索