`

plsql简单操作

sql 
阅读更多
626
1、pl/sql

--NULL表示不可用、未赋值、不知道、不适用, 它既不是0 也不是空格。
select null + 2 from dual;

--别名 as  字符串区分大小写 别名中有空格
select last_name as "LastName", salary Salary, salary + 300 from employees;

--连接符||
select last_name || ' salary is ' || salary as "雇员工资" from employees;

--去除重复行 distinct
SELECT DISTINCT department_id FROM employees;

--create table t_char(
--a varchar2(20)
--)
select * from t_char for update;

--模糊查询 使用% 或者_ 作为通配符:
--转义字符 使用ESCAPE 标识转义字符
select * from t_char where a like '%\%%' escape '\';
select * from t_char where a like '%k%%' escape 'k';

--大小写转换函数
select LOWER('SQL Course'), Upper('SQL Course'), initcap('SQL course')
  from dual;
--Oracle数据库中的数据是大小写敏感的
SELECT employee_id, last_name, department_id
  FROM employees
WHERE LOWER(last_name) = 'higgins';

--字符串操作函数
select concat('Hello', 'tanke'),
       substr('tanke', 1, 3),
       length('tanke'),
       instr('tanke', 'k'),
       lpad('tanke', 8, '+'),
       rpad('tanke', 9, '-'),
       trim(' tanke ')
  from dual;
SELECT employee_id,
       CONCAT(first_name, last_name) NAME,
       job_id,
       LENGTH(last_name),
       INSTR(last_name, 'a') "Contains 'a'?"
  FROM employees
WHERE SUBSTR(job_id, 4) = 'REP';

--数字操作函数
SELECT ROUND(45.923, 2), ROUND(45.923, 0), ROUND(45.923, -1) FROM DUAL;
SELECT TRUNC(45.923, 2), TRUNC(45.923), TRUNC(45.923, -2) FROM DUAL;
SELECT last_name, salary, MOD(salary, 5000) FROM employees WHERE job_id = 'SA_REP';

--日期操作函数
--返回下个星期的日期,day为1-7或星期日-星期六,1表示星期日
select NEXT_DAY (to_date('2012-06-26','yyyy-mm-dd'),1) from dual;
select ADD_MONTHS (sysdate,6) from dual;
-------------------------------------------------------------------------------
MONTHS_BETWEEN ('01-SEP-95','11-JAN-94')                 19.6774194
ADD_MONTHS ('11-JAN-94',6)                               11-Jul-94
NEXT_DAY ('01-SEP-95','FRIDAY')                          8-Sep-95
NEXT_DAY ('01-SEP-95',1)                                 3-Sep-95
NEXT_DAY (to_date('1995-09-01','YYYY-MM-DD'),1)          2-Sep-95
LAST_DAY('01-FEB-95')                                    28-Feb-95
ROUND('25-JUL-95','MONTH')                               1-Aug-95
ROUND('25-JUL-95' ,'YEAR')                               1-Jan-96
TRUNC('25-JUL-95' ,'MONTH')                              1-Jul-95
TRUNC('25-JUL-95','YEAR')                                1-Jan-95
--------------------------------------------------------------------------------
--修改注册表 nls_lang AMERICAN_AMERICA.ZHS16GBK
select NEXT_DAY ('01-MAY-95',1) from dual;
SELECT last_name,
       (SYSDATE - hire_date) / 7 AS WEEKS,
       sysdate + 1 as tomorrow,
       hire_date + 8 / 24
  FROM employees
WHERE department_id = 90;

--转换测试(隐式转换)
select * from test1;
select * from test1 where column1=2;

--显示转换 to_char to_number to_date
--TO_CHAR(date, 'format_model') ;
--------------------------------------------------------------------------------------
日期格式化元素                                       意义
YYYY                                            4位数字表示的年份
YEAR                                            英文描述的年份
MM                                              2位数字表示的月份
MONTH                                           英文描述的月份
MON                                             三个字母的英文描述月份简称
DD                                              2位数字表示的日期
DAY                                             英文描述的星期几
DY                                              三个字母的英文描述的星期几简称
HH24:MI:SS AM                                   时分秒的格式化
DDspth                                          英文描述的月中第几天
fm                                              格式化关键字,可选
---------------------------------------------------------------------------------------
select to_char(sysdate,'DAY') from dual;
SELECT last_name, TO_CHAR(hire_date, 'fmDD "of" Month YYYY') AS HIREDATE
  FROM employees;
--TO_CHAR() 函数:数字到字符串的转换
----------------------------------------------------------------------------------
数字格式化元素                        意义
9                                   表示一个数字
0                                   强制显示0
$                                   放一个美元占位符
L                                   使用浮点本地币种符号
.                                   显示一个小数点占位符
,                                   显示一个千分位占位符
---------------------------------------------------------------------------------
alter session set NLS_CURRENCY = '¥';
SELECT TO_CHAR(salary, 'L99,999.00') SALARY FROM employees
WHERE last_name = 'Ernst';
--TO_DATE() 函数:字符串到日期的转换
SELECT last_name, TO_CHAR(hire_date, 'DD-Mon-YYYY')
FROM employees
WHERE hire_date < TO_DATE('01-Jan-90', 'DD-Mon-RR');

--其他单行函数
------------------------------------------------------------------------------
函数                                      用途
NVL(expr1, expr2)                   如果expr1为空,这返回expr2
NVL2 (expr1, expr2, expr3)          如果expr1为空,这返回expr3(第2个结果)否则返回expr2
NULLIF (expr1, expr2)               如果expr1和expr2相等,则返回空
COALESCE (expr1, expr2, ..., exprn)
                                    如果expr1不为空,则返回expr1,结束;否则计算expr2,直到找到
                                    一个不为NULL的值或者如果全部为NULL,也只能返回NULL
-------------------------------------------------------------------------------------
--条件表达式
--case
SELECT last_name, job_id, salary,
           CASE job_id
                WHEN 'IT_PROG' THEN 1.10*salary
                WHEN 'ST_CLERK' THEN 1.15*salary
                WHEN 'SA_REP' THEN 1.20*salary
                ELSE salary
           END "REVISED_SALARY"
FROM employees;
--decode
SELECT last_name, job_id, salary,
      DECODE(job_id, 'IT_PROG', 1.10*salary,
                     'ST_CLERK', 1.15*salary,
                     'SA_REP', 1.20*salary,
                      salary) REVISED_SALARY
FROM employees;


--全外连接
SELECT e.last_name, e.department_id, d.department_name
FROM employees e,departments d
where e.department_id(+) = d.department_id
union
SELECT e.last_name, e.department_id, d.department_name
FROM employees e,departments d
where e.department_id = d.department_id(+);

SELECT e.last_name, e.department_id, d.department_name
FROM employees e
FULL OUTER JOIN departments d
ON (e.department_id = d.department_id) ;

--count函数
--insert into test1 values(null);
select * from test1;
select count(*) from test1;--包含空行
select count(1) from test1;--不包含空行
select count(column1) from test1;
select count(distinct column1) from test1;
select count(column1) from (select column1 from test1 group by column1);
select count(*) from (select column1 from test1 group by column1);

--当分组计算函数遇到NULL:avg 不考虑分组
SELECT AVG(commission_pct) FROM employees;
select (select sum(commission_pct) from employees)/(select count(*) from employees ) from dual;
select (select sum(commission_pct) from employees)/(select count(commission_pct) from employees )
from dual;
SELECT AVG(NVL(commission_pct, 0)) FROM employees;

--select * from test1 for update nowait;
分享到:
评论

相关推荐

    PLSQL简易教程学过以后plsql不愁

    "PLSQL简易教程学过以后plsql不愁" PLSQL 是 ORACLE 对标准数据库语言的扩展,ORACLE 公司已经将 PLSQL 整合到 ORACLE 服务器和其他工具中了,近几年中更多的开发人员和 DBA 开始使用 PLSQL。本文将讲述 PLSQL 基础...

    Oracle PLSQL编程精简版

    5. **集合操作**:PLSQL支持集合操作,如集合的并集(UNION)、交集(INTERSECT)和差集(MINUS)。此外,可以使用索引数组(INDEX BY TABLE)或关联数组(associative arrays)处理集合数据。 6. **游标**:游标...

    plsql简单教程针对实际开发人员定位

    ### PL/SQL 简单教程知识点解析 #### 第一章 PL/SQL 简介 **1. Oracle 应用编辑方法概览** - **Pro*C/C++**: 使用 C 语言与数据库交互的一种方法,相比 OCI 更常用。 - **ODBC (Open Database Connectivity)**: ...

    plsql汉化补丁

    然而,原版的PLSQL Developer默认是英文界面,对于中文用户来说,可能会在理解和操作上存在一定的困扰。"plsql汉化补丁"就是为了解决这个问题而出现的。 汉化补丁的目的是将PLSQL Developer的界面翻译成中文,使得...

    plsql亲测简单好用.zip

    "plsql亲测简单好用.zip"这个压缩包文件显然包含了一些关于如何轻松使用PL/SQL的资源,可能是教程、文档或者是简化配置的工具。下面将详细阐述PL/SQL的特性和使用方法,以及与Oracle数据库的关联。 1. **PL/SQL基础...

    ORACLE的简易客户端用于plsql开发

    其安装过程相对简单,只需要下载对应操作系统的版本,然后解压到指定目录,设置好环境变量即可开始使用。 在开发过程中,配合如SQL Developer这样的数据库管理工具,开发者可以利用Oracle Instant Client进行数据...

    PLSQL7.1.5.zip

    PLSQL(Procedural Language/Structured Query Language)是Oracle数据库的一种扩展,主要用于开发与Oracle数据库交互...如果你正在寻找一个简单易用且功能强大的PL/SQL开发环境,PLSQL7.1.5无疑是一个值得考虑的选择。

    PLSQL简单教程,简单实用

    ```plsql CREATE OR REPLACE PROCEDURE GetSumAndSub(p1 IN NUMBER, p2 IN NUMBER, m OUT NUMBER, b OUT NUMBER) IS BEGIN m := p1 + p2; b := p1 - p2; END GetSumAndSub; ``` 2. **保存与执行存储过程**:...

    plSQL最简单,最高效的安装配置包

    综上所述,这个“plSQL最简单,最高效的安装配置包”旨在提供一站式解决方案,帮助用户在不同Windows系统上轻松安装和配置Oracle数据库及PL/SQL开发环境。通过理解PL/SQL的基本概念和Oracle数据库的管理,用户可以更...

    PLSQL免安装版(无需安装Oracle客户端)

    - **编写和执行SQL语句**:无论是简单的SELECT查询还是复杂的多表联接,PLSQL Developer都提供了一个直观的界面来编写和执行SQL。 - **管理数据库对象**:创建、修改和删除表、视图、索引、触发器、存储过程等...

    PLSQL developer 12.07汉化补丁,完美汉化plsql12版本

    总的来说,PLSQL Developer 12.07汉化补丁是为中国用户量身定制的解决方案,通过简单的步骤,使用户能在熟悉的语言环境下进行Oracle数据库的开发和管理。只要遵循正确的步骤和注意事项,汉化过程通常是安全且有效的...

    plsql汉化插件

    这个插件允许用户将PLSQL Developer的操作界面转换为中文,提高工作效率。 首先,下载提供的汉化插件压缩包,通常会包含一个或多个文件,如"plsqldechinese"这样的文件,以及可能的"使用教程.txt",用于指导用户...

    plsql绿色免安装版

    配置PLSQL绿色免安装版的过程相对简单。首先,用户需要确保计算机上已经安装了Oracle数据库客户端或者Instant Client,这是运行PLSQL的基础。然后,解压下载的PLSQL绿色版文件到本地目录,启动可执行文件。在首次...

    Mac系统下借助Wineskin安装PLsql所有工具

    Wineskin则将Wine与图形用户界面结合,使得在Mac上安装和配置Windows应用变得简单。 接下来,我们开始安装步骤: 1. **下载并安装Wineskin**: 首先,你需要从官方或者可靠的源获取Wineskin的最新版本。从压缩包`...

    plsql免安装

    标题中的"plsql免安装"指的是该软件提供了一种绿色版或便携式版本,用户无需经过传统安装过程,只需下载解压缩,然后进行简单的配置就能使用。 在描述中提到了两个关键步骤: 1. **配置TNS**: TNS(Transparent ...

    PLSQL导出CSV后中文乱码解决办法

    PLSQL(Procedural Language/SQL)是Oracle数据库系统中用于编写存储过程、函数、包等的编程语言,它提供了丰富的功能来处理和操作数据库中的数据。当需要将PLSQL查询结果导出为CSV(Comma Separated Values)格式时...

    PLSQL Developer

    PLSQL Developer是一款专为Oracle数据库设计的集成开发环境(IDE),它提供了丰富的功能,使得对Oracle数据库的管理和开发变得更加简单易行。这款工具以其简洁的操作界面和全面的中文化支持,深受广大数据库管理员和...

    PLSQL Developer 11.0中文绿色免安装Oracle11g

    3. **数据浏览**:用户可以直接在PLSQL Developer中查看和操作数据库表中的数据,无需切换到其他工具。它可以显示数据,执行SQL查询,甚至进行简单的数据修改。 4. **版本控制集成**:此版本可能集成了版本控制系统...

    oracle中plsql基本操作

    `SELECT * FROM dual`是一个简单的SQL查询,通常用来测试数据库连接或作为示例查询。`SPOOL OFF`则关闭这个输出功能,确保所有预期的输出都被写入到文件。 执行SQL脚本文件是SQL*PLUS的另一个关键特性。你可以使用`...

Global site tag (gtag.js) - Google Analytics