iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Oracle SQL语言应用基础
  • 418
分享到

Oracle SQL语言应用基础

2024-04-02 19:04:59 418人浏览 八月长安
摘要

数据操纵 主要是对表或视图进行插入(insert),修改(update),删除(delete)操作. 分组统计查询 使用聚合函数需要注意的事项: 1.count(*)统计所有的记录数,cou

数据操纵

主要是对表或视图进行插入(insert),修改(update),删除(delete)操作.

分组统计查询

使用聚合函数需要注意的事项:

1.count(*)统计所有的记录数,count(字段名)字段值为null时列不统计

2.聚合函数的出现顺序

3.统计不重复的行信息distinct

[* 字符函数 *]

1.字符串连接:concat(ch2,ch3)

返回字符串ch2与字符串ch3连接的字符串

如:

select concat('hello ','world!') from dual;   //hello world!

select 'hello '||'world!' from dual;   //hello world!

2.字符串首字母大写

initcap(char) :将字符串char中每个单词的首字母大写,其他字母小写

如: select initcap('hello,world') from dual ; //Hello,World 可以使用任何分隔符,进行分隔

3.字符索引位置:instr(ch2,ch3,[m[,n]])

返回指定字符串ch3在字符串ch2中的位置,m起始搜索位置,n表示ch3在ch2出现的次数

如:

select * from emp where instr(ename,'C')>0 ; //从1开始找

select * from emp where instr(ename,'c')=2 ; //查询出ename下标为2为'C'的员工

4.计算字符串的长度:length(char)

5.字符的大小写转换:

lower(char):把字符串char转换为小写

upper(char):把字符串char转换为大写

6.替换字符串:replace(ch2,ch3,ch4)

把字符串ch2中的字符串ch3替换成字符串ch4

如:select replace(sal,sal,'*****') from emp ; //把emp表中的员工的工资替换为*****


7.截取字符串:substr(ch,起始位置,截取多少位)

如:select substr('hello world',6,5) from dual ; //world

注:下标是从1开始的

8.去掉字符串空格

trim(char):去除两边的空格

ltrim(char,[ch]):去掉字符串左空格或去掉左边包含ch的字符串

select ltrim('abcdef','abc') from dual ;-->def,去除char左边包含abc的字母

rtrim(char,[ch]):去掉字符串右空格或去掉右边包含ch的字符串

select rtrim('abcdef','abc') from dual ;-->abc,去除char左边包含def的字母

9.instr(char1,char2,[m[,n]]) : 返回char2在char1中的位置,m表示起始索引位置,n表示cha2在char1出现的次数

select instr('abcde','d') from dual ;//下标从1开始查找,返回d所在字符串的位置,返回4

 instr(char,char,n)【在一个字符串中搜索另一个字符串,n>0从前向后,你<0从后向前】

select instr('abcabc','c') from dual;-->3

select instr('abcabc','c',-1) from dual;-->6

10.chr(n):返回ASCII码值为n的字符

select CHR('65') from dual ;//A

ASCII(char):返回制定字符的ASCII码

select ascii('A') from dual;-->65--返回A字符的ASCII码


11.lpad(char1,n[,char2]):如果char1的长度大于n,那么返回char1左边n个字符,如果n大于char1的长度,使用

char2在char1左边填充使其长度达到n

select lpad('abc',2,'dd') from dual ;//ab--如果char1小于n的长度,直接输出n对应char1中的字符

select lpad('abc',5,'dd') from dual ;//ddabc

12.RPad(char1,n[,char2]):使用char2补充在char1右侧,使char1的长度达到n,如果n小于char1的长度,截掉后面多的部分

select rpad('abc',5,'a') from dual;-->abcaa

select rpad('abc',2) from dual;-->ab

select length(rpad('abc',5)) from dual;-->5【右边加多了2个空格】

13.Translate(char1,fORM,to):用to替换form,然后用form替换char1中匹配内容

select translate('abc','ab','a') from dual;--->ac

[日期函数]

1.dbtimezone:返回数据库所在的时区

select dbtimezone from dual ;

2.extract(depart from date) :从日期date中获取depart对应部分的内容,depart的取值可以有:

year,month,day,hour,minute,second,timezone_hour,timezone_minute

timezone_region,timezone_abbr

