Sql语句的一些事(一)

(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 510;查看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

原表:

IdLastNameFirstNameAddressCity
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

 

 结果集:

 

IdLastNameFirstNameAddressCity
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_PLastNameFirstNameAddressCity
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

"Orders" 表:

Id_OOrderNoId_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

结果:

LastNameFirstNameOrderNo
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

结果:

LastNameFirstNameOrderNo
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

结果:

LastNameFirstNameOrderNo
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

结果:

 

LastNameFirstNameOrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678
Bush George  
    34764
posted @ 2018-09-20 21:21  凉月缘  阅读(251)  评论(0编辑  收藏  举报
Live2D //博客园自带,可加可不加