1、set linesize 100;  设置长度 
2、set pagesize 30;  设置每页显示数目 
3、em a.sql  打开记事本   
4、@ a 执行文件a中的代码,可指定文件的路径 @ 
5、conn 用户名/密码  根据用户名和密码连接数据库 如果连接超级管理员(sys) 则应加上as sysdba; 
6、show user; 显示当前连接的用户 
7、select * from tab;  得到当前用户下的所有表 
8、desc temp; 查看表结构 
9、/  继续执行上一个查询语句 
clear scr;  清屏 
字符函数 
10、select upper('coolszy') from dual; 将小写字母转换成大写,dual 为一虚表 
11、select lower('KUKA') from dual; 将大写字母转换成小写 
12、select initcap('kuka') from dual; 将首字母大写   
13、select concat('Hello',' world') from dual; 连接字符串,但没有||好用select concat('Hello','world') from dual; 
14、select substr('hello',1,3) from dual; 截取字符串 
15、select length('hello') from dual; 求字符串长度 
16、select replace('hello','l','x') from dual; 替换字符串   
17、select substr('hello',-3,3) from dual; 截取后三位 
数值函数 
18、select round(789.536) from dual; 四舍五入,舍去小数 
19、select round(789.536,2) from dual; 保留两位小数 
20、select round(789.536,-1) from dual; 对整数进行四舍五入 
21、select trunc(789.536) from dual; 舍去小数,但不进位 
22、select trunc(789.536,2) from dual; 
23、select trunc(789.536,-2) from dual; 
24、select mod(10,3) from dual; 返回10%3的结果 
日期函数 
25、select sysdate from dual; 返回当前日期 
26、select months_between(sysdate,'16-6月 -08') from dual; 返回之间的月数 
27、select add_months(sysdate,4) from dual; 在日期上加上月数 
28、select next_day(sysdate,'星期一') from dual; 求下一个星期一 
29、select last_day(sysdate) from dual; 求本月的最后一天 
转换函数 
30、select to_char(sysdate,'yyyy') year,to_char(sysdate,'mm'),to_char(sysdate,'dd') from dual; 
31、select to_char(sysdate,'yyyy-mm-dd') from dual; 
32、select to_char(sysdate,'fmyyyy-mm-dd') from dual; 取消月 日 前面的0 
33、select to_char('20394','99,999') from dual; 分割钱 9表示格式 
34、select to_char('2034','L99,999') from dual; 加上钱币符号 
35、select to_number('123')*to_number('2') from dual; 
36、select to_date('1988-07-04','yyyy-mm-dd') from dual;   
通用函数 
37、select nvl(null,0) from dual; 如果为null,则用0代替 
38、select decode(1,1,'内容是1',2,'内容是2',3,'内容是3') from dual; 类似于  
事务处理 
39、commit;  提交事务 
40、rollback; 回滚事务 
41、select rownum from table; 在没一列前面显示行号 
42、drop table 表名 cascade constraint   
on delete casecade 当父表中的内容被
删除后,子表中的内容也被删除 
43、desc表名 显示表的结构 
44、create user identified by [password] 创建新的用户 
45、grant 权限1、权限2...to 用户  给创建用户权限 
ex:grant create session to 此时只能连接到数据库 
grant connect,resource to 此时权限能满足要求 
46、alter user identified by [password] 修改用户密码 
47、alter user password expired 下次登录时提示修改密码 
48、alter user account lock  锁住用户 
49、alter user account unlock  解锁锁用户 
50、grant select,delete p to 把scott下emp表的两个权限给用户 
51、revoke select ,delete from 回收权限 
Oracle数据库函数(单行函数)
Oracle中的函数和C中的函数差不多,也是有函数名,参数表,和返回值类型组成的,单行函数,是针对每条记录都有一个结果。单行函数可以出现在select 后面,也可以出现在where子句中。
需要处理现实的结果时,就把函数写在select后面,用于条件过滤时,就把函数用在where子句中。
1,字符函数(varchar)
字符是大小写敏感的
转小写 lower(‘...’)
转大写 upper(‘...’)
首字母大写 initcap(‘...’)
dual表,是专门用于函数测试和运算的,他只有一条记录   
字符串拼接 concat(‘...’,’....’)
求指定子串 substr(‘...’,起始位置,取字符个数)(起始位置可以为负)
求制定字符串的长度length(‘……’)
可以使用"-"表示从右向左取,取的时候可以从左往友取。
例:
select upper(‘test’) from dual;
select first_name from s_emp where upper(first_name)=’GEORGE’;
select substr(first_name,-2,2) sub from s_emp;(取后两个)
select substr(first_name,2,2) sub from s_emp;(取前两个)
2,数值函数(number)
oracle登录命令四舍五入 round(数据,保留小数点后几位)
可以用负数表示小数点前,0,表示小数点后第一位,也就是保留个位,-1表示个位(保留到十  位)。
例:select round(15.36,1) from dual;
结果:15.4
截取数字函数 trunc(数据,保留的位数(小数点后位数)) 截取个位之后补0
例:select trunc(123.456,-1) from dual; 保留倒十位
结果:120
3,日期函数
日期格式,
全日期格式 世纪信息,年月日,时分秒。
缺省日期格式,日-月-年 dd-mon-rr
日期类型是可以进行数学运算的,+1,是下一天,-1,是上一天,数据库会对数据所隐式的转换。
修改当前会话的日期格式,会按照指定的格式输出日期
alter session set nls_date_format='yyyy mm dd hh24:mi:ss';
返回当前日期 sysdate
例:select sysdate+20 from dual;
日期是格式敏感的
求两个日期间相隔了多少个月 months_between(date1,
date2)
加减指定数量的月份 add_months(date,月数),月数可以为负,负值就是减去相应的月数。
从下周开始的日期加一天 next_day(date,天数)
例:select next_day(sysdate,2) from dual;
返回月末的日期 last_day(date)
截取日期 trunc(date,'年或月或日或时分秒')
例:select trunc(add_months(sysdate,1),'month') from dual;
4,不同数据类型间转换函数
将日期转成字符 tochar(date,'日期格式')
日期格式要用有效格式,格式大小写敏感 'yyyy mm dd hh24:mi:ss','year'(全拼的年),'mm'(数字表示的月) 'month'(全拼的月),'day'(星期的全拼),'ddspth' (日期的全拼) 'yy mm dd',’rr-mm-dd’(会根据年份判断世纪)
例:select to_char(sysdate,'yyyy mm dd hh24:mi:ss') from dual;
将字符转换成数字 to_number('...'),(可以加第二参数,第二参数指定定数字进制)
将数字转字符to_char(number,'fmt')  fmt是数字格式
将字符串转成日期 to_date('...','日期格式')
例:select  to_char(to_date('2006 11 03','yyyy mm dd'),'dd-month-yy')
from dual;
5,函数嵌套
例:select  to_char(to_date('2006 11 03','yyyy mm dd'),'dd-month-yy')
from dual;
6、decode函数
例:DECODE(control_value,value1,result1[,value2,result2…][,default_result]);
7、distinct
选择唯一的结果集,即去除重复记录
8、ORACLE产生数据库触发器的语法为:
create [or replace] trigger 触发器名 触发时间 触发事件
on 表名
[for each row]
pl/sql 语句
其中:
触发器名:触发器对象的名称。由于触发器是数据库自动执行的,因此该名称只是一个名称,没有实质的用途。
触发时间:指明触发器何时执行,该值可取:
before---表示在数据库动作之前触发器执行;
after---表示在数据库动作之后出发器执行。
触发事件:指明哪些数据库动作会触发此触发器:
insert:数据库插入会触发此触发器;
update:数据库修改会触发此触发器;
delete:数据库删除会触发此触发器。
表 名:数据库触发器所在的表。
for each row:对表的每一行触发器执行一次。如果没有这一选项,则只对整个表执行一次。
举例:下面的触发器在更新表auths之前触发,目的是不允许在周末修改表:
create trigger auth_secure
before insert or update or delete //对整表更新前触发
on auths
begin
if(to_char(sysdate,'DY')='SUN'
RAISE_APPLICATION_ERROR(-20600,'不能在周末修改表auths');
end if;
end
9、游标用法:
先定义游标
CURSOR 游标名
is
select 字段1,字段2 from table_name;
open 游标名;
loop
fetch 游标名 into my_all,你的新变量名;
exit when 游标名%notfound;
10、PL/SQL
PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器
和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL基础语法,结构和组件、以及如何设计并执行一个PL/SQL程序。
PL/SQL的优点
从版本6开始PL/SQL就被可靠的整合到ORACLE中了,一旦掌握PL/SQL的优点以及其独有的数据管理的便利性,那么你很难想象ORACLE缺了PL/SQL的情形。PL/SQL 不是一个独立的产品,他是一个整合到ORACLE服务器和ORACLE工具中的技术,可以把PL/SQL看作ORACLE服务器内的一个引擎,sql语句执行者处理单个的sql语句,PL/SQL引擎处理PL/SQL程序块。当PL/SQL程序块在PL/SQL引擎处理时,ORACLE服务器中的SQL语句执行器处理pl/sql程序块中的SQL语句。
PL/SQL的优点如下:
. PL/SQL是一种高性能的基于事务处理的语言,能运行在任何ORACLE环境中,支持所有数据处理命令。通过使用PL/SQL程序单元处理SQL的数据定义和数据控制元素。
. PL/SQL支持所有SQL数据类型和所有SQL函数,同时支持所有ORACLE对象类型
. PL/SQL块可以被命名和存储在ORACLE服务器中,同时也能被其他的PL/SQL程序或SQL命令调用,任何客户/服务器工具都能访问PL/SQL程序,具有很好的可重用性。
. 可以使用ORACLE数据工具管理存储在服务器中的PL/SQL程序的安全性。可以授权或撤销数据库其他用户访问PL/SQL程序的能力。
. PL/SQL代码可以使用任何ASCII文本编辑器编写,所以对任何ORACLE能够运行的操作系统都是非常便利的
. 对于SQL,ORACLE必须在同一时间处理每一条SQL语句,在网络环境下这就意味作每一个独立的调用都必须被oracle服务器处理,这就占用大量的服务器时间,同时导致网络拥挤。而PL/SQL是以整个语句块发给服务器,这就降低了网络拥挤。
PL/SQL块结构
PL/SQL是一种块结构的语言,组成PL/SQL程序的单元是逻辑块,一个PL/SQL 程序包含了一个或多个逻辑块,每个块都可以划分为三个部分。与其他语言相同,变量在使用之前必须声明,PL/SQL提供了独立的专门用于处理异常的部分,下面描述了PL/SQL块的不同部分:
声明部分(Declaration section)
声明部分包含了变量和常量的数据类型和初始值。这个部分是由关键字DECLARE开始,如果不需要声明变量或常量,那么可以忽略这一部分;需要说明的是游标的声明也在这一部分。
执行部分(Executable section)
执行部分是PL/SQL块中的指令部分,由关键字BEGIN开始,所有的可执行语句都放在这一部分,其他的PL/SQL块也可以放在这一部分。
异常处理部分(Exception section)
这一部分是可选的,在这一部分中处理异常或错误,对异常处理的详细讨论我们在后面进行。
PL/SQL块语法
[DECLARE]
---declaration statements
BEGIN
---executable statements
[EXCEPTI
ON]
---exception statements
END
PL/SQL块中的每一条语句都必须以分号结束,SQL语句可以使多行的,但分号表示该语句的结束。一行中可以有多条SQL语句,他们之间以分号分隔。每一个PL/SQL块由BEGIN或DECLARE开始,以END结束。注释由--标示。
PL/SQL块的命名和匿名
PL/SQL程序块可以是一个命名的程序块也可以是一个匿名程序块。匿名程序块可以用在服务器端也可
以用在客户端。
命名程序块可以出现在其他PL/SQL程序块的声明部分,这方面比较明显的是子程序,子程序可以在执行部分引用,也可以在异常处理部分引用。
PL/SQL程序块可背独立编译并存储在数据库中,任何与数据库相连接的应用程序都可以访问这些存储的PL/SQL程序块。ORACLE提供了四种类型的可存储的程序:
. 函数
. 过程
. 包
. 触发器
函数
函数是命名了的、存储在数据库中的PL/SQL程序块。函数接受零个或多个输入参数,有一个返回值,返回值的数据类型在创建函数时定义。定义函数的语法如下:
FUNCTION name [{parameter[,parameter,...])] RETURN datatypes IS
[local declarations]
BEGIN
execute statements
[EXCEPTION
exception handlers]
END [name]
过程
存储过程是一个PL/SQL程序块,接受零个或多个参数作为输入(INPUT)或输出(OUTPUT)、或既作输入又作输出(INOUT),与函数不同,存储过程没有返回值,存储过程不能由SQL语句直接使用,只能通过EXECUT命令或PL/SQL程序块内部调用,定义存储过程的语法如下:
PROCEDURE name [(parameter[,parameter,...])] IS
[local declarations]
BEGIN
execute statements
[EXCEPTION
exception handlers ]
END [name]
包(package)
包其实就是被组合在一起的相关对象的集合,当包中任何函数或存储过程被调用,包就被加载入内存中,包中的任何函数或存储过程的子程序访问速度将大大加快。
包由两个部分组成:规范和包主体(body),规范描述变量、常量、游标、和子程序,包体完全定义子程序和游标。
触发器(trigger)
触发器与一个表或数据库事件联系在一起的,当一个触发器事件发生时,定义在表上的触发器被触发。
变量和常量
变量存放在内存中以获得值,能被PL/SQL块引用。你可以把变量想象成一个可储藏东西的容器,容器内的东西是可以改变的。
声明变量
变量一般都在PL/SQL块的声明部分声明,PL/SQL是一种强壮的类型语言,这就是说在引用变量前必须首先声明,要在执行或异常处理部分使用变量,那么变量必须首先在声明部分进行声明。
声明变量的语法如下:
Variable_name [CONSTANT] databyte [NOT NULL][:=|DEFAULT expression]
注意:可以在声明变量的同时给变量强制性的加上NOT NULL约束条件,此时

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。