oracle中sql查询

  • 一、查询
      • 别名
      • 拼接
      • nvl替换null值
      • distinct数据去重
      • 修改列宽(控制sqlplus)
    • 2.排序order by
    • 3.查询条件where
    • 3.函数
      • 单行函数
      • 聚合函数
      • 转换函数
      • 哑表dual
      • 日期函数
    • 4. 多表查询
      • 笛卡尔积
      • 等值连接
      • 不等值连接
      • 外连接(左外连接、右外连接、全连接)
      • 自连接
    • 查询结果集操作
      • union 并集
      • union all 结果集一起显示
      • minus 第一个结果集出去第二个结果集相同的部分
      • intersect 去交集
    • 5.聚合函数group by

一、查询

别名

    列名  别名      表名
select BOOKID id from BOOKS;

或者

     列名     别名     表名
select BOOKID as id from BOOKS;

拼接

               ||'拼接字段'||
select BOOKNAME ||'spe_char'||BOOKNAME from BOOKS;

或者不加中间字符

             ||
select BOOKNAME||BOOKNAME from BOOKS;

nvl替换null值

           nvl(选择字段,null替换的值)
select BOOKID,nvl(BOOKCOUNTS,6) from BOOKS;

例如上述,BOOKCOUNTS中的null值变为6

distinct数据去重

select distinct BOOKNAME,BOOKCOUNTS from BOOKS;

只能放在select关键词后面

修改列宽(控制sqlplus)

     列名  格式化  a长度
column BOOKNAME format a15;
或
col BOOKNAME format a15;
查询:
select BOOKNAME from BOOKS;清楚格式的设置:
clear col; 或 clear column;

2.排序order by

select *
from BOOKS列名正序          列名倒叙
order by BOOKCOUNTS asc , BOOKID desc;

先通过第一个排序,如果有数值相同则通过第二个排序。

3.查询条件where

                         条件
select * from BOOKS where BOOKCOUNTS>2;

BETWEEN AND

select * from BOOKS where BOOKCOUNTS BETWEEN 4 AND 6;

in()

select * from BOOKS where BOOKID in(1,3,5);

like

 % 0到多个字符 _ 通配一个符
select *  from BOOKS where BOOKNAME like 'J%';\ 转义字符 需要escape '\'
select * from BOOKS where BOOKNAME like
'\\%' escape '\';

is null 或者 is not null 在字段后加

select * from BOOKS where BOOKNAME is not null;

and or 连接条件 ‘或’ ‘与’

3.函数

单行函数

① upper()英文大写
② LOWER(X)X转换成小写
③ LENGTH(X)返回X的长度
④ INITCAP(X) X首字母转换为大写
⑤ SUBSTR(X,start[,length]) ,返回X的字串,从start处开始,截取length个字符,缺省length,默认到结尾
⑥ REPLACE(X,old,new) ,在X中查找old,并替换成new

select upper(BOOKNAME) from BOOKS;

聚合函数

avg() 平均 COUNT(*)数值

select avg(BOOKCOUNTS) from BOOKS;

转换函数

TO_CHAR ,把一个数字或日期数据转换为字符
TO_NUMBER ,把字符转换为数字
TO_DATE ,把字符转换为日期

select to_number('100') from dual;
select to_char(sysdate,'yy-mm-dd hh:mi:ss') from dual;

哑表dual

select  1+1 from dual;

日期函数

SQL> alter session set nls_language='simplified chinese';
select sysdate from dual;

4. 多表查询

笛卡尔积

假设集合中 A={a,b} B={1,2},他们的笛卡尔积为:
{(a,1),(a,2),(b,1),(b,2)}

select * from BOOKS,T_USER;

等值连接

select * from BOOKS,T_USER where BOOKID=ID;

不等值连接

select * from BOOKS,T_USER where BOOKID>ID;

外连接(左外连接、右外连接、全连接)

左外连接

select BOOKCOUNTS,AGE from BOOKS left outer join T_USER
on BOOKID=ID;

将左边BOOKS表中null的书籍也显示了出来

可以简写成这样
select BOOKCOUNTS,AGE
from BOOKS,T_USER
where BOOKID=ID(+);

右外连接

select BOOKCOUNTS,AGE from BOOKS right outer join T_USER
on BOOKID=ID;
或
select BOOKCOUNTS,AGE from BOOKS,T_USER
where BOOKID(+)=ID;

我们想把s_dept表中的多出的一个数据st查询并显示出来,那么就在另一张表上面添加一个加号(+)

全连接

select BOOKCOUNTS,AGE from BOOKS full outer join T_USER
on BOOKID=ID;

自连接

select B1.BOOKID,B2.FUID BABABOOK
FROM BOOKS B1,BOOKS B2
WHERE B2.BOOKID=B1.BOOKID

查询结果集操作

union 并集

union all 结果集一起显示

minus 第一个结果集出去第二个结果集相同的部分

intersect 去交集

5.聚合函数group by

select 字段1,字段2
from 表
where 条件
group by 分组条件
having 分组筛选条件
order by 排序条件

