(1)LIMIT子句(MySql) LIMIT 子句用於規定要返回的記錄的數目,一般和Order By一起使用 經常用於數據的分頁查詢,但是一旦數據量一大,limit的性能就會急速下降 格式:select * from table limit m,n 其中m代表表的某一行數據,n表示的是要查找的多少 ...
(1)LIMIT子句(MySql)
----LIMIT 子句用於規定要返回的記錄的數目,一般和Order By一起使用
經常用於數據的分頁查詢,但是一旦數據量一大,limit的性能就會急速下降
格式:select * from table limit m,n 其中m代表表的某一行數據,n表示的是要查找的多少行數據,從m+1行數據開始查找
SELECT * FROM persons LIMIT 5; 查看person表中前5行的數據 SELECT * FROM persons LIMIT 5,10;查看person表的第6-15條數據 SELECT * FROM persons LIMIT 95,-1;查看person表第96-last的所有數據
(2)between
----between語句一般和and或者是not一起使用,會選取介於兩個值之間的數據範圍,可以是文本,數值或日期
格式: SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2
原表:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
4 | Gates | Bill | Xuanwumen 10 | Beijing |
SELECT * FROM Persons WHERE LastName BETWEEN 'Adams' AND 'Carter
結果集:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
重要事項:不同的資料庫對 BETWEEN...AND 操作符的處理方式是有差異的。某些資料庫會列出介於 "Adams" 和 "Carter" 之間的人,但不包括 "Adams" 和 "Carter" ;某些資料庫會列出介於 "Adams" 和 "Carter" 之間並包括 "Adams" 和 "Carter" 的人;而另一些資料庫會列出介於 "Adams" 和 "Carter" 之間的人,包括 "Adams" ,但不包括 "Carter" 。
(3)Inner join、Left join、Right join和Full join
----Inner join和join是一樣的,也稱為內連接,表示在表中存在至少一個匹配時,返回行數據,和where的使用效果是相同的
原表:
"Persons" 表:
Id_P | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
"Orders" 表:
Id_O | OrderNo | Id_P |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 1 |
4 | 24562 | 1 |
5 | 34764 | 65 |
當我們想要查找出所有有訂單信息的客戶時:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons where Person.Id_P = Order.Id_P ORDER BY Persons.LastName
使用內連接時:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons INNER JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastNam
結果:
LastName | FirstName | OrderNo |
---|---|---|
Adams | John | 22456 |
Adams | John | 24562 |
Carter | Thomas | 77895 |
Carter | Thomas | 44678 |
----Left Join:左連接的結果是除了匹配條件的數據還包含左邊表中的所有數據
Right Join:右連接的結果是除了匹配條件的數據還包含右邊表中的所有數據
Full Join:只要其中某個表存在匹配,FULL JOIN 關鍵字就會返回行,就是不管左右兩邊的表的行內是否存在數據
這三者統稱為外鏈接
當我們想要查找所有人的訂單情況時:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons LEFT JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName
結果:
LastName | FirstName | OrderNo |
---|---|---|
Adams | John | 22456 |
Adams | John | 24562 |
Carter | Thomas | 77895 |
Carter | Thomas | 44678 |
Bush | George |
當我們想要查找所有的訂單情況以及訂單的客戶信息時:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons RIGHT JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName
結果:
LastName | FirstName | OrderNo |
---|---|---|
Adams | John | 22456 |
Adams | John | 24562 |
Carter | Thomas | 77895 |
Carter | Thomas | 44678 |
34764 |
當我們想要查找所有人包括所有的訂單信息情況時;
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons FULL JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName
結果:
LastName | FirstName | OrderNo |
---|---|---|
Adams | John | 22456 |
Adams | John | 24562 |
Carter | Thomas | 77895 |
Carter | Thomas | 44678 |
Bush | George | |
34764 |