Select语句中各种子句的执行顺序为:
Where->group by->having->order by

字符型函数

· RPAD和LPAD

rpad('string',l,'add')

用字符串 add 在字符串右边进行补全,新的字符串长度为l

lpad('string',l,'add')

用字符串 add 在字符串左边进行补全,新的字符串长度为l

SQL> select rpad('abc',20,'d') from dual;
RPAD('ABC',20,'D')
abcddddddddddddddddd SQL> select lpad('abc',20,'d') from dual;
LPAD('ABC',20,'D')
dddddddddddddddddabc

· concat

concat('str1','str2')

连接字符串(任何数据库中都可使用)

'str1'||'str2'

连接字符串(Oracle特有)

SQL> select concat('abc','efg') from dual;
abcefg
SQL> select 'abc'||'a' from dual;
abca

·LOWER,UPPER和INITCAP

lower('str')

转小写字母

upper('str')

转大写字母

initcap('str')

首字母变大写,其他字母转小写

SQL> select lower(ename) from emp;
smith
allen
ward
jones
martin
blake
clark
scott
king
turner
adams
james
ford
miller

·LENGTH

length('str')

求字符串长度

·SUBSTR

substr('str',n,m)

从第n个字符开始,截取长度为m的子串

SQL> select substr('akegdake',3,3) from dual;
egd

·LTRIM和RTRIM

ltrim('str1','str2')

'str2’是截断集
从左往右逐个字符检查,剔除str1中属于截断集的字符,直到读取到str1中不属于截断集的字符,输出截断后的字符。

rtrim('str1','str2')

'str2’是截断集
从右往右逐个字符检查,剔除str1中属于截断集的字符,直到读取到str1中不属于截断集的字符,输出截断后的字符。

截断集缺省,默认为空格

SQL> select ltrim('abcdefg','bagf') from dual;
cdefgSQL> select rtrim('abcdefg','bagf') from dual;
abcde

·INSTR

instr('str1','str2')

返回str2在str1中的第一个位置
返回“0”表示查询不到

SQL> select instr('abcdefg','bcx')from dual;INSTR('ABCDEFG','BCX')
----------------------0SQL> select instr('abcdefg','bc')from dual;INSTR('ABCDEFG','BC')
---------------------2

·CHR

chr(n)

打印对应ASCII码(并非所有都可以打印,例如控制字符)

SQL> select chr(78) from dual;CH
--
N

·REPLACE

replace(str,s1,s2)

将字符串str中的s1(若存在)替换成s2

