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 823704 一些补充 1、存储过程的参数 in:输入参数, ... -
plsql包、触发器和大对象操作
2012-07-05 14:32 1844703 ------------------------- ... -
plsql存储过程、函数
2012-07-05 14:30 6093629 ------------------------- ... -
sql trace与执行计划
2012-07-04 17:32 1892627 ----执行计划 oracle在执行一个SQL之前 ... -
plsql高级操作
2012-07-04 17:31 1266627 ---group by 子句的增强 --roll ... -
plsql权限、数据连接和集合操作
2012-07-04 17:30 1352627 ---控制用户权限 Oracle的权限主要包括角色 ... -
plsql查询和数据对象
2012-07-04 17:01 3665626 ---多表查询 --Oracle ... -
oracle与jdbc的结合
2012-06-13 22:17 1245import java.sql.Connectio ... -
oracle 触发器、视图、自定义类型和数组
2012-06-13 22:11 31601:视图(view) 视图的作用: A:控制数据访问 ... -
oracle 存储过程和函数、程序包
2012-06-13 22:07 15381:存储过程 什么是存 ... -
oracle 游标管理
2012-06-13 22:04 875游标: 游标:逐行处理查询结果,以编程的方式访问数据。 游 ... -
oracle pl/sql编程
2012-06-13 22:01 9731:什么是PL/SQL 编程式的SQL语句 2:PL/SQ ... -
oracle单表查询与多表查询
2012-06-11 19:21 6142一、单表查询 1 基本查询 查询格式: ... -
oracle DDL、DML与TCL
2012-06-11 19:07 1438一、DDL 1、建表 建表语 ... -
oracle基础
2012-06-10 12:40 9661 oracle数据库基础 Oracle数据库简介 ...
相关推荐
plsql简单教程是针对实际开发人员而编写的一部既简单又实用的一本书
PL/SQL DEVELOPER 基本用法详解(建议写过第一个存储过程后的初手必读) 用过oracle的都抱怨,为了稳定 它提供的图形化操作 速度慢的让人伤心呀,p4+128M的机器只要启动一个
不需要繁琐的配置,按照文档傻瓜式操作就好用
plsql 操作oracle 数据库,简单、好用、稳定
包含PLSQL/CRT等用于 在云服务器连接安装Oracle 等,操作简单,配套使用如有问题联系作者
很好用的数据库连接工具,安装简单,使用方便。PLSQL!!!
plsql安装汉化破解,有助于简单快捷的操作oracle数据库
pl sql 的界面简单操作,非常适合新人
plsql是用于操作postgresql的简单命令行程序,相对于pgAdmin操作会更简单更快捷。
PLSQL Developer应用于oracle数据库的链接,操作简单内附教程
plsql汉化补丁,直接双击运行,傻瓜式安装,操作简单。
plsql 简单介绍
Oracle图形化操作工具 安装简单 功能强大,plsql developer 64 位,最新版本12.0
本文档用于描述基于PLSQL的一些SQL基础知识及使用技巧,便于相关人员了解基础SQL的语法知识及简单的使用技巧,以便于在实际的工作中能更好的处理遇到的一些问题。 通过本文档的学习希望可以到达能使用PLSQL进行基础...
简单操作,中文化。连接oracle 可视化工具。。。。。。。
oracle数据库操作工具,简单、已用,童叟无欺,数据处理必备工具
PLSQL PL/SQL(Procedural Language/SQL)是一种过程化语言,属于第三代语言,它与C、C++、Java等语言一样关注于处理细节,可以用来实现比较复杂的业务逻辑。它允许SQL的数据操纵语言和查询语句包含在块结构(block_...
这是一个关于PLSQL的试题文档集,其中有三套试题和答案,都是对Oracle数据库中默认表Emp和Dept的操作,从最简单的查询到多层子查询以及多表查询,可以说是把Emp表利用的淋漓尽致,希望对大家有所帮助~
PLSQL Developer是一块小巧的Oracle数据库查看管理工具。使用方便,操作简单。
plsqldeveloper是一款简单实用的oracle连接工具,操作简单,方便使用