1. 程式人生 > 其它 >SQL 學習:十一

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子句;
②可利用聯結從多個表插入資料;
③不管從多個表中檢索資料,資料都只能插入到一個表中。