select extract(year from sysdate) from dual ;//2016

3.add_months(d,n) :返回日期d添加n个月所对应的日期时间,n为正数表示d之后的日期,n为负数表示d之前的日期

select add_months(sysdate,2) from dual ; //今天是2016-7-31日,加两个月,那么就是2016-9-30日

select add_months(sysdate,-1) from dual ; //今天是2016-8-1日,-1代表上一个月,即是2016-7-1日

4.next_day(日期,星期几):

                 参数说明:

                          星期几:可以使用,星期日-星期六

可以使用1-7,1代表星期日

select next_day(sysdate,'星期一') from dual ;

select next_day(sysdate,'星期二') from dual ;

select next_day(sysdate,'星期三') from dual ;

select next_day(sysdate,'星期四') from dual ;

select next_day(sysdate,'星期五') from dual ;

select next_day(sysdate,'星期六') from dual ;

select next_day(sysdate,'星期日') from dual ;


select next_day(sysdate,1) from dual ;

select next_day(sysdate,2) from dual ;

select next_day(sysdate,3) from dual ;

select next_day(sysdate,4) from dual ;

select next_day(sysdate,5) from dual ;

select next_day(sysdate,6) from dual ;

select next_day(sysdate,7) from dual ;


5.last_day(d):返回d所在月份的最后一天

select last_day(sysdate) from dual ; //获取当前月份的最后一天

6.trunc(d,[fmt]):返回截断日期时间数据

select trunc(sysdate,'yy') from dual ;//返回当前年份的第一天

select trunc(sysdate,'mm') from dual ;//返回当前月份的第一天

7.months_between(d1,d2):返回d1和d2两个日期之间相差的月数

select abs(months_between(sysdate,add_months(sysdate,3))) from dual ;

假如今天是2016-8-1,加3个月,那么变成了2016-11-1,所以相差3个月

8.round(d[,fmt]):返回日期d的四舍五入结果

select round(sysdate) from dual ;//比如今天是2016-8-1日,今日已过半了,那么久是2016-8-2日了

9.to_date('字符串格式',date日期格式):把字符串格式的日期转换为指定格式的date日期

select to_date('2016-8-1','yyyy-mm-dd') from dual ; 

10.to_char(date,'字符串格式'):把date格式的日期,转换为指定格式的字符串日期

select to_char(sysdate,'yyyy-mm-dd') from dual ;

11.systimestamp:返回timesamp with time zone 类型的系统日期和时间

select to_char(systimestamp,'yyyy-mm-dd hh34:mi:ssxff6') from dual;

注:xff6中的6表示保留多少位

12.soundex(char):用来比较发音相同的字符串

[数值函数]

1.trunc(m[,n]):对m进行截取操作,不考虑四舍五入

select trunc(108.123) from dual ; //-->108,当省略时,表示截取数值的整数部分

select trunc(108.123,2) from dual ; //-->108.12,当n>0时,表示截取到小数点右边第n位

select trunc(1082.123,-1) from dual ; //-->1080,当n<0时,表示截取到小数点左边第n位,n位以0代替

2.abs(n):返回n的绝对值

3.sqrt(n):返回n的平方根

selec


t sqrt(4) from dual ;   //2

 

4.mod(m,n):返回m除以n的余数

select mod(4,2) from dual ;  //0

 

5.floor(n):返回小于等于n的最大整数

select floor(3.22) from dual ; //3

6.ceil(n) :返回大于等于n的最小整数

select ceil(3.22) from dual ; //4

7.power(m,n):返回m的n次方

select power(2,2) from dual ; //4

8.sign(n):判断n的正负(n>0返回1;n=0返回0;n<0返回-1)

[转换函数]

1.to_number(char[,fmt]):将特定的格式的字符串char转换为数值

[其他函数]

1.nvl(expr1,expr2):如果expr1位null,返回expr2,否则返回expr1

例:查询30号部门各个员工的编号,工资与奖金之后

select employee_id,salary+nvl(commission_pct,0)sal,department_id

from employees where department_id = 30 ;

例:查询员工编号,姓名,以及员工的经理号,如果没有经理则显示NO Manager字符串

select employee_id,first_name,last_name,

nvl(to_char(manager_id),'NO Manager') from employees

注:使用nvl函数进行空值转换处理时,一定要注意转换后的表达式的类型必须与原表达式的类型一样

