Oracle学习总结(四)——SELECT检索

一、基本语法

语法结构:
SELECT
[DISTINCT|ALL]
select_list
FROM table_list
[where_clause]
[group_by_clause]
[HAVING condition]
[order_by_clause]

说明:
[DISTINCT|ALL]:是否去除列表中的重复记录
select_list:需要查询的字段列表
FROM:关键字,用于表示数据来源

select_list具体语法:
{
    *|
    {
        [ schema. ]{ table | view } .*
        | expr [ [ AS ] c_alias ]
    }
}

说明:
schema:模式名称
table | view:表或视图。
Expr:表达式。
C_alias:别名。

二、基础用法

获取指定字段的数据
SELECT a1,b1.c1 FROM table_name;
获取所有字段数据
SELECT * FROM table;
  1. 此处不建议使用*进行编码,只建议日常操作、测试使用。原因如下:
    1.查询明确的列比使用通配符*效率高
    2.只返回必要的列的数据可以减少网络消耗
    3.使用通配后,表中新增字段程序可能异常
使用别名
SELECT a1 AS 壹,a2 AS贰,a3 叁 FROM table_name;

AS关键字可省略,加空格即可。

使用表达式
SELECT a1,a2,a3 || ‘*’ || 100 || ‘=’ || a3*100 FROM table_name;

||代表连字符,类似JAVA中的 +

使用函数作为查询的字段
SELECT a1,a2,subStr(a3,1,6) AS 截取后的字符串 FROM table_name;
去除重复
SELECT distinct(a1) FROM table_name;

三、结果排序

语法:
ORDER BY
{expr | postion | c_alias}
[ASC | DESC]
[NULLS FIRST | NULLS LAST]
    [ , {expr | position | c_alias}
        [ASC | DESC]
        [NULLS FIRST | NULLS LAST]
    ]...

说明:
ORDER BY:排序关键字
expr:表达式
position:表中列的位置
c_alias:别名
[NULLS FIRST | NULLS LAST]:空值处理方式

升序或降序
SELECT a1,a2,a3 FROM table_name ORDER BY a1 DESC;

最后加了DESC为降序,加ASC为升序,默认不加为升序

NULL处理
SELECT a1,a2,a3 FROM table_name ORDER BY a1 NULLS FIRST;

NULLS FIRST即为NULL值排在首位,NULLS LAST即为NULL值排在末尾。

使用别名作为排序手段
SELECT a1,a2,a3 排序 FROM table_name ORDER BY 排序;
使用表达式作为排序手段
SELECT a1,a2,a3 FROM table_name ORDER BY a1*a2;

表达式中NULL和其他值相乘结果为NULL

使用字段位置排序
SELECT a1,a2,a3 FROM table_name ORDER BY 3;

即意为按a3排序

使用多个字段排序
SELECT a1,a2,a3 FROM table_name ORDER BY a1 ASC,3 DESC;

当第一个字段内值相同时会按第二个条件排序

四、WHERE子句

WHERE子句用于定义查询条件
操作符:
  • 关系操作符<、<=、>、>=、=、!=、<>
  • 比较操作符:IS NULL:如果操作数为NULL则返回true
  • 比较操作符:LIKE:模糊比较字符串
  • 比较操作符:BETWEEN..AND…:验证值是否在范围内
  • 比较操作符:IN:验证操作数是否属于设定的集合
  • 逻辑操作符:AND
  • 逻辑操作符:OR
  • 逻辑操作符:NOT

五、GROUP BY子句

格式:
GROUP BY
    { expr
    | { ROLLUP | CUBE } {{expr  [, expr ]...}}
}

说明:
Expr:通常为列名
ROLLUP | CUBE:可以返回小计和总计
b)GROUP BY不许出现在WHERE中,但是可以出现在WHERE后面,来处理WHERE过滤后的数据。

六、HAVING子句

通常与GROUP BY一起使用,限制搜索条件。
SELECT a1,a2,a3,AVG(a4) FROM table_name GROUP BY a1 HAVING AVG(a4)>1000

七、子查询

此处略去子查询的基本使用方式,仅说明量化比较关键字用法:

  • ANY:表示满足子查询结果的任何一个。和<、<=搭配,表示小于等于列表中的最大值,大于号反之。
  • SOME:基本同上。
  • ALL:表示满足子查询所有结果。和<、<=搭配,表示小于等于列表中的最小值,大于号反之。
  • 例子:
SELECT a1,a2,a3 FROM table_name WHERE a1< ANY(SELECT b1 FROM table_name)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值