select语句执行顺序:
1. from子句,组装来自表的数据,有可能是多张表 2. where子句,基于指定的条件对记录行进行筛选
3. group by子句,将数据划分为多个分组
4. 使用聚合函数对没个小组中的数据进行计算
5. having子句,进行条件筛选,这里可以使用聚合函数的计算结果
6. 计算所有的运算表达式,主要是select部分
7. order by子句,对结果集进行排序
聚合函数能够出现的位置:

  1. select后面
  2. having后面
  3. order by后面

oracle中sql查询相关推荐

  1. oracle中sql查询增加自增序列号

    如果我们需要在oracle中查询一系列数据,但是需要对查询出来的数据有一个自增的序列号,方便后续的处理的话,我们可以利用rownum 比如有table A 我们可以这么写sql select a.*, ...

  2. Oracle中SQL查询字段值为空时,指定默认值

    一.实现效果 实现设备字段有值显示[加工]否则显示[未加工] 二.Oracle中NVL 2.1.NVL函数功能介绍 NVL 是Oracle的函数,功能是实现空值的转换,如果fieldName为NULL ...

  3. oracle全角括号忽略,Oracle中SQL查询语句日文不区分全角/半角

    dfd 1.ORACLE自带的函数可以转换标点符号: 2.fn_knachg函数为转换全半角函数 参数:pKna为要转换的字符串: pPara:1为半角 → 全角: 2为全角 → 半角. string ...

  4. oracle nvarchar2问题,oracle中nvarchar2查询结果显示总是少一位

    oracle 中对查询出来的数据进行切割.截取等操作 oracle 中对查询出来的数据进行切割.截取等操作 最近遇到一个问题,需要把一个带有,的字符串拆分成多行.通过查询资料,这个操作需要使用以下2个 ...

  5. 查询oracle 表达小,oracle中sql语句小练习(使用连接查询)

    假设A(m,n,p),B(m,n,p) --1.A表中有某一项m而B表中没有 使用左连接查询: select a.* from A a left join B b on a.m=b.m where b ...

  6. oracle12测试骤,Oracle中SQL语句解析的步骤

    我们都知道在Oracle中每条SQL语句在执行之前都需要经过解析,这里面又分为软解析和硬解析.那么这两种解析有何不同之处呢?它们又分别是如何进行解析呢?Oracle内部解析的步骤又是如何进行的呢?下面 ...

  7. oracle分组聚合查询,Oracle中分组查询group by用法规则解析

    本篇文章小编给大家分享一下Oracle中分组查询group by用法规则解析,文章介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. Oracle中group by ...

  8. Oracle中如何查询CLOB字段类型的内容

    2019独角兽企业重金招聘Python工程师标准>>> Oracle中如何查询CLOB字段类型的内容 [sql] view plain copy select * from tabl ...

  9. 【DB笔试面试612】在Oracle中,查询转换包含哪些类型?

    ♣题目 部分 在Oracle中,查询转换包含哪些类型? ♣答案部分 在Oracle数据库中,用户发给Oracle让其执行的目标SQL和Oracle实际执行的SQL有可能是不同的,这是因为Oracle可 ...

最新文章

  1. GOOGLE域名存在漏洞,可以用来建立钓鱼站点(目前已临时被封闭)
  2. sed 正则表达式【MAC地址】GLPI转换华为交换机MAC格式
  3. 计算机精英协会考核题 —— 第三题:斐波那契数
  4. 检查Java测试中发生了什么
  5. ES6个人小手册,走过路过不要错过。。。。。
  6. 安装db2 提示不是有效的win32应用程序?
  7. 【C#】使用OWIN创建Web API
  8. 下划线小写字母转大写
  9. C语言dtoc函数,VFP数据库程序设计基础课后作业(二)参考答案(VFP函数表达式练习题--答案)...
  10. 用PS将照片背景变成白色
  11. 告诉你一个真实的Google
  12. studio无法重命名(can not rename root module)
  13. 三次埃尔米特插值一阶导数的求法
  14. B站季报图解:营收10.8亿同比增48% 用户增长超预期
  15. Python做接口测试生成测试报告失败
  16. WebDAV之葫芦儿·派盘 + CloudBeats
  17. 在Ubuntu中使用雷电3外接显卡(eGPU)进行深度学习
  18. vs2017 fatal error LNK1104: 无法打开文件“\.obj”
  19. 关于Visual Studio订阅(原MSDN订阅)中无法激活Office 365权益的解决方法(仅适用于MVP)
  20. mtp usb驱动 v4.9 最新版

热门文章

  1. 云开发谁是卧底线下小游戏发牌助手微信小程序源码-亲测可用
  2. 香蕉派 Banana pi BPI-R2 开源智能路由器 MTK 7623N 方案设计
  3. Learning to Rank基于pairwise的算法(一)——Ranking SVM、MHR、IRSVM
  4. 初探Python声音处理(Demo)
  5. ipv4和ipv6与int互转通用处理方式
  6. qt 飞扬青云_R语言学习——实例标识符
  7. 华为 2017 实习生招聘笔试题
  8. putty之pscp用法
  9. linux shell 中数组的定义和for循环遍历
  10. RuntimeError: CUDA error: CUBLAS_STATUS_NOT_INITIALIZED when calling `cublas‘