2.nvl2(expr1,expr2,expr3):如果expr1位null,返回expr3,否则返回expr2

例:查询30号部门各个员工的编号,工资与奖金之后

select employee_id,salary+nvl2(commission_pct,commission_pct,0),department_id 

from employees where department_id = 30 ;

例:查询员工编号,姓名,以及员工的经理号,如果没有经理则显示NO Manager字符串

select employee_id,first_name,last_name,nvl2(to_char(manager_id),

to_char(manager_id),'NO Manager') from employees

3.nullif(expr1,expr2):如果expr1与expr2相等,返回null,否则返回expr1

4.greatest(expr1,expr2,...):返回几个表达式中的最大值

5.least(expr1,expr2,...):返回几个表达式中的最小值

6.decode(expr,search2,result1[,search2,result1,...][,default]):

返回与expr相匹配的结果,如果search!=expr,则返回result1,

如果search3=expr,则返回result2,如果不匹配,使用默认值

例:查询员工的编号,部门编号及部门描述,如果部门号为10,则部门描述为'10号部门';

如果部门号为20,则部门描述为'20号部门';否则输出'其他部门'

 select employee_id,department_id,decode(department_id,10,'10号部门',20,'20号部门',30,'30号部门','其他部门')

department from employees 

7.为了在目标列中根据不同的条件进行不同的输出,可以使用CASE语句

case expr 

when 条件 then return条件

when 条件 then return条件

else 其他 end

oracle计算时间差表达式


有两个日期数据START_DATE,END_DATE,欲得到这两个日期的时间差

(以天,小时,分钟,秒,毫秒):  

 

天:ROUND(TO_NUMBER(END_DATE - START_DATE))  

 

小时:ROUND(TO_NUMBER(END_DATE - START_DATE) * 24)  

www.2cto.com  

分钟:ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60)  

 

秒:ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60)  

 

毫秒:ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60 * 1000)

周一:Monday

周二:Tuesday

周三:Wednesday

周四:Thursday

周五:Friday

周六:Saturday

周日:Sunday

外连接:

a和b进行连接,如果要完全显示a,就在b条件上加一个(+),也就是说不带+的表完全显示

select * from emp e,dept d where e.deptno(+)=d.deptno; 

因为我们给e.deptno带上一个(+),所以d表将会被完全显示也就是dept表会被完全显示

如果左侧的表完全显示我们就说是左外联接。

比如: Select * from tab1 t,tab2 r where t.aa=r.bb(+);

如果右侧的表完全显示我们就说是右外联接。

比如: Select * from tab1 t,tab2 r where t.aa(+)=r.bb;

例:查询所有部门的总人数,占总人数比例

select d.* ,nvl2(ed.cou,ed.cou,0)人数 from dept d,(select deptno,count(empno) cou

from emp group by deptno)ed where d.deptno=ed.deptno(+);


您可能感兴趣的文档:

--结束END--

本文标题: Oracle SQL语言应用基础

