SQL基礎教程 SQL基礎教程
原文地址:https://www.cnblogs.com/gaopengfirst/p/7235140.html
SQL基礎教程
下面是我看到其他博主寫的部落格,感覺sql總結的不錯,對我很有幫助,就把它拿過來了,以便下次使用,借鑑網址:http://www.cnblogs.com/minuobaci/p/7224956.html;
一、SQL簡介
1:什麼是SQL?
A:SQL指結構化查詢語句 B:SQL使我們有能力訪問資料庫 C:SQL是一種ANSI(美國國家標準化組織)的標準計算機語言
2:SQL能做什麼?
*面向資料庫執行查詢 *從資料庫中取出資料 *向資料庫插入新的記錄
*更新資料庫中資料 *從資料庫刪除記錄 *建立資料庫 *建立表
*建立儲存過程 *建立檢視 *設定表、儲存過程和檢視的許可權
3:RDBMS
RDBMS是指關係型資料庫管理系統
RDBMS是SQL的基礎,同樣也是所有現代資料庫系統的基礎,如MS SQL Server、IBM DB2、Oracle、MySQL以及Microsoft Access
RDBMS中的資料儲存在被稱為表的資料庫物件中
表是相關的資料項的集合,他由列和行組成。
二、SQL語法
注意:SQL對大小寫不敏感!!!
1:SQL語句後面的分號
某些資料庫系統要求在每條SQL命令的末端使用分號。
分號是在資料庫系統中分隔每條SQL語句的標準方法,這樣就可以在伺服器的相同請求中執行一條以上的語句。
如果使用的是MS Access和SQL Server 2000,則不必在每條SQL語句之後使用分號,不過某些資料庫要求必須使用分號。
2:SQL DML和DDL
可以把SQL分為兩個部分:資料操作語言(DML)和資料庫定義語言(DDL)
SQL(結構化查詢語句)適用於執行查詢的語法。但是SQL語言也包含用於更新、插入和刪除記錄的語法。查詢和更新構成了SQL的DML部 分:select、update、delete、insert into 。 資料庫定義語言(DDL)部分使我們有能力建立或刪除表格,我們也可以定義索引(鍵),規定表之間的連線,以及事假表間的約束:
Create database、alert database、create table、alert table、drop table、create index、drop index
三、Select
User表裡面的資料如下
查詢user表裡面的user_name欄位和user_age欄位的所有資料
Select user_name,user_age from user
查詢user表中所有的欄位資料,用 * 表示列的名稱
Select * from user
四、Distinct
Distinct選取所有的值的時候不會出現重複的資料
用普通的查詢,查詢所有
Select * from user
Select distinct user_name,user_age from user
注意:不能有user_id,因為兩個Mary的user_id不一樣,加上就不算相同資料
五、Where
1:查詢user_id等於1 的資料
Select * from user where user_id = 1
2:查詢user_age大於等於12的資料
Select * from user where user_age >=12
3:查詢user_age不等於12的資料
Select * from user where user_age <> 12
六、AND 和 OR
And和or在where子語句中把兩個或多個條件結合起來。如果需要兩個條件都成立就是用and如果只需要其中一個條件成立就使用or
Select * from user where user_name = 'mary' and user_age = 12
需要注意的是SQL使用單引號來環繞文字值,如果是數值則不需要引號
Select * from user where user_name='mary' or user_age =13
結合and和or使用圓括號來組成複雜的表示式
Select * from user where (user_name = 'mary' and user_age = 12) or(user_age =13)
七、Order by
1:對指定列進行升序排列
Select * from user order by user_name
2:按照user_id逆序排列
Select * from user order by user_id DESC
2:按照升序排列user_id逆序排列user_age
SELECT * FROM user order by user_id ASC,user_age DESC
3:按照升序排列user_id逆序排列user_age
SELECT * FROM user order by user_age DESC,user_id ASC
注意:前面的條件優先順序更高!!
八、Insert
User表
插入一行資料 user_id為2 user_name為tom,user_age為12
注意:如果每一項都有插入的話就不需要在前面列出列名!!
Insert into user values(2,'tom',12)
新插入一行資料,只要求user_name為eva
Insert into user(user_name) values('eva')
注意:因為ID設定為自增,所以user_id不為null
九、Update
修改user_id為6的資料user_age為14
Update user set user_age=14 where user_id=6
修改user_id為1的資料user_name為ann,user_age為11
Update user set user_name='ann',user_age=11 where user_id=1
十、Delete
User表中的所有資料資訊如下
刪除user_age為12的資料
Delete from user where user_age=12
刪除表中的所有資料
Delete from user
第二章 SQL高階教程
一、Top
Top子句用於返回要返回的記錄的數目,但並不是所有的資料庫都支援top子句
1:SQL Server
Select top 5 * from user
2:MySQL
Select * from user limit 5
3:Oracle
Select * from user where ROWNUM <= 5
二、Like
User表的初始資料如下
1:找出以li開頭的資料
Select * from user where user_name like 'li%'
2:找出以ry結尾的資料
Select * from user where user_name like '%ry'
3:找出含有a的資料
Select * from user where user_name like '%a%'
4:找出第二個字母是a第四個字母是y的資料
Select * from user where user_name like '_a_y'
三、萬用字元
在搜尋資料庫中的資料的時候SQL萬用字元可以替代一個或多個字元。SQL萬用字元必須與like運算子一起使用
1: _ 替代一個字元
找出第二個字母是a第四個字母是y的資料
Select * from user where user_name like '_a_y'
2: % 替代一個或多個字元
找出以ry結尾的資料
Select * from user where user_name like '%ry'
3: [] 字元列中的任意一個單字元
找出以a或者l開頭的資料
Select * from user where user_name like '[al]%'
找出不是a或者l開頭的資料
Select * from user where user_name like '[!al]%'
四、In
只要資料滿足in裡面的一個條件就可以了
找到user_age是12或者13的資料
Select * from user where user_age in (12,13)
找到user_name是Harry和Mary的資料
Select * from user where user_name IN ('mary','harry')
五、Between
選取兩個值之間的資料
查詢年齡在12和14之間的資料
Select * from user where user_age between 12 and 14
查詢字母在Alice和John之間的資料
Select * from user where user_name between 'alice' AND'john'
六、Aliases
指定別名
假設我們有兩個表分別是user和Room 。我們分別指定他們為u和r。
1:不使用別名
Select room.room_name,user.user_name,user.user_age from user ,room Where user.user_age=12 and room.room_id = 1
2:使用別名
使用別名的時候直接將別名跟在後面,不使用as也可以
Select r.room_name,u.user_name,u.user_age from user as u,room as r Where u.user_age=12 and r.room_id = 1
七、Join
資料庫中的表可以通過鍵將彼此聯絡起來,主鍵是一個列,在這個列中的每一行的值都是唯一的,在表中,每個主鍵的值都是唯一的,這樣就可以在不重複每個表中的所有資料的情況下,把表間的資料交叉捆綁在一起。
以下為表user和表Room的資料
1:引用兩個表
找出在Room of boy相關聯的使用者資訊
Select u.user_name,u.user_age,r.room_name from user as u,room as r
Where u.room_id = r.room_id and r.room_name='room of boy'
2:使用關鍵字join來連線兩張表
Select u.user_name,u.user_age,r.room_name
from user as u
join room as r
on u.room_id = r.room_id and r.room_name='room of boy'
八、Inner join
Inner join 與 join 用法一致
Select u.user_name,u.user_age,r.room_name
from user as u
inner join room as r
on u.room_id = r.room_id and r.room_name='room of boy'
九、Left join
注意:左連線以左邊的表為主體,也就是說會列出左邊的表中的所有的資料,無論它是否滿足條件。
1:user在左邊
Select u.user_name,u.user_age,r.room_name
from user as u
Left join room as r
on u.room_id = r.room_id and r.room_name='room of boy'
2:Room在左邊
Select u.user_name,u.user_age,r.room_name
From room as r
Left join user as u
on u.room_id = r.room_id and r.room_name='room of boy'
十、Right join
注意:左連線以右邊的表為主體,也就是說會列出左邊的表中的所有的資料,無論它是否滿足條件。
1:Room在右邊
Select u.user_name,u.user_age,r.room_name
from user as u
Right join room as r
on u.room_id = r.room_id and r.room_name='room of boy'
2:user在右邊
Select u.user_name,u.user_age,r.room_name
from room as r
Right join user as u
on u.room_id = r.room_id and r.room_name='room of boy'
十一、Full join
1:user在左邊
Select * from user Full join room
2:Room在左邊
Select * From room full join user
注意:SQL錯誤碼1054表示沒有找到對應的欄位名;錯誤碼1064表示使用者輸入的SQL語句有語法錯誤
十二、Union
Union操作符用於合併兩個或者多個SELECT語句的結果集
請注意,UNION內部的select語句必須擁有相同數量的列。列也必須擁有相同的資料型別。同時,每條select語句中的列的順序必須相同。
下面是Room表和color表的資料
Select room_name from room
Union
Select color_name from color
預設的union選取不同的值,如果想要有相同的值出現就使用union all
Select room_name from room
Union all
Select color_name from color
十三、Create DB
建立資料庫mysqltest
Create database mysqltest
十四、Create table
Create table sqltest(
Id int,
Name varchar(45),
Age int,
Salary float,
Time Date,
)
十五、Constraints
SQL約束,用於限制加入表的資料的型別
常見約束:not noll、unique、primary key、foreign key、check、default
十六、Not null
Not null 約束強制列不接受NULL值。Not null 約束強制欄位始終包含值,這意味著,如果不向欄位新增值,就無法插入新的欄位或者更新記錄
用法,在欄位後面加上 not null
十七、Unique
Unique約束唯一標識資料庫中的每一條記錄。Primary key約束擁有自動的unique約束。需要注意的是,每個表裡面可以擁有多個unique約束,但只能有一個primary key約束
1:MySQL用法,unique(欄位名)
2:SQL Server 、 Oracle 、 MS Access在欄位後面加
3:命名約束使用constraint
4:已經建立了表之後需要新增約束
ALTER TABLE sqltest ADD UNIQUE(Age)
5:給已經建立了的表新增約束並命名
ALTER TABLE sqltest ADD constraint unique_name UNIQUE(Age,salary)
6:撤銷約束
MySQL
在沒有給約束命名的情況下(上面的age約束)直接使用欄位名就可以了
ALTER TABLE sqltest DROP INDEX age
刪除後
在約束有名字的情況下,直接使用名字就可以了
ALTER table sqltest drop index unique_name
刪除後
SQL Server 、 Oracle 、 MS Access
ALTER table 表名 drop constraint 約束名
十八、Primary key
Primary key約束唯一標識資料庫表中的每一條記錄,元件必須包含唯一的值。元件列不能包含NULL值。每個表都應該有一個主鍵,並且每一個表都只能有一個主鍵
1:在MySQL中的用法
2:在SQL Server 、 Oracle 和MS Access中的用法
3:為已經建立成功的表建立primary key約束
Alter table sqltest add primary key(id)
4:為已經建立成功的表新增主鍵約束,以及為多個列定義主鍵約束
Alter table sqltest add constraint pk_name primary key (id,name)
5:在MySQL中撤銷主鍵
ALTER TABLE sqltest DROP PRIMARY KEY
刪除後
6:在SQL Server、Oracle、MS Access中撤銷主鍵
Alter table 表名 drop constraint 主鍵名
十九、Foreign key
所謂的外來鍵,即一個表的外來鍵指向另一個表的主鍵
User表
Room表
在user表裡面room_id列指向Room表裡面的id列。Room表裡面的id列是主鍵,user表裡面的room_id列是外來鍵。外來鍵約束用於預防破壞表之間的連線動作,外來鍵約束也能防止非法資料插入外來鍵列,因為他必須是他指向的那個表的值之一。
二十、Check
Check約束用於限制列中的值的範圍。如果對單一的列定義check約束,那麼改了只允許特定的值。如果對一個表定義check約束,那麼此約束會在特定的列中對值進行限制。
為已經建立成功的表新增check約束
ALTER TABLE USER ADD CHECK (age>10)
二十一、Default
Default約束用於向列宗插入預設值。如果沒有規定其他值,那麼就會將預設值新增到所有的新紀錄。
用法:
當表已經存在的時候,新增預設值
ALTER TABLE sqltest ALTER NAME SET DEFAULT 'tom'
撤銷預設值
二十二、Create index
索引,你可以在表裡面建立索引,一邊更加快速高效地查詢資料。使用者無法看見索引,他們只能被用來加速搜尋、查詢。
注意:更新一個包含索引的表需要比更新一個沒有索引的表更多的時間,這是索引本身也需要更新,因此,理想的做法是僅僅在常常被搜尋的列上面建立索引。
1:建立一個索引
CREATE INDEX index_name ON color (color_id )
2:建立一個獨一無二的索引,即兩行不能擁有相同的索引值。
CREATE UNIQUE INDEX book_index ON book (book_id)
3:如果索引不止一個列,你可以在括號中列出這些列的名稱,用逗號隔開
CREATE INDEX index_bank ON bank (bank_id,bank_name)
二十三、Drop
通過使用DROP語句,可以刪掉索引、表和資料庫
1:刪除索引
Drop index index_name on color
刪除之後
2:刪除表
DROP TABLE colorcopy
刪除之後
3:清空表
TRUNCATE TABLE color
刪除之後
4:刪除資料庫
DROP DATABASE mysqltest
刪除之後
二十四、Alert
1:新增列
Alter table user add salary float
2:刪除列
Alter table user drop column room_id
二十五、Increment
定義主鍵自增
二十六、View
檢視,一種基於SQL語句的結果集視覺化表。檢視包含行和列,就像一個真實的表。檢視中的欄位來自一個或多個數據庫中的真實的表中的欄位,我們可以 向檢視新增SQL函式、where以及join語句,我們提交資料,然後這些來自某個單一的表。需要注意的是,資料庫中的結構和設計不會受到檢視的函式、 where或join語句的影響
1:建立一個檢視,欄位來自user表和Room表
CREATE VIEW view_test AS
SELECT user.user_name,user.user_age,room.room_name
FROM USER,room
WHERE user.user_age>10
2:查詢檢視
Select * from view_test
3:撤銷檢視
DROP VIEW view_test
二十七、Date
二十八、Nulls
預設的,表的列可以存放NULL值。如果表裡面的某個列是可選的,那麼我們可以在不想改列新增值的情況下插入記錄或者更新記錄,這意味著該欄位以NULL值儲存。注意,NULL和0是不等價的,不能進行比較。
1:查詢NULL值
select * from user where salary is null
2:查詢非NULL值
select * from user where salary is not null
二十九、資料型別
MySQL主要有三種類型:文字、數字、日期
三十、伺服器
第三章 SQL函式
一、SQL functions
在SQL當中,基本的函式型別和種類有若干種,函式的基本型別是:
合計函式(Aggregate function)和 Scalar函式
Aggregate 函式,函式操作面向一系列的值,並返回一個單一的值。
Scalar 函式,操作面向某個單一的值,並返回基於輸入值的一個單一的值。
二、Avg()
求平均年齡
Select avg(user_age) from user
求大於平均年齡的使用者
Select * from user where user_age>(Select avg(user_age) from user)
三、Count()
返回列的值的數目(不包含NULL)
注意,可以使用as來給count()取一個別名
Select count(user_id) from user
Select count(salary) from user
返回值不同的有多少
Select count(distinct user_name) from user
查詢所有列
Select count(*) from user
四、Max()
返回最大值,NULL不包括在計算中
Select max(price) as max_price from commodity
五、Min()
返回最小值,NULL不包括在計算中
Select min(salary) poor_man from user
六、Sum()
返回該列值的總額
Select sum(salary) from user
七、Group By
用於結合合計函式,根據一個或多個列對結果集進行分組
SELECT cname,SUM(price) FROM commodity GROUP BY cname
八、Having
在SQL中增加having子句的原因是where不能與合計函式一起使用。用法和where 一樣
SELECT cname,SUM(price) FROM commodity
GROUP BY cname
HAVING SUM(price)>20
九、Ucase()
把函式欄位的值轉化為大寫
SELECT UCASE(user_name) FROM user
十、Lcase()
將函式欄位轉化為小寫
Select lcase(user_name) from user
十一、Mid()
從文字欄位中提取字元
Select mid(user_name,2,2) from user
十二、Round()
Round函式把數值欄位舍入為指定的小數位數
Select round(salary,2) from user
十三、Now()
返回當前時間
SELECT NOW() FROM user
下面是我看到其他博主寫的部落格,感覺sql總結的不錯,對我很有幫助,就把它拿過來了,以便下次使用,借鑑網址:http://www.cnblogs.com/minuobaci/p/7224956.html;
一、SQL簡介
1:什麼是SQL?
A:SQL指結構化查詢語句 B:SQL使我們有能力訪問資料庫 C:SQL是一種ANSI(美國國家標準化組織)的標準計算機語言
2:SQL能做什麼?
*面向資料庫執行查詢 *從資料庫中取出資料 *向資料庫插入新的記錄
*更新資料庫中資料 *從資料庫刪除記錄 *建立資料庫 *建立表
*建立儲存過程 *建立檢視 *設定表、儲存過程和檢視的許可權
3:RDBMS
RDBMS是指關係型資料庫管理系統
RDBMS是SQL的基礎,同樣也是所有現代資料庫系統的基礎,如MS SQL Server、IBM DB2、Oracle、MySQL以及Microsoft Access
RDBMS中的資料儲存在被稱為表的資料庫物件中
表是相關的資料項的集合,他由列和行組成。
二、SQL語法
注意:SQL對大小寫不敏感!!!
1:SQL語句後面的分號
某些資料庫系統要求在每條SQL命令的末端使用分號。
分號是在資料庫系統中分隔每條SQL語句的標準方法,這樣就可以在伺服器的相同請求中執行一條以上的語句。
如果使用的是MS Access和SQL Server 2000,則不必在每條SQL語句之後使用分號,不過某些資料庫要求必須使用分號。
2:SQL DML和DDL
可以把SQL分為兩個部分:資料操作語言(DML)和資料庫定義語言(DDL)
SQL(結構化查詢語句)適用於執行查詢的語法。但是SQL語言也包含用於更新、插入和刪除記錄的語法。查詢和更新構成了SQL的DML部 分:select、update、delete、insert into 。 資料庫定義語言(DDL)部分使我們有能力建立或刪除表格,我們也可以定義索引(鍵),規定表之間的連線,以及事假表間的約束:
Create database、alert database、create table、alert table、drop table、create index、drop index
三、Select
User表裡面的資料如下
查詢user表裡面的user_name欄位和user_age欄位的所有資料
Select user_name,user_age from user
查詢user表中所有的欄位資料,用 * 表示列的名稱
Select * from user
四、Distinct
Distinct選取所有的值的時候不會出現重複的資料
用普通的查詢,查詢所有
Select * from user
Select distinct user_name,user_age from user
注意:不能有user_id,因為兩個Mary的user_id不一樣,加上就不算相同資料
五、Where
1:查詢user_id等於1 的資料
Select * from user where user_id = 1
2:查詢user_age大於等於12的資料
Select * from user where user_age >=12
3:查詢user_age不等於12的資料
Select * from user where user_age <> 12
六、AND 和 OR
And和or在where子語句中把兩個或多個條件結合起來。如果需要兩個條件都成立就是用and如果只需要其中一個條件成立就使用or
Select * from user where user_name = 'mary' and user_age = 12
需要注意的是SQL使用單引號來環繞文字值,如果是數值則不需要引號
Select * from user where user_name='mary' or user_age =13
結合and和or使用圓括號來組成複雜的表示式
Select * from user where (user_name = 'mary' and user_age = 12) or(user_age =13)
七、Order by
1:對指定列進行升序排列
Select * from user order by user_name
2:按照user_id逆序排列
Select * from user order by user_id DESC
2:按照升序排列user_id逆序排列user_age
SELECT * FROM user order by user_id ASC,user_age DESC
3:按照升序排列user_id逆序排列user_age
SELECT * FROM user order by user_age DESC,user_id ASC
注意:前面的條件優先順序更高!!
八、Insert
User表
插入一行資料 user_id為2 user_name為tom,user_age為12
注意:如果每一項都有插入的話就不需要在前面列出列名!!
Insert into user values(2,'tom',12)
新插入一行資料,只要求user_name為eva
Insert into user(user_name) values('eva')
注意:因為ID設定為自增,所以user_id不為null
九、Update
修改user_id為6的資料user_age為14
Update user set user_age=14 where user_id=6
修改user_id為1的資料user_name為ann,user_age為11
Update user set user_name='ann',user_age=11 where user_id=1
十、Delete
User表中的所有資料資訊如下
刪除user_age為12的資料
Delete from user where user_age=12
刪除表中的所有資料
Delete from user
第二章 SQL高階教程
一、Top
Top子句用於返回要返回的記錄的數目,但並不是所有的資料庫都支援top子句
1:SQL Server
Select top 5 * from user
2:MySQL
Select * from user limit 5
3:Oracle
Select * from user where ROWNUM <= 5
二、Like
User表的初始資料如下
1:找出以li開頭的資料
Select * from user where user_name like 'li%'
2:找出以ry結尾的資料
Select * from user where user_name like '%ry'
3:找出含有a的資料
Select * from user where user_name like '%a%'
4:找出第二個字母是a第四個字母是y的資料
Select * from user where user_name like '_a_y'
三、萬用字元
在搜尋資料庫中的資料的時候SQL萬用字元可以替代一個或多個字元。SQL萬用字元必須與like運算子一起使用
1: _ 替代一個字元
找出第二個字母是a第四個字母是y的資料
Select * from user where user_name like '_a_y'
2: % 替代一個或多個字元
找出以ry結尾的資料
Select * from user where user_name like '%ry'
3: [] 字元列中的任意一個單字元
找出以a或者l開頭的資料
Select * from user where user_name like '[al]%'
找出不是a或者l開頭的資料
Select * from user where user_name like '[!al]%'
四、In
只要資料滿足in裡面的一個條件就可以了
找到user_age是12或者13的資料
Select * from user where user_age in (12,13)
找到user_name是Harry和Mary的資料
Select * from user where user_name IN ('mary','harry')
五、Between
選取兩個值之間的資料
查詢年齡在12和14之間的資料
Select * from user where user_age between 12 and 14
查詢字母在Alice和John之間的資料
Select * from user where user_name between 'alice' AND'john'
六、Aliases
指定別名
假設我們有兩個表分別是user和Room 。我們分別指定他們為u和r。
1:不使用別名
Select room.room_name,user.user_name,user.user_age from user ,room Where user.user_age=12 and room.room_id = 1
2:使用別名
使用別名的時候直接將別名跟在後面,不使用as也可以
Select r.room_name,u.user_name,u.user_age from user as u,room as r Where u.user_age=12 and r.room_id = 1
七、Join
資料庫中的表可以通過鍵將彼此聯絡起來,主鍵是一個列,在這個列中的每一行的值都是唯一的,在表中,每個主鍵的值都是唯一的,這樣就可以在不重複每個表中的所有資料的情況下,把表間的資料交叉捆綁在一起。
以下為表user和表Room的資料
1:引用兩個表
找出在Room of boy相關聯的使用者資訊
Select u.user_name,u.user_age,r.room_name from user as u,room as r
Where u.room_id = r.room_id and r.room_name='room of boy'
2:使用關鍵字join來連線兩張表
Select u.user_name,u.user_age,r.room_name
from user as u
join room as r
on u.room_id = r.room_id and r.room_name='room of boy'
八、Inner join
Inner join 與 join 用法一致
Select u.user_name,u.user_age,r.room_name
from user as u
inner join room as r
on u.room_id = r.room_id and r.room_name='room of boy'
九、Left join
注意:左連線以左邊的表為主體,也就是說會列出左邊的表中的所有的資料,無論它是否滿足條件。
1:user在左邊
Select u.user_name,u.user_age,r.room_name
from user as u
Left join room as r
on u.room_id = r.room_id and r.room_name='room of boy'
2:Room在左邊
Select u.user_name,u.user_age,r.room_name
From room as r
Left join user as u
on u.room_id = r.room_id and r.room_name='room of boy'
十、Right join
注意:左連線以右邊的表為主體,也就是說會列出左邊的表中的所有的資料,無論它是否滿足條件。
1:Room在右邊
Select u.user_name,u.user_age,r.room_name
from user as u
Right join room as r
on u.room_id = r.room_id and r.room_name='room of boy'
2:user在右邊
Select u.user_name,u.user_age,r.room_name
from room as r
Right join user as u
on u.room_id = r.room_id and r.room_name='room of boy'
十一、Full join
1:user在左邊
Select * from user Full join room
2:Room在左邊
Select * From room full join user
注意:SQL錯誤碼1054表示沒有找到對應的欄位名;錯誤碼1064表示使用者輸入的SQL語句有語法錯誤
十二、Union
Union操作符用於合併兩個或者多個SELECT語句的結果集
請注意,UNION內部的select語句必須擁有相同數量的列。列也必須擁有相同的資料型別。同時,每條select語句中的列的順序必須相同。
下面是Room表和color表的資料
Select room_name from room
Union
Select color_name from