sql教程欄目介紹10種高級進階
推薦(免費):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、通配符
(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)是一個列,在這個列中的每一行的值都是唯一的。
引用兩個表
我們可以通過引用兩個表的方式,從兩個表中獲取數據:
誰訂購了產品,并且他們訂購了什么產品?
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)? ?)
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培訓欄目!