推薦(免費):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培训栏目!
以上是認識SQL 高階進階的詳細內容。更多資訊請關注PHP中文網其他相關文章!