認識SQL 高級進階

sql教程欄目介紹10種高級進階

認識SQL 高級進階

推薦(免費):sql教程

sql高級
1、TOP子句
TOP 子句用于規定要返回的記錄的數目。

select?TOP?2?*?FROM?Persons? ?SELECT?TOP?50?PERCENT?*?FROM?Persons

2、link查找的模式
現在,我們希望從上面的 “Persons” 表中選取居住在以 “N” 開始的城市里的人:
我們可以使用下面的 SELECT 語句:

SELECT?*?FROM?Persons? ?WHERE?City?LIKE?‘N%’

提示:”%” 可用于定義通配符(模式中缺少的字母)
通過使用 NOT 關鍵字,我們可以從 “Persons” 表中選取居住在不包含 “lon” 的城市里的人:
我們可以使用下面的 SELECT 語句:

SELECT?*?FROM?Persons? ?WHERE?City?NOT?LIKE?‘%lon%’

3、通配符
認識SQL 高級進階
(1)通過使用 NOT 關鍵字,我們可以從 “Persons” 表中選取居住在不包含 “lon” 的城市里的人:
我們可以使用下面的 SELECT 語句:

SELECT?*?FROM?Persons? ?WHERE?City?NOT?LIKE?‘%lon%’

(2)我們希望從上面的 “Persons” 表中選取名字的第一個字符之后是 “eorge” 的人:
我們可以使用下面的 SELECT 語句:

SELECT?*?FROM?Persons? ?WHERE?FirstName?LIKE?‘_eorge’

(3)我們希望從上面的 “Persons” 表中選取居住的城市以 “A” 或 “L” 或 “N” 開頭的人:
我們可以使用下面的 SELECT 語句:

SELECT?*?FROM?Persons? ?WHERE?City?LIKE?‘[ALN]%’? ?不?SELECT?*?FROM?Persons? ?WHERE?City?LIKE?‘[!ALN]%’

4、IN 操作符
IN 操作符允許我們在 WHERE 子句中規定多個值。IN 操作符實例
現在,我們希望從上表中選取姓氏為 Adams 和 Carter 的人:
我們可以使用下面的 SELECT 語句:

SELECT?*?FROM?Persons? ?WHERE?LastName?IN?(‘Adams’,’Carter’)

5、BETWEEN 操作符
操作符 BETWEEN … AND 會選取介于兩個值之間的數據范圍。這些值可以是數值、文本或者日期
如需以字母順序顯示介于 “Adams”(包括)和 “Carter”(不包括)之間的人,請使用下面的 SQL:

SELECT?*?FROM?Persons? ?WHERE?LastName? ?BETWEEN?‘Adams’?AND?‘Carter’

補集為No BETWEEN

6、通過使用 SQL,可以為列名稱和表名稱指定別名(Alias)
假設我們有兩個表分別是:”Persons” 和 “Product_Orders”。我們分別為它們指定別名 “p” 和 “po”。
現在,我們希望列出 “John Adams” 的所有定單。
我們可以使用下面的 SELECT 語句:

SELECT?po.OrderID,?p.LastName,?p.FirstName? ?FROM?Persons? AS ?p,?Product_Orders? AS ?po? ?WHERE?p.LastName=’Adams’?AND?p.FirstName=’John’

也可以為列使用別名

SELECT?LastName?AS?Family,?FirstName?AS?Name? ?FROM?Persons

7、join 和 Key
有時為了得到完整的結果,我們需要從兩個或更多的表中獲取結果。我們就需要執行 join。
數據庫中的表可通過鍵將彼此聯系起來。主鍵(Primary Key)是一個列,在這個列中的每一行的值都是唯一的。
認識SQL 高級進階
認識SQL 高級進階
引用兩個表
我們可以通過引用兩個表的方式,從兩個表中獲取數據:
誰訂購了產品,并且他們訂購了什么產品?

SELECT?Persons.LastName,?Persons.FirstName,?Orders.OrderNo? ?FROM?Persons,?Orders? ?WHERE?Persons.Id_P?=?Orders.Id_P

下面的語句和上面的語句具有同樣的效果
SQL JOIN – 使用 Join
除了上面的方法,我們也可以使用關鍵詞 JOIN 來從兩個表中獲取數據。
如果我們希望列出所有人的定購,可以使用下面的 SELECT 語句:

SELECT?Persons.LastName,?Persons.FirstName,?Orders.OrderNo? ?FROM?Persons? INNER?JOIN ?Orders? ?ON?Persons.Id_P?=?Orders.Id_P? ?ORDER?BY?Persons.LastName

INNER JOIN 存在至少一個匹配時返回行?

注意

  • JOIN: 如果表中有至少一個匹配,則返回行?

  • LEFT JOIN: 即使右表中沒有匹配,也從左表返回所有的行?

  • RIGHT JOIN: 即使左表中沒有匹配,也從右表返回所有的行

  • FULL JOIN: 只要其中一個表中存在匹配,就返回行

8、SQL union 操作符
UNION 操作符用于合并兩個或多個 SELECT 語句的結果集。
請注意,UNION 內部的 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的數據類型。同時,每條 SELECT 語句中的列的順序必須相同。
列出所有在中國和美國的不同的雇員名:

SELECT?E_Name?FROM?Employees_China? ?UNION? ?SELECT?E_Name?FROM?Employees_USA

union和union all的區別就是union all會把所有的結果都輸出來,union會把相同的給去掉

9、CREATE database database_name
用于創建數據庫

CREATE?TABLE?Persons? ?(? ?Id_P?int,? ?LastName?varchar(255),? ?FirstName?varchar(255),? ?Address?varchar(255),? ?City?varchar(255)? ?)

認識SQL 高級進階

10、sql約束
(1) 下面的 SQL 語句強制 “Id_P” 列和 “LastName” 列不接受 NULL 值:

CREATE?TABLE?Persons? ?(? ?Id_P?int?NOT?NULL,? ?LastName?varchar(255)?NOT?NULL,? ?FirstName?varchar(255),? ?Address?varchar(255),? ?City?varchar(255)? ?)

(2)SQL UNIQUE 約束?

  • UNIQUE 約束唯一標識數據庫表中的每條記錄。?

  • UNIQUE 和 PRIMARY KEY 約束均為列或列集合提供了唯一性的保證?

  • PRIMARY KEY 擁有自動定義的 UNIQUE 約束。?

請注意,每個表可以有多個 UNIQUE 約束,但是每個表只能有一個 PRIMARY KEY 約束。
(3)SQL PRIMARY KEY 約束
PRIMARY KEY 約束唯一標識數據庫表中的每條記錄。?

  • 主鍵必須包含唯一的值。?

  • 主鍵列不能包含 NULL 值。
    每個表都應該有一個主鍵,并且每個表只能有一個主鍵。

想了解更多編程學習,敬請關注php培訓欄目!

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享