oracle 数据库 入门第一天
2019-10-25 18:27
1936 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Java_HCL/article/details/102747973
Oracle 的两种函数 2分组函数
oracle数据库入门
查询语句
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
基本查询语句
关键词 | 作用 |
---|---|
spool |
spool 文件路径:开启sql语句缓存 spool off:保存sql语句到文件 |
host cls |
清屏 |
show user |
显示当前用户 |
·desc |
后跟表名:查询表结构 |
selet * from tab |
查询当前用户下的所有表,tab为系统创建的保存表信息的表 |
show linesize |
显示行宽 |
set linesize |
设置行宽,后加数字,比如 150 |
col 列名 for a8 |
设置列显示字符串长度,a表示字符 |
col 列名 for 9 |
设置列显示数字位数,一个9代表一位数 |
/ |
单独使用,表示执行上一条sql语句 |
c/错误单词/正确单词 |
修改上一条语句的错误单词,修改后,输入 / 执行 |
+ - * / |
数字运算符 |
sql中的null值 |
1.包含null的表达式都为null 2.null永远不等于null |
as |
取别名 |
ed |
进入缓存文件编辑上条sql语句,保存关闭后,输入 / 执行 |
distinct |
1.去除查询列的重复值 2.作用域为后面所有列 |
concat |
连接两个字符串:concat(A,B) |
dual |
伪表,测试用:select 3+2 from dual |
|| |
连接多个字符串 |
oracle 过滤和排序
注意事项 | 示例 |
---|---|
字符大小写敏感 |
如查询员工为SMITH的信息 SQL> select * from emp where ename=‘SMITH’; SQL> select * from emp where ename=‘SMITh’; |
日期格式敏感 |
SQL> select * from v$nls_parameters;【查看当前的日期格式】 SQL> alter session set NLS_DATE_FORMAT='yyyy-mm-dd';【修改当前会话的日期格式】 查询日期: SQL> select * from emp where hiredate=‘17-12月-80’; SQL> select * from emp where hiredate=‘1980-12-17’; |
between and |
查询薪水1000~2000之间的员工,结果是包含1000和2000的 SQL> select * from emp where sal between 1000 and 2000; 注:含有边界 小值在前 大值在后 |
in 在集合中<br/>not in 不在· |
1.查询10和20号部门的员工 SQL> select * from emp where deptno in(10,20); 2.查询不在10和20号部门的员工 SQL> select * from emp where deptno not in(10,20); 如果集合中含有null,不能使用not in; 但可以使用in |
like 模糊查询 |
1.查询名字以S打头的员工 SQL> select * from emp where ename like ‘S%’; 2查询名字是4个字的员工,4个下划线即可 SQL> select * from emp where ename like '____' 3.查询名字中含有下划线的员工 需要转意字符 SQL> select * from emp where ename like ‘%_%’ escape ‘’; |
rollback 回滚 |
Oracle是自动开启事务,不同mysql需要手动开启 |
order by 排序 |
1.order by后面 + 列,表达式,别名,序号 2.order by 作用于后面所有的列;desc只作用于离他最近的列 null值为最大,nulls last可以让null值一直放最后 select * from emp order by comm desc nulls last; |
set pagesize |
set pagesize 20 : 设置界面显示的分页大小 |
Oracle 的两种函数
1.单行函数
单行函数:用于操作数据对象,比如操作字符,数值,日期
函数格式:参数可以是一个列或一个值
function_name[(arg1,arg2,…)]
字符操作
函数作用 | 示例说明 |
---|---|
lower转小写 upper转大写 Initcap首写母大写 |
SQL> select lower(‘Hello’) 转小写upper(‘Hello’) 转大写,initcap(‘hello’) 首写母大写 from dual |
substr(a,b) 从a中,第b位开始取 |
select substr(‘Hello,How Are You’,3) from dual; |
substr(a,b,c) 从a中,第b位开始取,取后面c个字符 |
SQL> select substr(‘Hello,How Are You’,7,3) from dual; |
instr(a,b) b字符串在a 中的位置 |
select instr(‘hello’,‘ll’) from dual;从1开始 |
length字符数 lengthb字节数 SQL> select length(‘hello你好’) 字符串,lengthb(‘hello你好’) from dual; |
|
lpad左填充 rpad右填充 |
SQL> lpad/rpad(a,b,c) a 原字符串,b 新字符串总长度,c 填充物 |
trim去掉前后指定的字符 |
SQL> select trim(‘H’ from ‘Hello,WorldH’) from dual; |
replace替换 |
SQL> select replace(‘hello’,‘ll’,’**’) from dual; |
浮点操作
函数作用 | 示例说明 |
---|---|
round四舍五入 |
SQL>select round(466.691,2) ,round(466.691,1) from dual; |
trunc截断 |
SQL>select trunc(466.691,2) ,trunc(466.691,1) ,from dual第二个参数,0(可省略):代表从小数点截断,正数往右移动断点 |
时间格式化
格式 | 说明 | 举例 |
---|---|---|
YYYY |
Full year in numbers | 2011 |
Year |
Year spelled out(年英文全称) | Twenty eleven |
MM |
Tow-digit value of month 月分(两位数字) | 04 |
MONTH |
Full name of month(月的全称) | 4月 |
DY |
Three-letter abrreviation of the day of the week(星期几) | 星期一 |
DAY |
Full name of the day of the week | 星期一 |
DD |
Numeric day of the moth | 02 |
函数常用格式
符号 | 示意 |
---|---|
9 |
数字 |
0 |
零 |
$ |
美元符 |
L |
本地货币符 |
. |
小数点 |
, |
千位符 |
时间操作
函数 | 示例 |
---|---|
sysdate系统时间 |
SQL> select sysdate from dual; |
to_char格式化时间 |
to_char的函数格式 to_char(date,’formate_model’) SQL> select to_char(sysdate,‘yyyy-mm-dd HH24:mi:ss’) 当前时间 from dual; |
时间相加减 | 1.昨天 今天 明天 SQL>select sysdate-1 昨天,sysdate 今天,sysdate+1 明天 from dual; 2.2.计算员工的工龄:天 星期 月 年 SQL>select empno,ename,hiredate, (sysdate-hiredate) 天,(sysdate-hiredate)/7 星期,(sysdate-hiredate)/30 月,(sysdate-hiredate)/365 年 from emp |
months_between 两个日期相差的月数 |
SQL> select empno,ename,hiredate, (sysdate-hiredate)/30 一,months_between(sysdate,hiredate) 二 from emp; |
add_months 当前日期加上n个月的时间 |
一年后的时间 SQL> select add_months(sysdate,12) from dual; |
last_day 最后一天 |
当前月的最后一天 SQL> select last_day(sysdate) from dual; |
next_day 下个星期几 |
下个星期 SQL>select next_day(sysdate,‘星期日’) from dual; next_day的应用:设置时间自动备份数据 |
to_char 也可以格式数字 |
1.年和月的四舍五入 SQL> select round(sysdate,‘month’),round(sysdate,‘year’) from dual; 2.2017-06-29 09:50:09今天是星期四 SQL>select to_char(sysdate,‘yyyy-mm-dd HH24:mi:ss"今天是"day’) from dual 3.查询员工薪水:两位小数 千位符 货币代码 SQL> select to_char(sal,‘L9,999.99’) from emp; |
空操作
函数 | 示例 |
---|---|
|nvl2(a,b,c) 当a=null的时候,返回c;否则返回b |
如果奖金是空,输出0,注意2前的是L的小写,不是1 SQL> select ename,nvl2(comm,comm,0) from emp; |
nullif(a,b) 当a=b的时候,返回null;否则返回a |
SQL> select nullif(‘abc’,‘abc’) from dual; SQL> select nullif(‘abc’,‘abcb’) from dual; |
nvl(a,b) 当a=null的时候,返回b;否则返回a |
SQL> select nvl(comm, 100) from emp; |
条件判断
函数 | 用法 |
---|---|
使用decode判断字符串是否一样 |
decode(value,if1,then1,if2,then2,if3,then3,…else)value:输入的值 if判断的值 then输出结果 eles默认结果 `相当于java中的switch判断 |
使用decode比较大小 |
decode(sign(var1-var2),-1,var 1,var2) sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1 |
使用decode函数分段 |
比较大小的嵌套使用 |
利用decode实现表或者试图的行列转换 |
select sum(decode(ename,'字段名‘,sal,0) '字段名‘ ,。。。from emp; |
使用decode函数来使用表达式来搜索字符串 |
decode (expression, search_1, result_1, search_2, result_2, …, search_n, result_n, default) decode函数比较表达式和搜索字,如果匹配,返回结果;如果不匹配,返回default值;如果未定义default值,则返回空值。 |
使用case when来判断 |
case when 条件1 then 结果1 when 条件2 then 结果2…else 默认结果 |
2分组函数
组函数语法
SELECT [column,] group_function(column),…
FROM table
[WHERE condition]
[GROUP BY column]
[GROUP BY column]
Having…
常用组函数
函数 | 示例 |
---|---|
Avg 求平均数 |
select avg(sal) from emp; |
Count 求记录数 |
select count(distinct deptno) from emp; |
Max 求最大值 |
select max(sal) from emp; |
Min 求最小值 |
select min(sal) from emp; |
Sum 示各和 |
select sum(sal) from emp; |
注意 |
null值 组函数(多行函数)自动滤空,也就是空值也会计算 |
group by 分组
- 在select列表中,所有未包含的组函数中的列都应该包含在group by子句中
- where和having的区别:where后面不能使用多行函数
- rollup groupby语句增加【报表汇总】
相关文章推荐
- Oracle入门第一天(下)——数据库的管理
- Oracle入门(一)之登陆操作数据库
- 数据库基础知识点一:Oracle入门,数据库基本操作,函数
- 数据库(oracle)数据同步之物化视图(实战入门)
- Oracle入门(一)之登陆操作数据库
- 1. oracle学习入门系列之一 数据库发展与历史
- Oracle入门第一天(上)——简介与安装
- 《Oracle 12c数据库DBA入门指南 》目录
- 数据库、用户-第二章Getting Start with the Oracle Server(oracle入门)-by小雨
- dotConnect for Oracle入门指南(三):创建数据库对象
- oracle实战第一天--基础入门
- 数据库之Oracle的使用【入门版,包括常用的Sql语句】
- 2. oracle学习入门系列之二 数据库基础知识
- Oracle 11g数据库编程入门与实战
- 【oracle入门】数据库系统结构----三级模式
- Day30 Oracle基础1 数据库安装与入门 基本SQL语句
- Oracle入门(一)数据库安装
- oracle学习入门系列之五内存结构、数据库结构、进程
- 【Oracle入门系列】第03章_数据库查询基础
- Oracle入门第五天(下)——数据库其他对象