目录

  • oracle语句
    • ddl语句
      • create 建表
      • create 备份表
      • 改列名
      • 改列的字段类型
      • 增加列
      • 删除列
      • 为字段添加注释
    • dml语句
      • 插入
      • 修改
      • 删除
      • 复制表数据 insert into select
    • select语句
      • 解锁复制数据
      • distinct
      • group having
      • rownum 分页查询
      • 排序查询
      • 多表查询
  • oracle函数
    • wm_concat()
    • instr() 找字符位置
    • nvl 返回非null值
    • row_number 分组排名
    • to_date
    • to_char
    • concat
    • over partition by
    • trunc()
    • rank()
    • substr
    • trim()
    • sign(n)
    • round(number[,decimal])
    • coalesce(expression1,expression2...)
    • decode()
    • replace()
    • translate()
    • nvl2()
    • case when ... then .. else .. end
    • 行转列
    • 列转行

oracle语句

ddl语句

create 建表

CREATE TABLE 表名( id   number, name varchar2 (20),
);

create 备份表

create table bf as select * from 原表

改列名

alter table 表名 rename column 旧列名 to 新列名;

改列的字段类型

1、有数据情况

方式一(不会改变列的位置)

    ALTER TABLE 表名 ADD 临时列 目标数据类型;  --新建临时列UPDATE 表名 SET 临时列= 目标列; --将目标列的数据复制到临时列中UPDATE 表名 SET 目标列= NULL; --将目标列的数据清空alter table 表名 modify 目标列 目标数据类型; --更改目标列的数据类型UPDATE 表名 SET 目标列 = 临时列; --将临时列的数据复制回目标列ALTER TABLE 表名 DROP COLUMN 临时列; --删除临时列。

方式二

Alter Table 表名 Add  临时列 新类型; -- 新增一个临时字段
update 表名 set 临时列 = 旧列; -- 设置 临时列 字段的值为 旧列
alter table 表名 drop (旧列); -- 删除字段旧列
alter table 表名 rename column 临时列名 to 旧列名; -- 修改 临时列名 为 旧列名

2、无数据情况

alter table 表名 modify 列名 新类型;
alter table 表名 modify(  列名  新类型)

增加列

alter table 表名  add 列名 类型   default 值 ;

删除列

alter table 表名 drop column 列名

为字段添加注释

comment on  column 表名.列名  is '注释信息';

dml语句

插入

INSERT INTO 表名 (列1, 列2,...) VALUES (值1, 值2,....)  字符用单引号

修改

UPDATE 表名 SET 列名 = 新值 WHERE 列名称 = 某值

删除

DELETE FROM 表名称 WHERE 列名 = 值

复制表数据 insert into select

insert into biao(x1,x2) select x1,x2 from biao;

select语句

解锁复制数据

select * from 表名 for update

distinct

select distinct f.name from food f;

group having

select name as "食物名",count(*) as "数量" from food
group by name
having count(*) > 10;
--查找数量大于10的食物名

rownum 分页查询


select * from (select rownum hanghao,f.* from food f) t
where t.hanghao >= 1 and t.hanghao <=10;
--查找前10条food记录

排序查询

select * from food order by id desc nulls last;
--据food的id降序排序,NULL值放到最后。

多表查询

内连接:有对应的就连接 inner join on
左外:左表的都用上 =(+)
右外:右表都用上 right outer join on
全外:两表都用上 full outer join on
交叉:记录数的两表记录数的乘积 cross join on

oracle函数

wm_concat()

wm_concat()

–实现行转列,即将查询出的某一列值使用逗号进行隔开拼接,成为一条数据。

select name , wm_concat(price) from food group by name;

instr() 找字符位置

instr()

–字符查找,返回位置。

instr('helhoh','h',2,2)   =   6
--从第二个位置开始找第2个h的位置 ,没有返回0

nvl 返回非null值

nvl(e1,e2)

–返回两个表达式中的非null值。

row_number 分组排名

row_number()

–函数作用:将数据集按照某个字段排序,并产生一个序号字段

select name,company,age,row_number() over(order by age desc) no from 表名;
select * from (select name,company,age,row_number() over(order by age desc) no from 表名) where no <=3;//年龄最大的前3个
select name,company,age,row_number() over(partition by company,order by age desc) no from 表名;
select * from (select name,company,age,row_number() over(partition by company,order by age desc) no from 表名) where no =1;//每个公司中的最大年龄

to_date

–函数作用:将字符串转换为日期类型

select to_date('2023-05-19 8:54:57','yyyy-mm-dd hh24:mi:ss') from dual;

