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 值。
每個表都應該有一個主鍵,並且每個表只能有一個主鍵。