玩转Oracle(4)
2010-05-17 22:45
323 查看
//使用自定义函数定义日期格式
to_date('1982-11-11','yyyy-mm-dd')
to_date('1982/11/11','yyyy/mm/dd')
//希望员工scott的岗位,工资,补助与smith员工一样
update emp set (job,sal,comm)=(select job,sal,comm from emp where ename='SMITH') where ename='SCOTT';
||------- java使用oracle -------||
//jdbc-odbc
//1.加载驱动 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//2.得到连接 conn = DriverManager.getConnection("jdbc:odbc:oracle_source","scott","tiger");
//jdbc直连
//1.加载驱动 Class.forName("oracle.jdbc.driver.OracleDriver");
//2.得到连接 conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL","scott","tiger");
||------- oracle的事物处理 -------||
dml语句 //增删改
当执行事务操作时(dml语句),oracle会在被作用的表上加锁,防止其它用户改表的结构,这里对我们用户来讲是非常重要的
//回滚命令
savepoint a; //存储回滚点
rollback to a; //回滚到存储点
rollback //取消全部事物
commit; //当执行了commit就不能回滚了
exit; //退出则自动提交事务
//java使用事务
conn.setAutoCommit(false); //设置不自动提交
conn.commit(); //手动提交
conn.rollback(); //如果出现异常回滚事物
//只读事物:只允许查询的操作,而不允许其他dml的操作
set transaction read only;
||------- oracle的sql函数 -------||
//
//字符函数
//
lower(char) //小写
upper(char) //大写
length(char) //长度
substr(char,m,n) //取字符串的子串
replace(char1,search_string,replace_string) //替换函数
instr(char1,char2,[,n[,m]]) //取子串在字符串的位置
//将所有员工的名字按小写的方式显示
select empno,lower(ename) from emp;
//将所有员工的名字按大写的方式显示
select empno,upper(ename) from emp;
//显示正好为5个字符的员工姓名
select * from emp where length(ename) = 5;
//显示所有员工名字前3个字符
select substr(ename,1,3) from emp;
//以首字母大写的方式显示所有员工姓名
select (upper(substr(ename,0,1))) || (lower(substr(ename,2,length(ename)))) as ename from emp;
//将员工名字中所有的A字符替换成tiger
select replace(ename,'A','tiger') from emp;
//显示A在员工名字中的位置
select ename,instr(ename,'A') from emp;
//
//数学函数
//
cos,cosh,exp,ln,log,sin,sinh,sqrt,tan,tanh,acos,asin,atan,round
round(n,[m]) //四舍五入 round(sal,2)=2456.36
trunc(n,[m]) //截取数字 trunc(sal,1)=2456.3 截取小数点1位,不考虑四舍五入,默认截取到整数位
floor(n) //返回小于或等于n的最大整数 向下取整
ceil(n) //返回大于或是等于n的最大整数 向上取整
mod(m,n) //取模
//在做oracle测试的时候可以使用dual表(测试表)
select mod(10,6) from dual;
//显示在一个月为30天的情况,所有员工的日薪金,忽略余数
select floor(sal/30) from emp;
//
//日期函数
//
oracle的默认日期格式是dd-mon-yy 12-7月-78
sysdate //返回系统时间
add_months(d,n) //add_months(日期,月)
last_day(d) //返回指定日期所在月份的最后一天
//查找已经入职8个月多的员工
select * from emp where sysdate>add_months(hiredate,8);
//显示满10年服务年限的员工的姓名和受雇日期
select * from emp where sysdate>=add_months(hiredate,12*10);
//对于每个员工,显示其加入公司的天数
select trunc(sysdate-hiredate) from emp;
//找出各月倒数第3天受雇的所有员工
select * from emp where hiredate = last_day(hiredate)-2 ;
//
//转换函数
//
to_char //将date转换成字符类型
to_date //将字符串转换成date
sys_context //7个参数
1.terminal //当前会话客户所对应的终端标识符
2.language //语言
3.db_name //当前数据库名称
4.nls_date_format //当前会话客户所对应的日期格式
5.session_user //当前会话客户所对应数据库的用户名
6.current_schema //当前会话客户所对应的默认方案名
7.host //返回数据库所在主机的名称
SQL> select sys_context('userenv','db_name') from dual;
//日期是否可以显示 时/分/秒
yy //两位数字的年份 2004->04
yyyy //四位数字的年份 2004年
mm //两位数字的月份 8月->08
dd //2位数字的天 30号->30
hh24 //8点->20
hh12 //8点->08
mi //分钟
ss //秒
insert into emp values (sysdate,23,23,10); //添加系统时间,以时分秒存入
select ename,to_char(hiredate,'yyyy/mm/dd hh24:mi:ss') from emp;
//薪水是否可以显示指定的货币符号
9 //显示数字,并忽略前面0
0 //显示数字,如位数不足,则用0补齐
. //在指定位置显示小数点
, //在指定位置显示逗号
$ //在数字前加美元
L //在数字前加本地货币符号
C //在数字前加国际货币符号
G //在指定位置显示组分隔符
D //在指定位置显示小数点符号(.)
select to_char(sal,'L99999.99') from emp; ¥3222.00
//显示1980年入职的所有员工
select * from emp where to_char(hiredate,'yyyy')=1980;
//显示所有12月份入职的员工
select * from emp where to_char(hiredate,'mm')=12;
//使用sys_context函数的7种用法
SYS_CONTEXT('USERENV','DB_NAME
--------------------------------------------------------------------------------
orcl
SQL> select sys_context('userenv','session_user') from dual;
SYS_CONTEXT('USERENV','SESSION
--------------------------------------------------------------------------------
SCOTT
SQL> select sys_context('userenv','language') from dual;
SYS_CONTEXT('USERENV','LANGUAG
--------------------------------------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
SQL> select sys_context('userenv','host') from dual;
SYS_CONTEXT('USERENV','HOST')
--------------------------------------------------------------------------------
WORKGROUP/VALEN-PC
SQL> select sys_context('userenv','nls_date_format') from dual;
SYS_CONTEXT('USERENV','NLS_DAT
--------------------------------------------------------------------------------
DD-MON-RR
SQL> select sys_context('userenv','terminal') from dual;
SYS_CONTEXT('USERENV','TERMINA
--------------------------------------------------------------------------------
VALEN-PC
SQL> select sys_context('userenv','current_schema') from dual;
SYS_CONTEXT('USERENV','CURRENT
--------------------------------------------------------------------------------
SCOTT
to_date('1982-11-11','yyyy-mm-dd')
to_date('1982/11/11','yyyy/mm/dd')
//希望员工scott的岗位,工资,补助与smith员工一样
update emp set (job,sal,comm)=(select job,sal,comm from emp where ename='SMITH') where ename='SCOTT';
||------- java使用oracle -------||
//jdbc-odbc
//1.加载驱动 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//2.得到连接 conn = DriverManager.getConnection("jdbc:odbc:oracle_source","scott","tiger");
//jdbc直连
//1.加载驱动 Class.forName("oracle.jdbc.driver.OracleDriver");
//2.得到连接 conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL","scott","tiger");
||------- oracle的事物处理 -------||
dml语句 //增删改
当执行事务操作时(dml语句),oracle会在被作用的表上加锁,防止其它用户改表的结构,这里对我们用户来讲是非常重要的
//回滚命令
savepoint a; //存储回滚点
rollback to a; //回滚到存储点
rollback //取消全部事物
commit; //当执行了commit就不能回滚了
exit; //退出则自动提交事务
//java使用事务
conn.setAutoCommit(false); //设置不自动提交
conn.commit(); //手动提交
conn.rollback(); //如果出现异常回滚事物
//只读事物:只允许查询的操作,而不允许其他dml的操作
set transaction read only;
||------- oracle的sql函数 -------||
//
//字符函数
//
lower(char) //小写
upper(char) //大写
length(char) //长度
substr(char,m,n) //取字符串的子串
replace(char1,search_string,replace_string) //替换函数
instr(char1,char2,[,n[,m]]) //取子串在字符串的位置
//将所有员工的名字按小写的方式显示
select empno,lower(ename) from emp;
//将所有员工的名字按大写的方式显示
select empno,upper(ename) from emp;
//显示正好为5个字符的员工姓名
select * from emp where length(ename) = 5;
//显示所有员工名字前3个字符
select substr(ename,1,3) from emp;
//以首字母大写的方式显示所有员工姓名
select (upper(substr(ename,0,1))) || (lower(substr(ename,2,length(ename)))) as ename from emp;
//将员工名字中所有的A字符替换成tiger
select replace(ename,'A','tiger') from emp;
//显示A在员工名字中的位置
select ename,instr(ename,'A') from emp;
//
//数学函数
//
cos,cosh,exp,ln,log,sin,sinh,sqrt,tan,tanh,acos,asin,atan,round
round(n,[m]) //四舍五入 round(sal,2)=2456.36
trunc(n,[m]) //截取数字 trunc(sal,1)=2456.3 截取小数点1位,不考虑四舍五入,默认截取到整数位
floor(n) //返回小于或等于n的最大整数 向下取整
ceil(n) //返回大于或是等于n的最大整数 向上取整
mod(m,n) //取模
//在做oracle测试的时候可以使用dual表(测试表)
select mod(10,6) from dual;
//显示在一个月为30天的情况,所有员工的日薪金,忽略余数
select floor(sal/30) from emp;
//
//日期函数
//
oracle的默认日期格式是dd-mon-yy 12-7月-78
sysdate //返回系统时间
add_months(d,n) //add_months(日期,月)
last_day(d) //返回指定日期所在月份的最后一天
//查找已经入职8个月多的员工
select * from emp where sysdate>add_months(hiredate,8);
//显示满10年服务年限的员工的姓名和受雇日期
select * from emp where sysdate>=add_months(hiredate,12*10);
//对于每个员工,显示其加入公司的天数
select trunc(sysdate-hiredate) from emp;
//找出各月倒数第3天受雇的所有员工
select * from emp where hiredate = last_day(hiredate)-2 ;
//
//转换函数
//
to_char //将date转换成字符类型
to_date //将字符串转换成date
sys_context //7个参数
1.terminal //当前会话客户所对应的终端标识符
2.language //语言
3.db_name //当前数据库名称
4.nls_date_format //当前会话客户所对应的日期格式
5.session_user //当前会话客户所对应数据库的用户名
6.current_schema //当前会话客户所对应的默认方案名
7.host //返回数据库所在主机的名称
SQL> select sys_context('userenv','db_name') from dual;
//日期是否可以显示 时/分/秒
yy //两位数字的年份 2004->04
yyyy //四位数字的年份 2004年
mm //两位数字的月份 8月->08
dd //2位数字的天 30号->30
hh24 //8点->20
hh12 //8点->08
mi //分钟
ss //秒
insert into emp values (sysdate,23,23,10); //添加系统时间,以时分秒存入
select ename,to_char(hiredate,'yyyy/mm/dd hh24:mi:ss') from emp;
//薪水是否可以显示指定的货币符号
9 //显示数字,并忽略前面0
0 //显示数字,如位数不足,则用0补齐
. //在指定位置显示小数点
, //在指定位置显示逗号
$ //在数字前加美元
L //在数字前加本地货币符号
C //在数字前加国际货币符号
G //在指定位置显示组分隔符
D //在指定位置显示小数点符号(.)
select to_char(sal,'L99999.99') from emp; ¥3222.00
//显示1980年入职的所有员工
select * from emp where to_char(hiredate,'yyyy')=1980;
//显示所有12月份入职的员工
select * from emp where to_char(hiredate,'mm')=12;
//使用sys_context函数的7种用法
SYS_CONTEXT('USERENV','DB_NAME
--------------------------------------------------------------------------------
orcl
SQL> select sys_context('userenv','session_user') from dual;
SYS_CONTEXT('USERENV','SESSION
--------------------------------------------------------------------------------
SCOTT
SQL> select sys_context('userenv','language') from dual;
SYS_CONTEXT('USERENV','LANGUAG
--------------------------------------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
SQL> select sys_context('userenv','host') from dual;
SYS_CONTEXT('USERENV','HOST')
--------------------------------------------------------------------------------
WORKGROUP/VALEN-PC
SQL> select sys_context('userenv','nls_date_format') from dual;
SYS_CONTEXT('USERENV','NLS_DAT
--------------------------------------------------------------------------------
DD-MON-RR
SQL> select sys_context('userenv','terminal') from dual;
SYS_CONTEXT('USERENV','TERMINA
--------------------------------------------------------------------------------
VALEN-PC
SQL> select sys_context('userenv','current_schema') from dual;
SYS_CONTEXT('USERENV','CURRENT
--------------------------------------------------------------------------------
SCOTT
相关文章推荐
- Oracle Database :玩转Oracle学习笔记之(23):Oracle数据库管理--导入及导出
- 玩转oracle学习第一天
- 玩转Oracle(3)
- 玩转Oracle之12c 可插拔数据库数据泵功能体验
- 韩顺平玩转oracle之pl/sql听课笔记《三》
- 玩转Oracle-PL/SQL异常学习笔记
- 【玩转Excel】Oracle PLSQL处理生成XLSX文件
- 玩转oracle学习第四天
- Oracle Database :玩转Oracle学习笔记之(25):Oracle事务
- 玩转oracle学习第二天
- 玩转windows下oracle的服务
- Oracle Database :玩转Oracle学习笔记之(20):Oracle远程连接以及连接命令
- Oracle Database :玩转Oracle学习笔记之(26):Oracle命令
- 玩转Oracle(5)
- 玩转oracle学习第三天
- [Oracle] 炼数成金Oracle 12C RAC集群原理与管理实战 + 玩转数据库 释放数据价值
- Oracle学习笔记1(韩顺平玩转oracle)
- 韩顺平玩转oracle之pl/sql听课笔记 《一》
- Oracle技术之玩转oracle跟踪
- Oracle Database :玩转Oracle学习笔记之(21):Oracle用户和用户管理