博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sql语句的一些事(一)
阅读量:6611 次
发布时间:2019-06-24

本文共 2863 字,大约阅读时间需要 9 分钟。

(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.OrderNoFROM Personswhere Person.Id_P = Order.Id_PORDER BY Persons.LastName

使用内连接时:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsINNER JOIN OrdersON Persons.Id_P=Orders.Id_PORDER 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.OrderNoFROM PersonsLEFT JOIN OrdersON Persons.Id_P=Orders.Id_PORDER 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.OrderNoFROM PersonsRIGHT JOIN OrdersON Persons.Id_P=Orders.Id_PORDER 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.OrderNoFROM PersonsFULL JOIN OrdersON Persons.Id_P=Orders.Id_PORDER BY Persons.LastName

结果:

 

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678
Bush George  
    34764

转载于:https://www.cnblogs.com/liangyueyuan/p/9683403.html

你可能感兴趣的文章
IT服务管理中的知识库建设
查看>>
【Lucene】Lucene通过CustomScoreQuery实现自定义评分
查看>>
linux 内核网络,数据接收流程图
查看>>
我的友情链接
查看>>
在windows下与linux虚拟机进行文件共享
查看>>
php 图形用户界面GUI 开发
查看>>
正则表达式详解
查看>>
LeetCode问题5
查看>>
AIX系列------ISO挂载
查看>>
如何打开被管理员禁止的注册表编辑器
查看>>
java根据经纬度计算距离
查看>>
CF976D. Degree Set
查看>>
我的友情链接
查看>>
Nginx 在window server 2008R2上装有IIS启动不了
查看>>
Python运行效率低的原因
查看>>
NSD基础交换-子网划分
查看>>
根据供词确定谁是凶手
查看>>
AgileEAS.NET企业级敏捷软件开发平台 5.0 简介
查看>>
zabbix配置通过远程命令来发送邮件
查看>>
在接受人民币付款后 中国区App Store下载量出现井喷
查看>>