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;
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一些补充
2012-07-05 14:33 883704 一些补充 1、存储过程的参数 in:输入参数, ... -
plsql包、触发器和大对象操作
2012-07-05 14:32 1892703 ------------------------- ... -
plsql存储过程、函数
2012-07-05 14:30 6150629 ------------------------- ... -
sql trace与执行计划
2012-07-04 17:32 1935627 ----执行计划 oracle在执行一个SQL之前 ... -
plsql高级操作
2012-07-04 17:31 1331627 ---group by 子句的增强 --roll ... -
plsql权限、数据连接和集合操作
2012-07-04 17:30 1426627 ---控制用户权限 Oracle的权限主要包括角色 ... -
plsql查询和数据对象
2012-07-04 17:01 3713626 ---多表查询 --Oracle ... -
oracle与jdbc的结合
2012-06-13 22:17 1277import java.sql.Connectio ... -
oracle 触发器、视图、自定义类型和数组
2012-06-13 22:11 32141:视图(view) 视图的作用: A:控制数据访问 ... -
oracle 存储过程和函数、程序包
2012-06-13 22:07 15881:存储过程 什么是存 ... -
oracle 游标管理
2012-06-13 22:04 915游标: 游标:逐行处理查询结果,以编程的方式访问数据。 游 ... -
oracle pl/sql编程
2012-06-13 22:01 10021:什么是PL/SQL 编程式的SQL语句 2:PL/SQ ... -
oracle单表查询与多表查询
2012-06-11 19:21 6213一、单表查询 1 基本查询 查询格式: ... -
oracle DDL、DML与TCL
2012-06-11 19:07 1494一、DDL 1、建表 建表语 ... -
oracle基础
2012-06-10 12:40 10121 oracle数据库基础 Oracle数据库简介 ...
相关推荐
"PLSQL简易教程学过以后plsql不愁" PLSQL 是 ORACLE 对标准数据库语言的扩展,ORACLE 公司已经将 PLSQL 整合到 ORACLE 服务器和其他工具中了,近几年中更多的开发人员和 DBA 开始使用 PLSQL。本文将讲述 PLSQL 基础...
5. **集合操作**:PLSQL支持集合操作,如集合的并集(UNION)、交集(INTERSECT)和差集(MINUS)。此外,可以使用索引数组(INDEX BY TABLE)或关联数组(associative arrays)处理集合数据。 6. **游标**:游标...
### PL/SQL 简单教程知识点解析 #### 第一章 PL/SQL 简介 **1. Oracle 应用编辑方法概览** - **Pro*C/C++**: 使用 C 语言与数据库交互的一种方法,相比 OCI 更常用。 - **ODBC (Open Database Connectivity)**: ...
然而,原版的PLSQL Developer默认是英文界面,对于中文用户来说,可能会在理解和操作上存在一定的困扰。"plsql汉化补丁"就是为了解决这个问题而出现的。 汉化补丁的目的是将PLSQL Developer的界面翻译成中文,使得...
"plsql亲测简单好用.zip"这个压缩包文件显然包含了一些关于如何轻松使用PL/SQL的资源,可能是教程、文档或者是简化配置的工具。下面将详细阐述PL/SQL的特性和使用方法,以及与Oracle数据库的关联。 1. **PL/SQL基础...
其安装过程相对简单,只需要下载对应操作系统的版本,然后解压到指定目录,设置好环境变量即可开始使用。 在开发过程中,配合如SQL Developer这样的数据库管理工具,开发者可以利用Oracle Instant Client进行数据...
PLSQL(Procedural Language/Structured Query Language)是Oracle数据库的一种扩展,主要用于开发与Oracle数据库交互...如果你正在寻找一个简单易用且功能强大的PL/SQL开发环境,PLSQL7.1.5无疑是一个值得考虑的选择。
```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最简单,最高效的安装配置包”旨在提供一站式解决方案,帮助用户在不同Windows系统上轻松安装和配置Oracle数据库及PL/SQL开发环境。通过理解PL/SQL的基本概念和Oracle数据库的管理,用户可以更...
- **编写和执行SQL语句**:无论是简单的SELECT查询还是复杂的多表联接,PLSQL Developer都提供了一个直观的界面来编写和执行SQL。 - **管理数据库对象**:创建、修改和删除表、视图、索引、触发器、存储过程等...
总的来说,PLSQL Developer 12.07汉化补丁是为中国用户量身定制的解决方案,通过简单的步骤,使用户能在熟悉的语言环境下进行Oracle数据库的开发和管理。只要遵循正确的步骤和注意事项,汉化过程通常是安全且有效的...
这个插件允许用户将PLSQL Developer的操作界面转换为中文,提高工作效率。 首先,下载提供的汉化插件压缩包,通常会包含一个或多个文件,如"plsqldechinese"这样的文件,以及可能的"使用教程.txt",用于指导用户...
配置PLSQL绿色免安装版的过程相对简单。首先,用户需要确保计算机上已经安装了Oracle数据库客户端或者Instant Client,这是运行PLSQL的基础。然后,解压下载的PLSQL绿色版文件到本地目录,启动可执行文件。在首次...
Wineskin则将Wine与图形用户界面结合,使得在Mac上安装和配置Windows应用变得简单。 接下来,我们开始安装步骤: 1. **下载并安装Wineskin**: 首先,你需要从官方或者可靠的源获取Wineskin的最新版本。从压缩包`...
标题中的"plsql免安装"指的是该软件提供了一种绿色版或便携式版本,用户无需经过传统安装过程,只需下载解压缩,然后进行简单的配置就能使用。 在描述中提到了两个关键步骤: 1. **配置TNS**: TNS(Transparent ...
PLSQL(Procedural Language/SQL)是Oracle数据库系统中用于编写存储过程、函数、包等的编程语言,它提供了丰富的功能来处理和操作数据库中的数据。当需要将PLSQL查询结果导出为CSV(Comma Separated Values)格式时...
PLSQL Developer是一款专为Oracle数据库设计的集成开发环境(IDE),它提供了丰富的功能,使得对Oracle数据库的管理和开发变得更加简单易行。这款工具以其简洁的操作界面和全面的中文化支持,深受广大数据库管理员和...
3. **数据浏览**:用户可以直接在PLSQL Developer中查看和操作数据库表中的数据,无需切换到其他工具。它可以显示数据,执行SQL查询,甚至进行简单的数据修改。 4. **版本控制集成**:此版本可能集成了版本控制系统...
`SELECT * FROM dual`是一个简单的SQL查询,通常用来测试数据库连接或作为示例查询。`SPOOL OFF`则关闭这个输出功能,确保所有预期的输出都被写入到文件。 执行SQL脚本文件是SQL*PLUS的另一个关键特性。你可以使用`...