`
julyboxer
  • 浏览: 220196 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

PLSQL常用方法汇总

阅读更多
在SQLPLUS下,实现中-英字符集转换
alter session set nls_language='AMERICAN';
alter session set nls_language='SIMPLIFIED CHINESE';
主要知识点:
一、有关表的操作
1)建表
create table test as select * from dept; --从已知表复制数据和结构
create table test as select * from dept where 1=2; --从已知表复制结构但不包括数据
2)插入数据:
insert into test select * from dept;
二、运算符
算术运算符:+ - * / 可以在select 语句中使用
连接运算符:|| select deptno|| dname from dept;
比较运算符:> >= = != < <= like between is null in
逻辑运算符:not and or
集合运算符: intersect ,union, union all, minus
要求:对应集合的列数和数据类型相同
查询中不能包含long 列
列的标签是第一个集合的标签
使用order by时,必须使用位置序号,不能使用列名
例:集合运算符的使用:
intersect ,union, union all, minus
select * from emp intersect select * from emp where deptno=10 ;
select * from emp minus select * from emp where deptno=10;
select * from emp where deptno=10 union select * from emp where deptno in (10,20); --不包括重复行
select * from emp where deptno=10 union all select * from emp where deptno in (10,20); --包括重复行

三,常用 ORACLE 函数
sysdate为系统日期 dual为虚表
一)日期函数[重点掌握前四个日期函数]
1,add_months[返回日期加(减)指定月份后(前)的日期]
select sysdate S1,add_months(sysdate,10) S2,
add_months(sysdate,5) S3 from dual;
2,last_day [返回该月最后一天的日期]
select last_day(sysdate) from dual;
3,months_between[返回日期之间的月份数]
select sysdate S1, months_between('1-4月-04',sysdate) S2,
months_between('1-4月-04','1-2月-04') S3 from dual
4,next_day(d,day): 返回下个星期的日期,day为1-7或星期日-星期六,1表示星期日
select sysdate S1,next_day(sysdate,1) S2,
next_day(sysdate,'星期日') S3 FROM DUAL
5,round[舍入到最接近的日期](day:舍入到最接近的星期日)
select sysdate S1,
round(sysdate) S2 ,
round(sysdate,'year') YEAR,
round(sysdate,'month') MONTH ,
round(sysdate,'day') DAY from dual
6,trunc[截断到最接近的日期]
select sysdate S1,
trunc(sysdate) S2,
trunc(sysdate,'year') YEAR,
trunc(sysdate,'month') MONTH ,
trunc(sysdate,'day') DAY from dual
7,返回日期列表中最晚日期
select greatest('01-1月-04','04-1月-04','10-2月-04') from dual

二)字符函数(可用于字面字符或数据库列)
1,字符串截取
select substr('abcdef',1,3) from dual
2,查找子串位置
select instr('abcfdgfdhd','fd') from dual
3,字符串连接
select 'HELLO'||'hello world' from dual;
4, 1)去掉字符串中的空格
select ltrim(' abc') s1,
rtrim('zhang ') s2,
trim(' zhang ') s3 from dual
2)去掉前导和后缀
select trim(leading 9 from 9998767999) s1,
trim(trailing 9 from 9998767999) s2,
trim(9 from 9998767999) s3 from dual;
5,返回字符串首字母的Ascii值
select ascii('a') from dual
6,返回ascii值对应的字母
select chr(97) from dual
7,计算字符串长度
select length('abcdef') from dual
8,initcap(首字母变大写) ,lower(变小写),upper(变大写)
select lower('ABC') s1,
upper('def') s2,
initcap('efg') s3 from dual;
9,Replace
select replace('abc','b','xy') from dual;
10,translate
select translate('abc','b','xx') from dual; -- x是1位
11,lpad [左添充] rpad [右填充](用于控制输出格式)
select lpad('func',15,'=') s1, rpad('func',15,'-') s2 from dual;
select lpad(dname,14,'=') from dept;
12, decode[实现if ..then 逻辑]
select deptno,decode(deptno,10,'1',20,'2',30,'3','其他') from dept;
三)数字函数
1,取整函数(ceil 向上取整,floor 向下取整)
select ceil(66.6) N1,floor(66.6) N2 from dual;
2, 取幂(power) 和 求平方根(sqrt)
select power(3,2) N1,sqrt(9) N2 from dual;
3,求余
select mod(9,5) from dual;
4,返回固定小数位数 (round:四舍五入,trunc:直接截断)
select round(66.667,2) N1,trunc(66.667,2) N2 from dual;
5,返回值的符号(正数返回为1,负数为-1)
select sign(-32),sign(293) from dual;


o_char(sysdate,'DAY') s6 from dual;
2) select sal,to_char(sal,'$99999') n1,to_char(sal,'$99,999') n2 from emp
2, to_date()[将字符类型转换为日期类型]
insert into emp(empno,hiredate) values(8000,to_date('2004-10-10','yyyy-mm-dd'));
3, to_number() 转换为数字类型
select to_number(to_char(sysdate,'hh12')) from dual; //以数字显示的小时数
五)其他函数
user:
返回登录的用户名称
select user from dual;
vsize:
返回表达式所需的字节数
select vsize('HELLO') from dual;
nvl(ex1,ex2):  
ex1值为空则返回ex2,否则返回该值本身ex1(常用)
例:如果雇员没有佣金,将显示0,否则显示佣金
select comm,nvl(comm,0) from emp;
nullif(ex1,ex2):
值相等返空,否则返回第一个值
例:如果工资和佣金相等,则显示空,否则显示工资
select nullif(sal,comm),sal,comm from emp;
coalesce:  
返回列表中第一个非空表达式
select comm,sal,coalesce(comm,sal,sal*10) from emp;
   nvl2(ex1,ex2,ex3) :
如果ex1不为空,显示ex2,否则显示ex3
如:查看有佣金的雇员姓名以及他们的佣金
     select nvl2(comm,ename,') as HaveCommName,comm from emp;
六)分组函数
max min avg count sum
1,整个结果集是一个组
1) 求部门30 的最高工资,最低工资,平均工资,总人数,有工作的人数,工种数量及工资总和
select max(ename),max(sal),
min(ename),min(sal),
avg(sal),
count(*) ,count(job),count(distinct(job)) ,
sum(sal) from emp where deptno=30;
2, 带group by 和 having 的分组
1)按部门分组求最高工资,最低工资,总人数,有工作的人数,工种数量及工资总和
select deptno, max(ename),max(sal),
min(ename),min(sal),
avg(sal),
count(*) ,count(job),count(distinct(job)) ,
sum(sal) from emp group by deptno;
2)部门30的最高工资,最低工资,总人数,有工作的人数,工种数量及工资总和
select deptno, max(ename),max(sal),
min(ename),min(sal),
avg(sal),
count(*) ,count(job),count(distinct(job)) ,
sum(sal) from emp group by deptno having deptno=30;
3, stddev 返回一组值的标准偏差
select deptno,stddev(sal) from emp group by deptno;
variance 返回一组值的方差差
select deptno,variance(sal) from emp group by deptno;
4, 带有rollup和cube操作符的Group By
rollup 按分组的第一个列进行统计和最后的小计
cube 按分组的所有列的进行统计和最后的小计
select deptno,job ,sum(sal) from emp group by deptno,job;
select deptno,job ,sum(sal) from emp group by rollup(deptno,job);
cube 产生组内所有列的统计和最后的小计
select deptno,job ,sum(sal) from emp group by cube(deptno,job);

七、临时表
只在会话期间或在事务处理期间存在的表.
临时表在插入数据时,动态分配空间
create global temporary table temp_dept
(dno number,
dname varchar2(10))
on commit delete rows;
insert into temp_dept values(10,'ABC');
commit;
select * from temp_dept; --无数据显示,数据自动清除
on commit preserve rows:在会话期间表一直可以存在(保留数据)
on commit delete rows:事务结束清除数据(在事务结束时自动删除表的数据)
分享到:
评论
1 楼 julyboxer 2008-04-17  
model语法

http://www.itpub.net/thread-970868-1-1.html

相关推荐

    ORACLE PLSQL常用方法汇总

    文档中汇总了oracle PLSQL常用方法,希望对大家有用,有需要的可下载。

    PLSQL常用方法汇总.doc

    "PLSQL常用方法汇总" PLSQL是Oracle数据库管理系统中的一种过程语言,用于存储过程、函数、触发器和包的编写。本文将对PLSQL常用方法进行汇总,包括表操作、运算符、集合运算符、 Oracle 函数等。 一、有关表的...

    Oracle_plsql常用方法汇总

    Oracle PL/SQL 中的常用方法汇总 Oracle PL/SQL 是一种强大的编程语言,广泛应用于 Oracle 数据库管理系统中。下面是 Oracle PL/SQL 中的一些常用方法汇总: 一、表操作 在 Oracle PL/SQL 中,表操作是最基本也是...

    PLSQL常用语句汇总

    本文将根据提供的标题“PLSQL常用语句汇总”、描述及部分内容,深入探讨PL/SQL中的关键知识点,涵盖表操作、运算符、以及常用的Oracle函数,帮助读者全面理解并熟练应用这些技术。 #### 一、表操作 表是数据库的...

    PLSQL使用大全,涵盖各种语法常用sql函数

    本资料“PLSQL使用大全”深入探讨了PLSQL的各种语法和常用的SQL函数,对于理解和掌握Oracle数据库的开发至关重要。 1. **PLSQL基本结构** - PLSQL由声明部分、执行部分和异常处理部分组成。声明部分包括变量、常量...

    ORACLE_PLSQL语法与维护文档汇总

    oracle_PLSQL_语法详细手册&11g;.doc ORACLE_维护手册.doc oracle+110个常用函数.doc oracle分析函数.doc Oracle数据库日常维护手册.docx PLSQL开发笔记和小结.doc 这些文档还不错,自己也想里面添加了一些语法。

    plsql_developer教程.pdf

    ### PL/SQL Developer 教程知识点汇总 #### 一、简介 **PL/SQL Developer**是一款功能强大的集成开发环境(IDE),专为Oracle数据库的PL/SQL编程而设计。它提供了一系列工具,帮助开发者高效地编写、调试和优化PL/...

    Oracle9i_SQL与PLSQL使用参考

    - **单记录函数与组函数**:SQL支持多种函数,单记录函数针对每一行数据进行操作,而组函数则用于处理一组行数据,如SUM、AVG和COUNT等,用于数据分析和汇总。 ##### 2. 控制与格式化输出 - **排序与分组**:通过...

    Oracle_PLSQL_编程手册(SQL大全)

    以下是一些常用的基础命令: 1. **数据定义语言(Data Definition Language, DDL)**: - `ALTER`:修改数据库对象的结构或属性。 - `DROP`:删除数据库对象。 - `REVOKE`:收回用户权限。 - `AUDIT`:审计特定...

    SQLPLSQL.pdf

    - **字符串函数**:列出常用的字符串处理函数,如TRIM、SUBSTR等,并给出使用实例。 - **数学函数**:介绍常见的数学函数,包括ABS、ROUND等,并说明其用法。 - **日期函数**:讲解日期处理函数,如ADD_MONTHS、LAST...

    plsql dev中文手册

    PL/SQL Developer是一款功能强大的Oracle开发工具,通过本文介绍的使用方法,开发者可以更好地利用其特性来提高开发效率和代码质量。无论是初学者还是经验丰富的开发者,都能从中受益匪浅。希望本文能为你提供足够的...

    PLSQL培训教程

    - **数据查询的基本方法**:数据查询通常涉及使用SQL的`SELECT`语句,它可以单独使用或与其他子句(如`WHERE`, `GROUP BY`, `ORDER BY`)组合,以满足不同的查询需求。例如,`SELECT * FROM table_name WHERE ...

    PLSQL_Developer教程

    ### PL/SQL Developer 教程知识点汇总 #### 一、简介 **PL/SQL Developer** 是一款专为 Oracle 数据库设计的集成开发环境(IDE),它提供了丰富的功能来支持 PL/SQL 的开发、测试和调试过程。相比于传统的 Oracle ...

    oracle常用SQL语句(汇总版).docx

    Oracle 常用 SQL 语句汇总 Oracle 是一个功能强大且复杂的关系数据库管理系统,它提供了多种 SQL 语句来管理和操作数据库。在本文中,我们将详细介绍 Oracle 中常用的 SQL 语句,包括数据控制语句(DML)、数据定义...

    定期删除数据表里数据方法汇总

    这里我们将深入探讨几种常用的方法,包括作业(Jobs)和存储过程(Stored Procedures),以及如何在不同的数据库系统中实现这些方法。 一、SQL Server 作业(SQL Server Agent Jobs) 在SQL Server中,可以利用SQL ...

Global site tag (gtag.js) - Google Analytics