【SQL】14 UNION 操作符、SELECT INTO 語句、INSERT INTO SELECT 語句、CREATE DATABASE 語句、CREATE TABLE 語句
SQL UNION 操作符
SQL UNION 操作符合並兩個或多個 SELECT 語句的結果。
SQL UNION 操作符
UNION 操作符用於合併兩個或多個 SELECT 語句的結果集。
請注意,UNION 內部的每個 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的資料型別。同時,每個 SELECT 語句中的列的順序必須相同。
SQL UNION 語法
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
註釋:預設地,UNION 操作符選取不同的值。如果允許重複的值,請使用 UNION ALL。
SQL UNION ALL 語法
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
註釋:UNION 結果集中的列名總是等於 UNION 中第一個 SELECT 語句中的列名。
演示資料庫
在本教程中,我們將使用 RUNOOB 樣本資料庫。
下面是選自 "Websites" 表的資料:
mysql> SELECT * FROM Websites;
+----+--------------+---------------------------+-------+---------+
| id | name | url | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1 | Google | https://www.google.cm/ | 1 | USA |
| 2 | 淘寶 | https://www.taobao.com/ | 13 | CN |
| 3 | 菜鳥教程 | http://www.runoob.com/ | 4689 | CN |
| 4 | 微博 | http://weibo.com/ | 20 | CN |
| 5 | Facebook | https://www.facebook.com/ | 3 | USA |
| 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND |
+----+---------------+---------------------------+-------+---------+
下面是 "apps" APP 的資料:
mysql> SELECT * FROM apps;
+----+------------+-------------------------+---------+
| id | app_name | url | country |
+----+------------+-------------------------+---------+
| 1 | QQ APP | http://im.qq.com/ | CN |
| 2 | 微博 APP | http://weibo.com/ | CN |
| 3 | 淘寶 APP | https://www.taobao.com/ | CN |
+----+------------+-------------------------+---------+
3 rows in set (0.00 sec)
SQL UNION 例項
下面的 SQL 語句從 "Websites" 和 "apps" 表中選取所有不同的country(只有不同的值):
例項
SELECT country FROM Websites
UNION
SELECT country FROM apps
ORDER BY country;
執行以上 SQL 輸出結果如下:
註釋:UNION 不能用於列出兩個表中所有的country。如果一些網站和APP來自同一個國家,每個國家只會列出一次。UNION 只會選取不同的值。請使用 UNION ALL 來選取重複的值!
SQL UNION ALL 例項
下面的 SQL 語句使用 UNION ALL 從 "Websites" 和 "apps" 表中選取所有的country(也有重複的值):
例項
SELECT country FROM Websites
UNION ALL
SELECT country FROM apps
ORDER BY country;
執行以上 SQL 輸出結果如下:
帶有 WHERE 的 SQL UNION ALL
下面的 SQL 語句使用 UNION ALL 從 "Websites" 和 "apps" 表中選取所有的中國(CN)的資料(也有重複的值):
例項
SELECT country, name FROM Websites
WHERE country='CN'
UNION ALL
SELECT country, app_name FROM apps
WHERE country='CN'
ORDER BY country;
執行以上 SQL 輸出結果如下:
select country from websites union select country from apps;
--連線兩個表的查詢結果集,重複的不顯示
select country from websites union all select country from apps order by country;
--連線倆個個表的查詢結果集,顯示重複
select country,name from websites where country = 'CN' union all
select country,app_name from apps where country='CN' order by name;
--通過where條件查詢的結果,連線連個表的結果集,並根據名字排序。
使用UNION命令時需要注意,只能在最後使用一個ORDER BY命令,是將兩個查詢結果合在一起之後,再進行排序!絕對不能寫兩個ORDER BY命令。
另外,在使用ORDER BY排序時,注意兩個結果的別名保持一致,使用別名排序很方便。當然也可以使用列數。
SQL SELECT INTO 語句
通過 SQL,您可以從一個表複製資訊到另一個表。
SELECT INTO 語句從一個表複製資料,然後把資料插入到另一個新表中。
SQL SELECT INTO 語句
SELECT INTO 語句從一個表複製資料,然後把資料插入到另一個新表中。
MySQL 資料庫不支援 SELECT ... INTO 語句,但支援 INSERT INTO ... SELECT 。
當然你可以使用以下語句來拷貝表結構及資料:
CREATE TABLE 新表 SELECT * FROM 舊錶
SQL SELECT INTO 語法
我們可以複製所有的列插入到新表中:
SELECT *
INTO newtable [IN externaldb]
FROM table1;
或者只複製希望的列插入到新表中:
SELECT column_name(s)
INTO newtable [IN externaldb]
FROM table1;
提示:新表將會使用 SELECT 語句中定義的列名稱和型別進行建立。您可以使用 AS 子句來應用新名稱。 |
SQL SELECT INTO 例項
建立 Websites 的備份復件:
SELECT *
INTO WebsitesBackup2016
FROM Websites;
只複製一些列插入到新表中:
SELECT name, url
INTO WebsitesBackup2016
FROM Websites;
只複製中國的網站插入到新表中:
SELECT *
INTO WebsitesBackup2016
FROM Websites
WHERE country='CN';
複製多個表中的資料插入到新表中:
SELECT Websites.name, access_log.count, access_log.date
INTO WebsitesBackup2016
FROM Websites
LEFT JOIN access_log
ON Websites.id=access_log.site_id;
提示:SELECT INTO 語句可用於通過另一種模式建立一個新的空表。只需要新增促使查詢沒有資料返回的 WHERE 子句即可:
SELECT *
INTO newtable
FROM table1
WHERE 1=0;
SQL INSERT INTO SELECT 語句
通過 SQL,您可以從一個表複製資訊到另一個表。
INSERT INTO SELECT 語句從一個表複製資料,然後把資料插入到一個已存在的表中。
SQL INSERT INTO SELECT 語句
INSERT INTO SELECT 語句從一個表複製資料,然後把資料插入到一個已存在的表中。目標表中任何已存在的行都不會受影響。
SQL INSERT INTO SELECT 語法
我們可以從一個表中複製所有的列插入到另一個已存在的表中:
INSERT INTO table2
SELECT * FROM table1;
或者我們可以只複製希望的列插入到另一個已存在的表中:
INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;
演示資料庫
在本教程中,我們將使用 RUNOOB 樣本資料庫。
下面是選自 "Websites" 表的資料:
+----+--------------+---------------------------+-------+---------+
| id | name | url | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1 | Google | https://www.google.cm/ | 1 | USA |
| 2 | 淘寶 | https://www.taobao.com/ | 13 | CN |
| 3 | 菜鳥教程 | http://www.runoob.com/ | 4689 | CN |
| 4 | 微博 | http://weibo.com/ | 20 | CN |
| 5 | Facebook | https://www.facebook.com/ | 3 | USA |
| 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND |
+----+---------------+---------------------------+-------+---------+
下面是 "apps" APP 的資料:
mysql> SELECT * FROM apps;
+----+------------+-------------------------+---------+
| id | app_name | url | country |
+----+------------+-------------------------+---------+
| 1 | QQ APP | http://im.qq.com/ | CN |
| 2 | 微博 APP | http://weibo.com/ | CN |
| 3 | 淘寶 APP | https://www.taobao.com/ | CN |
+----+------------+-------------------------+---------+
3 rows in set (0.00 sec)
SQL INSERT INTO SELECT 例項
複製 "apps" 中的資料插入到 "Websites" 中:
例項
INSERT INTO Websites (name, country)
SELECT app_name, country FROM apps;
只復 QQ 的 APP 到 "Websites" 中:
例項
INSERT INTO Websites (name, country)
SELECT app_name, country FROM apps
WHERE id=1;
SQL CREATE DATABASE 語句
SQL CREATE DATABASE 語句
CREATE DATABASE 語句用於建立資料庫。
SQL CREATE DATABASE 語法
CREATE DATABASE dbname;
SQL CREATE DATABASE 例項
下面的 SQL 語句建立一個名為 "my_db" 的資料庫:
CREATE DATABASE my_db;
資料庫表可以通過 CREATE TABLE 語句來新增。
SQL CREATE TABLE 語句
SQL CREATE TABLE 語句
CREATE TABLE 語句用於建立資料庫中的表。
表由行和列組成,每個表都必須有個表名。
SQL CREATE TABLE 語法
CREATE TABLE table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
....
);
column_name 引數規定表中列的名稱。
data_type 引數規定列的資料型別(例如 varchar、integer、decimal、date 等等)。
size 引數規定表中列的最大長度。
提示:如需瞭解 MS Access、MySQL 和 SQL Server 中可用的資料型別,請訪問我們完整的 資料型別參考手冊。
SQL CREATE TABLE 例項
現在我們想要建立一個名為 "Persons" 的表,包含五列:PersonID、LastName、FirstName、Address 和 City。
我們使用下面的 CREATE TABLE 語句:
例項
CREATE TABLE Persons
(
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);
PersonID 列的資料型別是 int,包含整數。
LastName、FirstName、Address 和 City 列的資料型別是 varchar,包含字元,且這些欄位的最大長度為 255 個字元。
空的 "Persons" 表如下所示:
PersonID | LastName | FirstName | Address | City |
---|---|---|---|---|
提示:可使用 INSERT INTO 語句向空表寫入資料。
相關文章
- insert into select語句與select into from語句
- SQL SELECT 語句SQL
- create table 使用select查詢語句建立表的方法分享
- SQL語言基礎(SELECT語句)SQL
- 4.3.3 使用CREATE DATABASE語句建立CDBDatabase
- SQLite語句(二):INSERT DELETE UPDATE SELECTSQLitedelete
- DBeaver如何生成select,update,delete,insert語句delete
- 2.4 使用 CREATE DATABASE 語句建立資料庫Database資料庫
- 4、MySQL建立資料庫(CREATE DATABASE語句)MySql資料庫Database
- Go select語句詳解Go
- 【SQL】9 SQL INSERT INTO 語句SQL
- 4.3.4 使用CREATE DATABASE語句建立一個CDB:示例Database
- Select語句執行順序
- 圖解Go select語句原理圖解Go
- 學習MySQL的select語句MySql
- SQLite Insert 語句SQLite
- flask之控制語句 if 語句與for語句Flask
- 6. Oracle開發和應用—6.3. 基本SQL語句—6.3.4. select語句OracleSQL
- Java中如何解析SQL語句、格式化SQL語句、生成SQL語句?JavaSQL
- SQL語句SQL
- 【SQL】16 SQL CREATE INDEX 語句、 撤銷索引、撤銷表以及撤銷資料庫、ALTER TABLE 語句、AUTO INCREMENT 欄位SQLIndex索引資料庫REM
- INSERT...SELECT語句對查詢的表加鎖嗎
- 比CRUD多一點兒(二):基礎INSERT、SELECT語句
- 資料庫學習(一)——select語句資料庫
- Sqlserver的merge into或delete語句堵塞select語句,鎖型別是LCK_M_ISSQLServerdelete型別
- sql常用語句SQL
- Oracle OCP(01):使用SQL SELECT語句檢索資料OracleSQL
- 分支語句和迴圈語句
- # 關於select關鍵字語句定義順序# 關於select關鍵字語句執行順序
- if語句
- if 語句
- SQLite語句(三):JOIN和UNIONSQLite
- sql宣告變數,及if -else語句、while語句的用法SQL變數While
- 1.3. SQL 語句SQL
- Oracle基本SQL語句OracleSQL
- Sql語句小整理SQL
- SQL語句優化SQL優化
- SQL 語句學習SQL