to_char

–函数作用:将其他类型转换为字符串类型

select to_char(field,'yyyy-MM-dd HH24:mi:ss') from dual
//field  为 date类型字段

concat

concat(expression1, expression2)

–函数作用:字符串拼接函数

select concat('left', 'Right') from dual

注意:也可以利用 || 进行拼接,select ‘a’||‘b’ from dual

over partition by

 over(partition by field_name, order by field_name)

–函数作用:over函数是一个分析函数,和聚合函数搭配在一起使用可以简洁代码

select name, grade, classes,
sum(grade) over(partition by classes) sum,  --某班级总成绩,sum值一直是组内所有成绩的总和
sum(grade) over(partition by classes order by grade desc) sum --加上排序后sum值是按顺序逐步累加的值,越来越大,直到变成组内所有成绩的总和
from biao;

注意:按照以前的写法先进分组统计产生临时表关联原表才可以取到其他信息,现在则不需要了

通常和max(),min(),avg(),sum()等聚合函数一起使用

trunc()

trunc()

–函数作用:是截取日期或数字,根据规则返回指定的值

//截取日期
select  trunc(sysdate,'dd') from   dual ;--返回当前年月日//截取数值(不四舍五入),trunc(a,b) a参数是源数据,如果b没有就是取整;如果b是正数保留小数点后b位;如果b是负数马,则从小数点左边开始截取。select trunc(126.567) from dual union all      --126
select trunc(126.567,2) from dual  union all   --126.56
select trunc(126.567,-2) from dual             --100

rank()

rank() over(partition by field_name order by field_name)

函数作用:让返回结果根据分区和排序字段产生排名关系。

用例:select rank() over(partition by birthday order by score), s.* from student s;
注意:dense_rank()用法和rank()一样,区别在于排名是否跳跃

substr

substr(source, start [,length])

函数作用:截取字符串

用例:select substr(‘abcde’, 2, 3) from dual

注意:oracle字符串索引从1开始

trim()

函数作用:去掉左右两端的空白字符

用例:

select trim('    zifuchuan    ') from dual;

注意:仅去掉左边空白字符用ltrim,仅去掉右边空白字符用rtrim

sign(n)

函数作用:取数字n的符号,大于0返回1, 小于0返回-1, 等于0返回0

用例:

select sign(8),sign(-8),sign(0) from dual;

round(number[,decimal])

函数作用:对数字n进行四舍五入处理,保留decimal位小数

用例:select round(100.21),round(100.56),round(100.58,1),round(105.34,-1) from dual;

coalesce(expression1,expression2…)

函数作用:返回表达式中第一个不为空的值,如果全为空则返回空值

用例:

select coalesce(null,6,7) value from dual;

decode()

decode(field_name, value1, new_value1, value2, new_value2, default_value)

函数作用:类似if…else…语句块,针对某个字段,如果它的值为value1,则转换为newValue1,如果值为value2,则转换为newValue2,其他情况显示默认值

replace()

replace(field_name, sub_str, replace_str)

函数作用:将指定的字符串替换为指定的字符串

translate()

translate('123A','/1234567890','/')

第二个 和 第三个参数 按顺序对应,替换。
判断是不是整数
SELECT nvl2(translate(‘123’,‘/1234567890’,‘/’),‘CHAR’,‘NUMBER’) FROM dual;

nvl2()

nvl2(expression1,expression2,expression3)

e1 值不为null ,则函数返回e2 , 为null 则返回e3

case when … then … else … end

select case when name= 'hangbao' then '汉堡' when name = 'kele' then '可乐' else '香蕉' end name_ch from food

行转列

方式一 (group by 聚合函数)

select name,
max(decode(course,'物理',score,'')) as 物理,
max(decode(course,'化学',score,'')) as 化学,
max(decode(course,'信息',score,'')) as 信息 from  biao group by name;

方式二 (oracle 自带 pivot )

select * from (
select name,course,score from biao
)
pivot (
max(score) for course in ('物理' as 物理, '化学' as 化学 , '信息' as  信息)
);

列转行

方式一 (union all)

select name,'物理' as course,物理 as score from biao1
union all
select name,'化学' as course,化学 as score from biao1
union all
select name,'信息' as course,信息 as score from biao1;

方式二 (oracle 自带 unpivot )

select name,course,score from(
select name,物理,化学,信息 from biao1
)
unpivot(
score for course in (
物理 as '物理',
化学 as '化学',
信息 as '信息'
)
)