SQL> select ename,replace(ename,'S','*') from emp;ENAME                REPLACE(ENAME,'S','*
-------------------- --------------------
SMITH                *MITH
ALLEN                ALLEN
WARD                 WARD
JONES                JONE*
MARTIN               MARTIN
BLAKE                BLAKE
CLARK                CLARK
SCOTT                *COTT
KING                 KING
TURNER               TURNER
ADAMS                ADAM*
JAMES                JAME*
FORD                 FORD
MILLER               MILLER

·TRANSLATE

translate(str,str1,str2)

遍历字符串str,将其存在的str1中的字符用对应位置str2中的字符替换

SQL> select ename,translate(ename,'S','*') from emp;ENAME                TRANSLATE(ENAME,'S','*')
-------------------- --------------------------------------------------------------------------------
SMITH                *MITH
ALLEN                ALLEN
WARD                 WARD
JONES                JONE*
MARTIN               MARTIN
BLAKE                BLAKE
CLARK                CLARK
SCOTT                *COTT
KING                 KING
TURNER               TURNER
ADAMS                ADAM*
JAMES                JAME*
FORD                 FORD
MILLER               MILLER

·SOUNDEX

sound(str)

返回字符串str的语音码
###例

SQL> select ename,soundex(ename) from emp;ENAME                SOUNDEX(
-------------------- --------
SMITH                S530
ALLEN                A450
WARD                 W630
JONES                J520
MARTIN               M635
BLAKE                B420
CLARK                C462
SCOTT                S300
KING                 K520
TURNER               T656
ADAMS                A352
JAMES                J520
FORD                 F630
MILLER               M460

进行模糊语音识别(不支持中文)

SQL> select ename from emp where soundex(ename)=soundex('skot');ENAME
--------------------
SCOTT

数值处理函数

·NVL 空值处理函数

nvl(m,n)

当m是空值时,返回n
当m非空时,返回本身

SQL> select ename,sal+nvl(comm,0) from emp;ENAME                SAL+NVL(COMM,0)
-------------------- ---------------
SMITH                            800
ALLEN                           1900
WARD                            1750
JONES                           2975
MARTIN                          2650
BLAKE                           2850
CLARK                           2450
SCOTT                           3000
KING                            5000
TURNER                          1500
ADAMS                           1100
JAMES                            950
FORD                            3000
MILLER                          1300

·CEIL,FLOOR,ROUND,TRUNC小数处理函数

ceil(n)

向上取整

floor(n)

向下取整

round(n,m)

按m位小数进行四舍五入

trunc(n,m)

按m位小数进行截断

SQL> select round(123.123823,3) from dual;ROUND(123.123823,3)
-------------------123.124SQL> select trunc(123.123823,3) from dual;TRUNC(123.123823,3)
-------------------123.123

·ABS,POWER,MOD,SQRT,EXP,LN,LOG,SIN,COS,TAN,SIGN数学运算函数

SQL> select exp(ln(2)) from dual;EXP(LN(2))
----------2
SQL> select log(2,8) from dual;LOG(2,8)
----------3

·LEAST和GREATEST

least(list)

返回列表list中的最小值

greatest(list)

返回列表list中的最大值

SQL> select least(1.90,2,8.0,-120,ln(2)) from dual;LEAST(1.90,2,8.0,-120,LN(2))
-----------------------------120
SQL> select greatest(123,58) from dual;GREATEST(123,58)
----------------123
SQL> select least('A','B','C','c','a') from dual;LE
--
A

伪列函数

·sysdate

无需参数,显示系统时间

SQL> select sysdate from dual;SYSDATE
--------------
18-5月 -20

·user

无需参数,显示当前用户

SQL> select user from dual;USER
------------------------------------------------------------
C##SCOTT

·rownum

无需参数,打印输出顺序的行号

SQL> select rownum from dual;ROWNUM
----------1

注意:有输出才赋予行号

SQL> select * from emp where rownum>3;未选定行

·rowid

无需参数,输出存储地址


```sql
SQL> select rowid,ename from emp;ROWID              ENAME
------------------ --------------------
AAAWdMAAGAAAADHAAA SMITH
AAAWdMAAGAAAADHAAB ALLEN
AAAWdMAAGAAAADHAAC WARD
AAAWdMAAGAAAADHAAD JONES
AAAWdMAAGAAAADHAAE MARTIN
AAAWdMAAGAAAADHAAF BLAKE
AAAWdMAAGAAAADHAAG CLARK
AAAWdMAAGAAAADHAAH SCOTT
AAAWdMAAGAAAADHAAI KING
AAAWdMAAGAAAADHAAJ TURNER
AAAWdMAAGAAAADHAAK ADAMS
AAAWdMAAGAAAADHAAL JAMES
AAAWdMAAGAAAADHAAM FORD
AAAWdMAAGAAAADHAAN MILLER

日期与时间相关操作函数

·TO_CHAR

to_char(时间/数字,格式码)

格式码诸如‘xxx’时,进行十进制到十六进制的进制转换

SQL> select to_char(sysdate,'yyyy-mm-dd') from dual;TO_CHAR(SYSDATE,'YYY
--------------------
2020-05-18
SQL> select to_char(128.129387,'999.99') from dual;TO_CHAR(128.12
--------------128.13
SQL> select TO_CHAR(123,'$99,999.9') from dual;TO_CHAR(123,'$99,999
--------------------$123.0
SQL> select to_char(123,'xxx') from dual;TO_CHAR(
--------7b
SQL> select to_char(sysdate,'yyyy-mm-dd--hh-mi-ss') from dual;TO_CHAR(SYSDATE,'YYYY-MM-DD--HH-MI-SS')
----------------------------------------
2020-05-18--08-19-42

△to_char函数返回中文年月日日期格式

SQL> select to_char(sysdate, 'yyyy"年"mm"月"dd"日" hh24"时"mi"分"ss"秒"') from dual;TO_CHAR(SYSDATE,'YYYY"年"MM"月"DD"日"HH24"时"MI"分"SS"秒"')
------------------------------------------------------------------
2020年05月22日 09时49分24秒SQL> select to_char(sysdate, 'yyyy"年"monthdd"日" hh"时"mi"分"ss"秒"') from dual;TO_CHAR(SYSDATE,'YYYY"年"MONTHDD"日"HH"时"MI"分"SS"秒"')
------------------------------------------------------------------------
2020年5月 22日 09时49分52秒SQL> select to_char(to_date('20150109', 'yyyy-mm-dd'), 'yyyy"年"monthdd"日"') from dual;TO_CHAR(TO_DATE('20150109','YYYY-MM-DD')
----------------------------------------
2015年1月 09日SQL> select to_char(sysdate, 'fmyyyy"年"mm"月"dd"日" hh24"时"mi"分"ss"秒"') from dual;TO_CHAR(SYSDATE,'FMYYYY"年"MM"月"DD"日"HH24"时"MI"分"SS"秒"')
------------------------------------------------------------------
2020年5月22日 9时50分10秒

·TO_DATE

作用与to_char相反

SQL> select to_date('20200518','yyyymmdd') from dual;TO_DATE('20200
--------------
18-5月 -20

·add_months和last_day

add_months(date,n)

输出日期date加一个月的日期,若超出这个月的最大日期则显示最后一天

last_day(date)

显示这个日期的最后一天

SQL> select add_months(to_date(20200131,'yyyymmdd'),1) from dual;ADD_MONTHS(TO_
--------------
29-2月 -20SQL> select last_day(sysdate) from dual;LAST_DAY(SYSDA
--------------
31-5月 -20

·months_between

months_between(date1.date2)

计算日期1与日期2之间相差的月份数

SQL> select months_between(sysdate,hiredate) from emp;MONTHS_BETWEEN(SYSDATE,HIREDATE)
--------------------------------473.059833470.963059470.898542469.543704463.704994468.575962467.317897399.834026462.059833464.350155397.543704461.511446461.511446459.866284

聚组 Group by子句

聚组表达式,主要用于分组,所有聚组表达式相同的数据分为一组。跟在select语句的后面。
如果select语句中有group by子句,则出现在select后面的只能是聚组表达式和聚组函数。

以下介绍几种聚组函数

·avg()

求平均值。

SQL> select deptno,avg(sal) from emp group by deptno;DEPTNO   AVG(SAL)
---------- ----------30 1566.6666720    1968.7510       1875

·sum()

sum()用于求和

SQL> select job,sum(sal) from emp group by job;JOB                  SUM(SAL)
------------------ ----------
CLERK                    4150
SALESMAN                 5600
MANAGER                  8275
ANALYST                  3000

·max()和min()

用于求最大值与最小值

SQL> select mgr,max(sal) from emp group by mgr;MGR   MAX(SAL)
---------- ----------7839       29757782       13007698       16007902        8007788       11007566       3000已选择 6 行。

·stddev()和variance()

用于求标准差和方差

SQL> select mgr,max(sal) from emp group by mgr;MGR   MAX(SAL)
---------- ----------7839       29757782       13007698       16007902        8007788       11007566       3000已选择 6 行。

·count()

count()用于统计数量。

例如

SQL> select job,count(sal) from emp group by job;JOB                COUNT(SAL)
------------------ ----------
CLERK                       4
SALESMAN                    4
MANAGER                     3
ANALYST                     1
SQL> select job,count(*) from emp group by job;JOB                  COUNT(*)
------------------ ----------
CLERK                       4
SALESMAN                    4
MANAGER                     3
ANALYST                     1
dinstinct a  过滤a重复的类型
conut (distinct a) 统计过滤后a的数量

SQL> select count(distinct job) from emp;COUNT(DISTINCTJOB)
------------------4SQL> select distinct job from emp;JOB
------------------
CLERK
SALESMAN
MANAGER
ANALYST

Having子句

having子句,用于对聚组统计的结果进行筛选。

SQL> select deptno,count(*) from emp group by deptno having count(*)>3;DEPTNO   COUNT(*)
---------- ----------30          620          4

连接

·无条件连接(笛卡尔积)

返回连接对象的所有排列组合结果。
若连接对象相同,通常需要通过别名来消除歧义以防混淆。(例如emp表语自身连接:select A.ename c1,B.ename c2 from emp A,emp B)

结果为emp内12行ename和dept内4行dname所有的排列组合结果。

SQL> select ename,dname from emp,dept;ENAME                DNAME
-------------------- ----------------------------
SMITH                ACCOUNTING
ALLEN                ACCOUNTING
WARD                 ACCOUNTING
JONES                ACCOUNTING
MARTIN               ACCOUNTING
BLAKE                ACCOUNTING
CLARK                ACCOUNTING
TURNER               ACCOUNTING
ADAMS                ACCOUNTING
JAMES                ACCOUNTING
FORD                 ACCOUNTING
MILLER               ACCOUNTING
SMITH                RESEARCH
ALLEN                RESEARCH
WARD                 RESEARCH
JONES                RESEARCH
MARTIN               RESEARCH
BLAKE                RESEARCH
CLARK                RESEARCH
TURNER               RESEARCH
ADAMS                RESEARCH
JAMES                RESEARCH
FORD                 RESEARCH
MILLER               RESEARCH
SMITH                SALES
ALLEN                SALES
WARD                 SALES
JONES                SALES
MARTIN               SALES
BLAKE                SALES
CLARK                SALES
TURNER               SALES
ADAMS                SALES
JAMES                SALES
FORD                 SALES
MILLER               SALES
SMITH                OPERATIONS
ALLEN                OPERATIONS
WARD                 OPERATIONS
JONES                OPERATIONS
MARTIN               OPERATIONS
BLAKE                OPERATIONS
CLARK                OPERATIONS
TURNER               OPERATIONS
ADAMS                OPERATIONS
JAMES                OPERATIONS
FORD                 OPERATIONS
MILLER               OPERATIONS已选择 48 行。

·有条件连接

有条件连接通常可视为,先做无条件连接,在进行筛选的操作。
实际上这种方式繁琐,一般并不是这么来做。例子是为了方便理解。

列出员工的姓名及其所在部门名称。

SQL> select ename,dname from emp,dept where emp.deptno=dept.deptno;ENAME                DNAME
-------------------- ----------------------------
CLARK                ACCOUNTING
MILLER               ACCOUNTING
FORD                 RESEARCH
SMITH                RESEARCH
ADAMS                RESEARCH
JONES                RESEARCH
JAMES                SALES
TURNER               SALES
MARTIN               SALES
WARD                 SALES
ALLEN                SALES
BLAKE                SALES已选择 12 行。

·自连接

一个表与它自己进行连接。
通常需要通过别名来消除歧义以防混淆。(例如emp表语自身连接:select A.ename c1,B.ename c2 from emp A,emp B)

select A.ename c1,B.ename c2 from emp A,emp B;
已选择 144 行。

·外连接

外连接,在连接条件的左端或者右端后面添上一个加号(左外连接与右外连接),表示左边或者右边这个值即使是空值条件依然成立。

右连接

SQL> select a.ename,b.ename from emp a,emp b2  where a.mgr=b.empno(+);ENAME                ENAME
-------------------- --------------------
FORD                 JONES
JAMES                BLAKE
TURNER               BLAKE
MARTIN               BLAKE
WARD                 BLAKE
ALLEN                BLAKE
MILLER               CLARK
SMITH                FORD
ADAMS
CLARK
BLAKE
JONES已选择 12 行。

左连接

SQL> select a.ename,b.ename from emp a,emp b2  where a.mgr(+)=b.empno;ENAME                ENAME
-------------------- --------------------SMITHALLENWARD
FORD                 JONESMARTIN
JAMES                BLAKE
WARD                 BLAKE
MARTIN               BLAKE
ALLEN                BLAKE
TURNER               BLAKE
MILLER               CLARKTURNERADAMSJAMES
SMITH                FORDMILLER已选择 16 行。

数据库原理与应用(Oracle) 笔记1 —— SQL语句和SQL函数相关推荐

  1. oracle sql语句备份数据库,用SQL语句备份SQL数据库_oracle

    备份数据库的命令是: BACKUP DATABASE test TO disk = 'c:/test' WITH FORMAT, NAME = 'Full Backup of MyNwind' 解释如 ...

  2. 基于简单sql语句的sql解析原理及在大数据中的应用

    基于简单sql语句的sql解析原理及在大数据中的应用 李万鸿 老百姓呼吁打土豪分田地.共同富裕,总有一天会实现. 全面了解你所不知道的外星人和宇宙真想:http://pan.baidu.com/s/1 ...

  3. sqlserver sql语句|经典sql语句|实用sql语句

    sqlserver sql语句|经典sql语句|实用sql语句 一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop databa ...

  4. 学习SQL语句之SQL语句大全

    学习SQL语句之SQL语句大全 -------------------------------------------------------------------------------- 作者: ...

  5. Pycharm中SQL语句提示SQL Dialect is Not Configured

    使用Pycharm进行数据库查询时,SQL语句提示SQL Dialect is Not Configured,是因为没有配置数据库. 按照图中设置即可. File --> Settings -- ...

  6. SQL语句--简单的函数书写举例(1)

    SQL语句–简单的函数书写举例(1) 在数据库下的[可编程性]–[函数]下可看到有4类函数,平时用的函数大部分为[系统函数]下的,当这些函数不能满足实际需求时,我们要自己创建函数. eg:计算 A+B ...

  7. 常用的sql语句,sql使用大全

    常用的sql语句,sql使用大全 我工作中常用到的sql 插入 查询 更新 介绍其他的sql SQL分类 基本的sql语句 高级查询运算词 我工作中常用到的sql 下面是我工作中常用的sql,每次都是 ...

  8. SQL语句集锦,SQL语句大全

    SQL语句集锦/SQL语句大全 --语 句 功 能 --数据操作 SELECT --从数据库表中检索数据行和列 INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除数据行 UP ...

  9. SQL语句--简单的函数书写举例(3)

    SQL语句–简单的函数书写举例(3) 在前两篇中,案例只涉及到简单的数值,这样的函数称为[标量函数] 这里的函数,可以简单的理解为它是一个可以进行计算的工具 标量函数:是简单的数值,eg:int.ch ...

  10. SQL语句教程-------SQL语法

    SQL语句教程-------SQL语法 在这一页中,我们列出所有在这个网站有列出 SQL 指令的语法.若要更详尽的说明,请点选指令名称. 这一页的目的是提供一个简洁的 SQL 语法做为读者参考之用.我 ...

最新文章

  1. python学精通要多久-精通python要多久
  2. 转载---sharepoint相关资源
  3. VC6.0蕉HOOK_timeGetTime 达到变速效果
  4. hadoop 部分问题
  5. 对step文件进行信息抽取算法
  6. C#语法基础(三)----窗体设计
  7. AVAudioPlayer音频播放器—IOS开发
  8. 2021-03-23美团面试
  9. sklearn.metrics.multilabel_confusion_matrix
  10. 单元测试--学习大纲
  11. 采集PMS7003 颗粒度传感器数据,显示在TFT屏幕上,并通过webapi上传(1/2)
  12. markdown转html格式
  13. 变压器励磁模型 Matlab simulink 可用于模拟电压暂降等电能质量问题
  14. JS逆向 | 推特x-guest-token
  15. python程序员收入-令人羡慕!33岁程序员晒出收入和待遇,网友望尘莫及
  16. 怎么把pdf文件压缩到最小?四招快速压缩!
  17. no input file specified解决方法
  18. 资产管理业务和财富管理
  19. IT好课推荐系列——马士兵GO开发
  20. python 深圳找工作_讲讲自己来深圳后找工作的经验吧!

热门文章

  1. php thinkadmin自定义一个弹出弹窗批量操作功能
  2. mysql被禁用了怎么办_数据库mysql存储遇到禁用怎么办?
  3. 计算机名打印机无法共享,打印机共享不了怎么回事 打印机共享不了原因和解决办法【详解】...
  4. 28 个提升开发幸福度的 VsCode 插件
  5. 《Real-Time Rendering》第四版学习笔记——Chapter 9 Physically Based Shading(一)
  6. 程序员 不经历风雨,怎么见彩虹
  7. 面包屑导航 组件<el-breadcrumb>
  8. 云服务器添加交换分区
  9. 一个用java演示的产生图像烟花的算法
  10. SIFT(尺度不变特征变换)的原理分析