SQL學習筆記|二
高階SQL語句:
TOP:用於返回規定要反回的記錄數目。對於擁有大量資料的大型表實用。
註釋:並非所用的資料庫都支援Top語句。
SQL Server 的語法:
SELECT TOP 數字|百分比 列名 FROM 表名
MySQL和Oracle的語法:
MySQL語法
SELECT 列名 FROM 表名 LIMIT 數量;
commit;
Oracle語法
SELECT 列名 FROM 表名 WHERE ROWNUM <= 數量 ;
COMMIT;
取Person表中的50%
SELECT TOP 50 PERCENT * FROM Person
取Person表中的頭兩條是資料
SELECT TOP 2 * FROM Person
LIKE:
SELECT 列名 FROM 表名 WHERE 列名 LIKE 模式(像正則表示式一樣)
選擇城市名以“K”字母開頭的城市。
SELECT * FROM Person WHERE city
選擇城市名以“N”字母結尾的城市:LIKE 'K%'
SELECT * FROM Person WHERE city LIKE '%N'
選擇城市名中含有“lon”字元的城市。
SELECT * FROM Person WHERE city LIKE '%lon%'
NOT LIKE :
選擇城市名中不含有"lon’的城市
SELECT * FROM Person WHERE city NOT LIKE "%LON%"
萬用字元:
% 替換一個或多個字元
_ 僅替換一個字元
[^charlist] 含有字串中的任何一個字元
[!charlist]不含有字串集合中的任意字元
從Person表中選取城市名以【ABC】,“A”,“B”,“C”開頭的人。
SELECT * FROM Person WHERE city LIKE '[ABC]%'
IN:
允許我們在WHERE句子中中規定多個值。
從表選出姓氏為“李”和“吳”的人
SELECT * FROM Person WHERE LastName IN
BETWEEN:
SELECT column_name(s) FROM table_name
WHERE column_name
BETWEEN values1 AND values2
以字母順序顯示介於“Adams”(包括)和“Carter”(不包括)之間的人。
SELECT * FROM Person WHERE LastName
BETWEEN 'Adams' AND 'Carter'
SELECT * FROM Person WHERE LastName
NOT BETWEEN 'Adams' AND 'Carter'
Alias(別名)
使用表別名
SELECT colum_name(s)
FROM table_name
AS alias_name
SELECT po.OrderID,p.LastName,p.FirstName
FROM Person AS p,Proddeuct_Orders As po
WHERE p.LastName='Adams' AND FirstName = 'John'
使用列別名
SELECT LastName AS Family, FirstName AS Name From Persons
JOIN:
通過應用兩個表的表示式,從兩個表中獲取資料:
誰訂購了什麼產品:
SELECT Person.LAstName ,Person.FristName,Orders.OrderNo
FROM Person,Oders
WHERE Person,Id_P = Orders.Id_p
下面使用JOIN來實現
SELECT Person.LastName,Perosns.FirstName,Oreders.Order.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_p = Orders.Id_P
OERDER BY Person.LAstName
INNER JOIN (內連線)
JOIN:如果表中至少一個匹配,側返回行。
INNER JOIN():在表中至少存在一個匹配,則返回行。
SELECT 列名 FROM 第一個表名
INNER JOIN 第二個表名 ON 表一.列名 = 第二個表名.列名
SELECT Person.LastName,Person.FirstName.Oerders.OerderNo
FROM Persons INNER JOIN Orders ON Person.Id_P = Orders.id_P
ORDER BY Person.LastName
LEFT JOIN:即使右表沒有匹配,也從左表返回所有行。
SELECT Person.LastName,Person.FirstName,Orders.OrderNO
FROM Perons
LEFT JOIN Orders ON Person.id_P = Orders.id_P
ORDER BY Person.LastName
ROGHT JOIN:即使左表沒有匹配,也從右表返回所有行。
SELECT Person.LastName,Persons.FirstName,Orders.OrdersNo
FROM Person
RIGHT JOIN Orders ON Person.id_P = Orders.id_P
ORDER BY Person.LastName
FULL JOIN:只要其中一個表中存在匹配,就返回行。
SELECT Persons.LastName,Persons.FirstName,Orders.OrderNo
FROM Prersons
FULL JOIN Orders
ON Persons.id_p = Orders.id_P
ORDER BY Persons.LastName
UNION
操作用於合併兩個或多個SELECT語句的結果集。
UNION內部的SELECT語句必須擁有相同數量的列。
列也必須擁有相似的資料型別。
同時每條SEECT語句中的列的順序必須相同。
UNION 預設選取不同的值
UNION ALL 允許 重複的值
SELECT 列名 FROM 表名
UNION
SELECT 列名 FROM 表名
SELECT e_NAME Emplyees_China
UNION
SELECT E_NAME FROM Emplyees_USA
SELECT INTO
SELECT INTO 語句從一個表中選取據插入到另外的表中
SELECT INTO 語句常用於建立表的數備份檔案或者用於對記錄進行存檔
SELECT * INTO new_table_name FROM old_table_name
SELCT colum_name INTO new-table_name FROM old_tableanme
向另一個數據庫中拷貝
SELECT * INTO Persons IN 'Bakcup.mdb' FROM Persons
帶有WHERE子句
SELECT LastName,FirstName INTO Persons_backup
FROM Peronss WHERE City='Beijing'
被連線的表
SELEST Persons.LastName,Orders.OrdersNo
INTO Person_Orders_Backup
FROM Persons
INNER JOIN Orders
ON Persons.Id_P=Orders.id_p
CREATE DATABASE
用於建立資料庫
CREATE DATABASE my_db
CREATE TABLE tablename
( 列名 資料型別,列名 資料型別,....)