欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Sql语句的一些事(一)

程序员文章站 2023-11-08 23:57:16
(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