Oracle

常见的单行函数

1.decode()函数相当于if else语句
2.case job when 'PRESIDENT' then sal+1000
3.coalesce(a,b,c,...,n) 从左到右找到第一个不为null的值
4.nullif(a,b) 当a=b的时候,返回null;否则返回a
5.nvl2(a,b,c) 当a=null的时候,返回c;否则返回b
6.next_day的应用:设定每个星期一自动备份,同步,调度数据
7.last_day 本月的最后一天
8.add_months 在指定日期中加上若干月数
9.months_between 两个日期相差的月数
10. select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
11.trunc --截断
12.--replace 替换
13--trim 去掉前后指定的字符
14. --lpad 左填充 rpad 右填充
15.length('北京') 字符,lengthb('北京') 字节
16.--instr(a,b) 从字符串a中查找b字符串的位置(下标从1开始)
17.--substr(a,b,c) 从字符串a中,第b位开始取,取c位
18.--substr(a,b) 从字符串a中,第b位开始取
19.lower('Hello World') 大写转小写,upper('Hello World') 小写转大写,initcap('hello world') 首字母大写

https://www.cnblogs.com/chenmingjun/p/9637127.html#_labelTop(原文地址



 

常见的多行函数

--常用的组函数:sum()、count()、avg()、max()、min()

 --null值    5.对于组函数/多行函数,会自动滤空。我们可以嵌套滤空函数,来屏蔽该函数的滤空功能

 

--注意:Oracle中的规定,在select列表中所有未包含在组函数中的列都应该包含在 group by 子句中。

 --注意:Oracle中的规定,包含在 group by 子句中的列不必包含在select列表中。

--多个列的分组:如果第一个列相同,再按照第二列进行分组...

--where和having的区别:where子句不能使用多行函数。

 --用到Oracle的滤空函数nvl()和nvl2(),准确的说法叫做通用函数



过滤和排序


SQL> --修改日期格式(system表示在全局有效)
SQL> alter system set NLS_DATE_FORMAT='yyyy-mm-dd';

SQL> --修改日期格式(session表示在当前会话中有效)
SQL> alter session set NLS_DATE_FORMAT='yyyy-mm-dd';

 

--查询Oracle的日期格式
SQL> select * from v$nls_parameters; 

--比较运算(比较运算符)
SQL> --特别注意:
SQL> --        java中:int a = 0;
SQL> --        pl/sql中:a number := 0;

--between xxx and xxx        1. 含有边界     2. 小值在前 大值在后

--in 在集合中

--null 值    3. 如果集合中含有null,不能使用not in; 但可以使用in

 

1  select *
  2  from emp
  3where ename like '%\_%' escape '\'        --使用escape声明转义字符,前后一致即可

 

--MySQL中通过start transaction开启事务的,属于手动开启事务。
SQL> --Oracle中是自动开启事务的。

where的解析顺序:从右 --> 到左,所以我们应该尽量把为假的条件放在右边,让它先被解析

 

--原因:order by 升序作用于后面的所有的列

--原因:order by 降序只作用于距离desc最近的列

set pagesize 20    --设置每页显示的行数

 nulls last                --降序排序时,使得所有的空值在后面

-为什么降序排序时,null值默认排在前面呢?
SQL> --原因:在Oracle中null值最大。

SQL 语句的类型
SQL>     1. DML(data manipulation Language 数据操作语言): insert update delete select
SQL>     2. DDL(Data Definition Language 数据定义语言): create table,alter table,drop table,truncate table
SQL>                                                   create/drop view,sequence(序列),index,synonym(同义词)
SQL>     3. DCL(Data Control Language 数据控制语言): grant(授权) revoke(撤销权限)

 

delete和truncate的区别:
SQL>     1. delete逐条删除,truncate先摧毁表,再重建表
SQL>     2. (根本区别)delete是DML,truncate是DDL
SQL>      (可以回滚)           (不可以回滚)
SQL>     3. delete不会释放空间,truncate会释放空间
SQL>     4. delete可以闪回,truncate不可以闪回
SQL>       (flashback)
SQL>     5. delete会产生碎片,truncate不会产生碎片

 

 

SQL> Oracle数据库事务的标志:
SQL>     1. 起始标志:事务中第一条DML语句,例如:insert update delete select
SQL>     2. 结束标志:提交:显式:commit
SQL>                       隐式:正常退出(exit),DDL语句,DCL语句
SQL>                   回滚: 显式:rollback
SQL>                       隐式:非正常退出,掉电,宕机(死机)

 

 

 

SQL> --定义保存点(存储点)
SQL> savepoint a;

 

SQL> rollback to savepoint a;    --回滚到保存点a

 

 


SQL> --SQL99标准提供了4中事务隔离级别。
SQL> --MySql中支持4种事务隔离级别:read uncommitted、read committed、repeatable read(默认的隔离级别) 和 serializable
SQL> --Oracle中支持3种事务隔离级别:read committed(默认的隔离级别) 、serializable 和 read only

 



 --使用DDL语句创建和管理表
SQL> --一共学习10个数据库对象
SQL> --create/drop table,view,sequence(序列),index,synonym(同义词)
SQL> --存储过程、存储函数、触发器、包、包体

 

SQL> --创建表:用来保存20号部门的员工的数据 set linesize 150
SQL> set linesize 150
SQL> create table emp20
  2  as
  3  select * from emp where deptno=20;        --as的作用:可以把emp结果集的结构拷贝到新的表emp10上,由于where的条件结果恒为假,所以只拷贝表结构,没有拷贝表数据。如果where的条件结果为真,则一并拷贝数据。

表已创建。

 


SQL> --创建一个视图
SQL> create view empinfoview
  2  as
  3  select e.empno,e.ename,e.sal,e.sal*12 annsal,d.dname
  4  from emp e,dept d
  5  where e.deptno=d.deptno;

转载于:https://www.cnblogs.com/qianyuhebaobao/p/11114579.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值