1. 程式人生 > >SQL基礎教程 SQL基礎教程

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