本文链接: https://www.lsjlt.com/news/40438.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 解读Go语言中SQL的基础知识和应用
    本篇文章向大家介绍《解读Go语言中SQL的基础知识和应用》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。Go语言中SQL的基本概念及用法解析SQL(Structured Query Lan...
    99+
    2024-04-04
  • C语言函数调用基础应用详解
    所谓函数调用(Function Call),就是使用已经定义好的函数。函数调用的一般形式为: functionName(param1, param2, param3 ...); fu...
    99+
    2023-02-11
    C语言函数调用方式 C语言函数调用事例
  • Swift语言基础
    swift基础 swift简介xcode项目文件语法变量与常量类型安全强制类型转换 运算符控制结构if语句switch语句 循环结构数组字典函数inout传递和地址传递函数类型函数...
    99+
    2023-09-17
    swift ios
  • python语言基础
    python基础语言 注释 单行注释:# 多行注释:''' ''' 或 """ """ 数字 整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点。 长整型(long integers) - 无限大小的整数,整数最后是一个大...
    99+
    2023-01-31
    语言 基础 python
  • Sql基础语法汇总
    本篇内容介绍了“Sql基础语法汇总”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.创建数据库create...
    99+
    2024-04-02
  • 【SQL基础】SQL增删改查基本语句
    目录 1 SQL 增删改查基本语句2 select 语句2.1 select 基本语句2.2 Select .. where 语句2.3 Select .. order by 语句2...
    99+
    2023-10-04
    sql 数据库 注入 database mysql
  • SQL基础的查询语句
    目录一、基础SELECT语句1、查询指定字段3、设定别名4、常数的查询5、表达式的查询6、去重7、条件查询7.1 单条件查询7.2 多条件查询7.3 指定范围查询7.4 模糊...
    99+
    2024-04-02
  • Go语言range用法详解:掌握基础语法轻松应用
    Go语言是一门现代化的编程语言,得益于其简洁、高效和易于学习的特点,受到越来越多开发者的青睐。在Go语言中,range是一个十分常用的关键字,用于迭代数组、切片、映射、通道等数据结构。...
    99+
    2024-03-12
    应用 range 基础语法 go语言
  • JavaScript语言学习:零基础入门到实战应用
    1. JavaScript简介 JavaScript是一种高级的、通用的、基于对象的、解释型脚本语言。它最初由Brendan Eich于1995年设计,被用作网页的脚本语言,以增加网页的交互性和动态性。 JavaScript语言具有以下...
    99+
    2024-02-09
    JavaScript 编程语言 前端开发 移动端开发 桌面端开发
  • 【Python】Python语言基础(中)
    ❤️博客主页: iknow181 🔥系列专栏: Python、JavaSE、JavaWeb、CCNP 🎉欢迎大家点赞👍收藏⭐评论✍ 目录 第十章 Python的数据类型 基本数据类型...
    99+
    2023-10-18
    python 开发语言
  • Go语言的基础是什么语言?
    Go语言的基础是C语言和Pascal语言。Go语言是由Robert Griesemer、Rob Pike和Ken Thompson三位大牛联合开发的。他们在设计Go语言时,主要参考了C...
    99+
    2024-04-02
  • java语言基础学习
    个[@more@]string 类的主要方法public int length()public char charat(int index)public string tolowercase()public string toupperca...
    99+
    2023-06-03
  • php语言基础简介
    这篇文章给大家分享的是有关php语言基础简介的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的WEB站点。本教程并不...
    99+
    2023-06-17
  • Go语言基础入门应用简介及常用命令
    目录Go语言简介Go语言的主要特点【重点】Go语言应用Go语言中常用命令Go语言中可见性规则【重点】 Go语言简介 Go 是一门开源、支持并发、垃圾回收的编译型系统编程语言从 200...
    99+
    2024-04-02
  • 【SQL刷题】Day2----SQL语法基础查询
    Day2----SQL语法基础查询 博主昵称:跳楼梯企鹅 博主主页面链接:博主主页传送门 博主专栏页面连接:专栏传送门--网路安全技术 创作初心:本博客的初心为与技术朋友们相互交流,每个人的技术都存在短板,博主也是一样,虚心求教,希望...
    99+
    2023-09-03
    sql 数据库 mysql
  • oracle基础语法详解
    Oracle数据库的初步学习 数据库的安装及其配置,使用默认选项进行安装即可 oracle的几种常见客户端 Web端:https://localhost:5500/em(浏览器...
    99+
    2024-04-02
  • SQL SERVER基础语法有哪些
    这篇文章主要介绍SQL SERVER基础语法有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Struct Query Language1.3NF  a.原子性  b.不能数据冗余...
    99+
    2024-04-02
  • 【sql语句基础】——删(delete) /改(update)
    目录 删(delete)代码样例delete注意事项 改(update)代码样例update注意事项 删(delete) 代码样例 DELETE FROM goodsWHER&#...
    99+
    2023-09-13
    mysql 数据库 大数据
  • 学习Go语言的基础知识:从快速掌握基本语法到应用
    Go语言入门指南:快速掌握基本语法和应用 Go语言(又称Golang)是一种开源的编程语言,由谷歌开发。它以其简洁、高效和并发性而著称,在云计算、网络编程、系统编程等领域得到了广泛的应用。 1. 基本语法 1...
    99+
    2024-01-31
    go语言 入门指南 基本语法 网络编程
  • Go语言基础并发channel
    这篇文章主要讲解了“Go语言基础并发channel”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go语言基础并发channel”吧!为什么需要channel...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作