SQL 學習:十一
如何利用UNION操作符將多條SELECT語句組合成 一個結果集。
多數SQL查詢只包含從一個或多個表中返回資料的單挑SELECT語句。但是,SQL也允許執行多個查詢,並將結果作為一個查詢結果集返回。這些組合查詢通常成為並(union)或複合查詢(compound query)。
1.UNION規則
①UNION必須由兩條或兩條以上的SELECT語句組成、語句之間用關鍵字UNION分隔;
②UNION中的每個查詢必須包含相同的列、表示式或聚集函式;
③列資料型別必須相容:型別不必完全相同,但必須是DBMS可以隱含轉換的型別。
④UNION在第一個名字和第二個名字中只返回第一個的名字
⑤UNION從查詢結果集中自動去除了重複的行
⑥如果想返回所有的匹配行可使用UNION ALL而不是UNION。
SELECT cust_name,cust_contact,cust_email FROM Customers WHERE cust_state IN('Il','IN','MI') UNION SELECT cust_name,cust_contact,cust_email FROM Customers WHERE cust_name='Fun4All' SELECT cust_name,cust_contact,cust_email FROM Customers WHERE cust_state IN('Il','IN','MI') UNION ALL SELECT cust_name,cust_contact,cust_email FROM Customers WHERE cust_name='Fun4All'
2.插入資料
利用SQL的INSERT語句將資料插入表中
INSERT用來將行插入或新增到資料庫表。插入的方式有幾種:
插入完整的行;
插入行的一部分;
插入某些查詢的結果。
使用INSERT INTO將資訊插入到表中,如果列中沒有值則應該使用NULL值(假定表允許對該列指定空值)
INSERT INTO Customers (cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact, cust_email) VALUES(1000000006, 'Toy Land', '123 Any Street', 'New York', 'NY', '11111', 'MD USA', 'NULL', 'NULL');
插入部分列:省略的列必須滿足以下某個條件:
該列定義未允許NULL值(無值或空值);
在表定義中給出預設值。這表示如果不給出值,將使用預設值;
如果表中不允許有NULL值或者預設值,這時候省略了表中的值,DBMS就會產生錯誤訊息,相應的行不能成功插入。
INSET SELECT語句:將檢索語句插入表中
INSERT INTO Customers (cust_id,cust_name)
SELECT cust_id,cust_name FROM custNew;
在這裡,DBMS不要求INSERT和SELECT列明匹配,它使用的是列的位置,因此SELECT中的第一列(不管其列名)將用來填充表列中指定的第一列。
3、從一個表複製到另一個表
使用SELECT into 語句將資料複製到一個新表,使用SELECT 是將表中所有資料全部複製到新表中;要想只複製部分的列,可以明確給出列名,而不是使用萬用字元。
SELECT * INTO a FROM Customers;
在使用SELECT INTO時,需要了解的一些內容:
①任何SELECT選項和子句都可以使用,包括WHERE和GROUP BY子句;
②可利用聯結從多個表插入資料;
③不管從多個表中檢索資料,資料都只能插入到一個表中。