395
搜狐
SELECT__数据操作语言_SQL语法参考_云数据库 OceanBase-阿里云
该语句用于查询表中的内容。
基本查询
格式
SELECT
[ALL | DISTINCT]
selectexpr [AS othername] [, selectexpr ...]
[FROM table_references]
[WHERE where_conditions]
[GROUP BY group_by_list]
[HAVING search_confitions]
[ORDER BY order_list]
[LIMIT {[offset,] rowcount | rowcount OFFSET offset}]
[FOR UPDATE];
SELECT子句说明如下所示。
子句 | 说明 |
ALL | DISTINCT | 在数据库表中,可能会包含重复值。指定“DISTINCT”,则在查询结果中相同的行只显示一行;指定“ALL”,则列出所有的行;不指定时,默认为“ALL”。 |
select_expr | 列出要查询的列名,用“,”隔开。也可以用“*”表示所有列。 |
AS other_name | 为输出字段重新命名。 |
FROM table_references | 指名了从哪个表或哪些表中读取数据。(支持多表查询) |
WHERE where_conditions | 可选项,WHERE子句用来设置一个筛选条件,查询结果中仅包含满足条件的数据。where_conditions为表达式。 |
GROUP BY group_by_list | 用于进行分类汇总。 |
HAVING search_confitions | HAVING子句与WHERE子句类似,但是HAVING子句可以使用累计函数(如SUM,AVG等)。 |
ORDER BY order_list [ASC | DESC] | 用来按升序(ASC)或者降序(DESC)显示查询结果。不指定ASC或者DESC时,默认为ASC。 |
[LIMIT {[offset,] row_count |row_count OFFSET offset}] | 强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1)。 如果只给定一个参数,它表示返回记录行的最大数目,偏移量为0。 |
FOR UPDATE | 对查询结果所有行上排他锁,以阻止其他事务的并发修改,或阻止在某些事务隔离级别时的并发读取。 |
JOIN句法
JOIN连接分为内连接和外连接。外连接又分为左连接、右连接和全连接。两个表连接后,可以使用ON指定条件进行筛选。
OceanBase1.0版本里JOIN可以支持USING子句,JOIN的连接条件中必须至少有一个等值连接条件。
内连接:结果中只包含两个表中同时满足条件的行。
左连接:结果中包含位于关键字LEFT [OUTER] JOIN左侧的表中的所有行,以及该关键字右侧的表中满足条件的行。
右连接:结果中包含位与关键字[RIGHT] [OUTER] JOIN右侧的表中的所有行,以及该关键字左侧的表中满足条件的行。
全连接:结果中包含两个表中的所有行。
集合操作
OceanBase中的集合操作主要包括UNION、EXCEPT和INTERSECT。
UNION句法
UNION用于合并两个或多个SELECT语句的结果集。使用UNION需要注意以下几点:
UNION内部的SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条SELECT语句中的列的顺序必须相同。
默认地,UNION操作符选取不同的值。如果允许重复的值,请使用UNION ALL。
UNION 结果集中的列名总是等于UNION中第一个SELECT语句中的列名。
UNION指令的目的是将两个或多个SELECT语句的结果合并起来。从这个角度来看,UNION跟JOIN有些类似,因为这两个指令都可以由多个表格中撷取资料。但是UNION只是将两个结果联结起来一起显示,并不是联结两个表。
EXCEPT句法
EXCEPT用于查询第一个集合中存在,但是不存在于第二个集合中的数据。
INTERSECT句法
INTERSECT用于查询在两个集合中都存在的数据。
DUAL虚拟表
DUAL是一个虚拟的表,可以视为一个一行零列的表。当我们不需要从具体的表来取得表中数据,而是单纯地为了得到一些我们想得到的信息,并要通过SELECT完成时,就要借助一个对象,这个对象就是DUAL。一般可以使用这种特殊的SELECT语法获得用户变量或系统变量的值。
当SELECT语句没有FROM子句的时候,语义上相当于FROM DUAL,此时,表达式中只能是常量表达式。
格式
SELECT
[ALL | DISTINCT]
select_list
[FROM DUAL [WHERE where_condition]]
[LIMIT {[offset,] rowcount | rowcount OFFSET offset}];
SELECT…FOR UPDATE句法
格式
SELECT ... FOR UPDATE [WAIT n| NOWAIT];
其中:
WAIT子句指定等待其他用户释放锁的秒数,防止无限期的等待。
NOWAIT不等待行锁释放。
SELECT … FOR UPDATE可以用来对查询结果所有行上排他锁,以阻止其他事务的并发修改,或阻止在某些事务隔离级别时的并发读取。即使用FOR UPDATE语句将锁住查询结果中的元组,这些元组将不能被其他事务的UPDATE,DELETE和FOR UPDATE操作,直到本事务提交。
注意,目前OceanBase实现有如下限制:必须是单表查询。
例如:
SELECT * FROM a FOR UPDATE;
IN和OR
OceanBase支持逻辑运算“IN”和“OR”。
最后更新:2016-11-24 11:23:47
上一篇:
DELETE__数据操作语言_SQL语法参考_云数据库 OceanBase-阿里云
下一篇:
用户及权限管理__数据库管理语言_SQL语法参考_云数据库 OceanBase-阿里云
类型1:图片小文件加速__用户指南_CDN-阿里云
监控报警__控制台使用指南_消息队列 MQ-阿里云
查询交换机列表__交换机相关接口_API 参考_云服务器 ECS-阿里云
GetShipperStatus__日志库相关接口_API-Reference_日志服务-阿里云
2.1 数据恢复至7天内任意时间点__2. RDS最佳实践_数据库RDS 体验_体验馆-阿里云
序幕拉开:阿里云晋升全球云计算顶级俱乐部
将实例加入安全组__实例相关接口_API 参考_云服务器 ECS-阿里云
大流量处理方法__网站访问异常_技术分享_云虚机主机-阿里云
业务风控Android/iOS使用说明__使用手册_数据风控-阿里云
健康检查的相关配置,是否有相对合理的推荐值?__健康检查_技术运维分享_负载均衡-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云