Oracle语句函数相关推荐

  1. Oracle Decode()函数和CASE语句的比较

    Oracle Decode()函数和CASE语句都是我们经常用到的,那么它们的区别在哪里呢?下面就为您详细介绍Oracle Decode()函数和CASE语句的区别,供您参考. 首先,举2个简单的例子 ...

  2. Oracle分组函数和筛选语句详析

    分组函数:分组函数作用于一组数据,并对一组数据返回一个值 并且当分组函数嵌套了两层时就必须使用Group by 来标注出分组函数分组依据 并且分组聚合函数只能嵌套一层组函数, \还有就是,分组函数不会 ...

  3. oracle 语法分析表,Oracle 语句优化分析说明

    Oracle 语句优化分析说明 更新时间:2009年09月17日 21:52:20   作者: Oracle 语句优化技巧,大家可以参考使用,使你的oracle运行效率更高更好. 1. ORACLE ...

  4. oracle遍历表做查询,oracle 语句之对数据库的表名就行模糊查询,对查询结果进行遍历,依次获取每个表名结果中的每个字段(存储过程)...

    语句的执行环境是plsql的sql窗口, 语句的目的是从整个数据库中的所有表判断 不等于某个字段的记录数 . 代码如下: declare s_sql clob:=''; -- 声明一个变量,该变量用于 ...

  5. Oracle自定义函数

    2019独角兽企业重金招聘Python工程师标准>>> Oracle自定义函数 用户定义函数是存储在数据库中的代码块,可以把值返回到调用程序.调用时如同系统函数一样,如max(val ...

  6. Oracle 单行函数

    学习Oracle 单行函数: 包括字符函数,数值函数,日期函数,转换函数,通用函数. dual是一个"伪表",可以用来测试函数和表达式. 1, 字符函数 包括大小写控制函数,字符控 ...

  7. oracle 时间集合,oracle 日期函数集合(集中版本)第2/2页

    oracle 日期函数集合(集中版本)第2/2页 更新时间:2009年06月16日 23:45:55   作者: oracle 日期函数网上已经有了不少,特我们跟集中一下,免得大家麻烦. 一. 常用日 ...

  8. oracle 高效函数,Oracle分组函数之高效的ROLLUP

    Oracle/" target=_blank>Oracle分组函数之高效的ROLLUP ㈠ 初始化实验坏境 www.2cto.com [sql] hr@ORCL> create ...

  9. oracle 不等函数,SQL(Oracle)日常使用与不常使用函数的汇总

    --日常使用的sql语句和oracle语句,有些相对使用的频率比较高,收藏起来还是比较值得的 -- 绝对值 SQL:select abs(-1) value Oracle:select abs(-1) ...

最新文章

  1. android 仿京东toolbar,仿京东商城系列2------自定义toolbar
  2. 打造安全的网站服务器
  3. string 字符串中字符无效_7.3 C++字符串类 | 使用string输出
  4. mysql online ddl和pt_MySQL变更之:Online DDL 和 PT-OSC 该选谁?
  5. 米斯特白帽培训讲义(v2)实战篇 余闻同学录
  6. JS 获取WEB请求路径
  7. java socket调试工具_SocketToolV1.0-Java网络TCP调试助手
  8. Linux共享文件夹
  9. 苹果系统虚拟机无usb服务器,苹果电脑Mac系统中VMware虚拟机无法识别USB Key的解决方法...
  10. 【SSL】1653数字游戏
  11. 外贸企业如何选ERP管理软件
  12. 从零学习VH6501(八) —— 采样点测试
  13. win10系统 删掉自带的输入法
  14. iframe的onload事件
  15. 单硬盘win10+ubuntu双系统安装教程
  16. 详解ip地址和mac地址即ARP协议
  17. Jenkins构建maven项目不执行测试用例的命令
  18. 【Java】若依前后端分离,分页数据为null报错
  19. 利用dcmtk工具查询PACS,找到同一患者两次以上的检查的数据
  20. 修复压缩文件提示:现校验和错误。该文件已损坏

热门文章

  1. Android Lint代码检查实践
  2. 如何利用eclipse创建一个java web项目?
  3. A Complete ActiveX Web Control Tutorial
  4. rpm包与deb包的制作过程
  5. 充电电池的充放电电流-0.2C、1C、2C的含义
  6. 0416 leetcode每日一题 1042. 不邻接植花
  7. React Native UI渲染流程分析(Android)
  8. 交通灯管理系统视频学习
  9. 这些问题才是阻碍蓝牙耳机音质的元凶,2021什么牌子蓝牙耳机靠谱?
  10. enumerate使用