第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

SQL Union & As

1. 定義

慕課解釋:Union操作符用于合并兩個或多個Select查詢的結(jié)果集;As操作符可以給字段或數(shù)據(jù)表指定別名。

2. 前言

本小節(jié)中,我們將介紹SQL Union和 SQL As。

在實際數(shù)據(jù)存儲應(yīng)用中,可能會對某類數(shù)據(jù)進行分表存儲。如:imooc_user 表可能會被拆分成 imooc_user_en 和 imooc_user_zh 兩張表,但二者的結(jié)構(gòu)和字段一致,Union 可以方便在查詢的時候可以直接獲取這兩張表的數(shù)據(jù)。

在書寫 SQL 時,有些字段名,如 username ,表意不夠明確,我們可以通過 As 給該字段取上一個別名 imooc_username,這樣就給SQL閱讀和維護提供了便利。

注意: Union 合并的結(jié)果集,必須擁有相同字段個數(shù),且合并的字段類型必須兼容,如字符類型和整型是不能兼容的。

本小節(jié)測試數(shù)據(jù)如下,請先在數(shù)據(jù)庫中執(zhí)行:

DROP TABLE IF EXISTS imooc_user_en;
CREATE TABLE imooc_user_en
(
  username varchar(20),
  age int
);
INSERT INTO imooc_user_en(username,age) VALUES ('peter', 18), ('lucy', 29);

DROP TABLE IF EXISTS imooc_user_zh;
CREATE TABLE imooc_user_zh
(
  username varchar(20),
  age int
);
INSERT INTO imooc_user_zh(username,age) VALUES ('pedro', 23), ('peter', 18);

3. SQL Union

SQL Union 用于合并 Select 查詢的多個結(jié)果集,使用語法如下:

SELECT [col] FROM [table_name1]
UNION
SELECT [col] FROM [table_name2]

其中table_name代表數(shù)據(jù)表名稱,col表示字段名稱,數(shù)字 1,2 表示多張表。

3.1 例1 單獨使用 Union

單獨使用 Union 時會默認(rèn)篩選掉結(jié)果集中相同的數(shù)據(jù)。

請書寫 SQL 語句,查詢得到imooc_user_enimooc_user_zh中的所有用戶。

分析:

按照語法使用 Union 即可。

語句:

SELECT username, age FROM imooc_user_en
UNION
SELECT username, age FROM imooc_user_zh;

查詢結(jié)果如下:

+----------+-----+
| username | age |
+----------+-----+
| peter    | 18  |
| lucy     | 29  |
| pedro    | 23  |
+----------+-----+

imooc_user_en 和 imooc_user_zh 表中存在同名且同齡的用戶peter,Union 在合并兩個結(jié)果集時,默認(rèn)地去掉了重復(fù)值。可有時,我們需要保留重復(fù)的記錄,這時就需要使用 Union All。

3.2 例2 使用 Union All

使用 Union All 會保留結(jié)果集中的所有數(shù)據(jù)。

請書寫 SQL 語句,返回imooc_user_enimooc_user_zh中的所有用戶。

分析:

按照語法使用 Union All 即可。

語句:

SELECT username, age FROM imooc_user_en
UNION ALL
SELECT username, age FROM imooc_user_zh;

查詢結(jié)果如下:

+----------+-----+
| username | age |
+----------+-----+
| peter    | 18  |
| lucy     | 29  |
| pedro    | 23  |
| peter    | 18  |
+----------+-----+

提示: Union 在合并字段時由于會篩選掉重復(fù)記錄,這個過程是較為耗時的,如果非必需情況,請使用 Union All。

4. SQL As

SQL As 主要用于給數(shù)據(jù)表或字段給定別名(Alias)。

使用語法如下:

SELECT [col] AS [alias1] FROM [table_name] AS [alias2]

其中col表示字段名稱,table_name表示表名稱,alias表示別名,數(shù)字1、2代表多個別名。

4.1 例3 As 作用于表名稱

使用 As 可以為數(shù)據(jù)表指定一個別名。

請書寫 SQL 語句,返回imooc_user_zh中的所有用戶,并且語句中指定imooc_user_zh的別名為imooc_user。

分析:

按照語法使用 As 即可。

語句:

SELECT username, age FROM imooc_user_zh AS imooc_user;

查詢結(jié)果如下:

+----------+-----+
| username | age |
+----------+-----+
| pedro    | 23  |
| peter    | 18  |
+----------+-----+

4.2 例4 As 作用于字段名稱

使用 As 還可以為字段指定一個別名。

請書寫 SQL 語句,返回imooc_user_zh中的所有用戶,并且語句中指定username的別名為imooc_user_name。

分析:

按照語法使用 As 即可。

語句:

SELECT username AS imooc_user_name, age FROM imooc_user_zh;
+-----------------+-----+
| imooc_user_name | age |
+-----------------+-----+
| pedro           | 23  |
| peter           | 18  |
+-----------------+-----+

5. 小結(jié)

  • Union 的使用場景其實不多,但語法簡單,在數(shù)據(jù)聚合相關(guān)的場景中十分有用。
  • As 可以給數(shù)據(jù)表和字段指定別名,但其實不使用 As 也是可以指定別名的,但閱讀性相對差了一些。
  • 別名的使用其實很頻繁,不僅可以提高性能,而且可以提高 SQL 語句的閱讀性。
  • As 指定別名不僅可以用在 Select 查詢,也可以用在 Update,對于 Delete 有些數(shù)據(jù)庫是不支持使用別名的。