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加入臨時數據