时间:2021-07-01 10:21:17 帮助过:3人阅读
1.基本的登录语句:
2.JDBC连接Oracle数据库的写法:
--登录Oracle
sqlplus scott/tiger@192.168.56.101:1521/orcl
--清屏
host cls
--当前用户
show user
USER 为 "SCOTT"
jdbc:oracle:thin:@localhost:1521:orcl
jdbc:oracle:oci:@loaclhost:1521:orcl
第一种方式只需要一个jar包,第二种方式更复杂一些(功能更强大)。
4.设置行宽和列宽
--开始记录
spool d:\1.txt
--结束记录
spool off
--当前用户下的表(oracle中必须要有from)
select * from tab;
--员工表的结构desc是describe的缩写
desc emp
--查询所有员工信息
select * from emp;
--显示设置行宽
show linesize
--结果linesize 80
set linesize 120
--设置列宽(col代表column,a表示字符类型,8表示长度为8,9表示以为数字,9999表示四个数字,for是format的缩写)
col ename for a8
col sal for 9999
--/表示引用上面的sql语句
/
--通过列名查询
select empno,ename,job,mgr,hiredate,sal,comm,deptno form emp;
--第 2 行出现错误: ORA-00923: 未找到要求的 FROM 关键字
--c命令 change缩写
--指定第二行
2
--结果:2* form emp
--/form原错误值/from新值
c /form/from
--改正结果:2* from emp
--/代表引用上面的sql语句
/
将comm奖金中的null值变成0,从而不会出现总薪水的值为null
select empno,ename,sal,sal*12,comm,sal*12+nvl(comm,0) from emp;
--ed是edit的缩写
ed
--结果:已写入 file afiedt.buf
--执行sql语句
/
"别名"或者不加引号,区别:别名中有空格或者关键字必须加上双引号
12 | --别名的使用 select empno as "员工号" ,ename "姓名" ,sal "月 薪" ,sal*12,comm,sal*12+nvl(comm,0) from emp |
12345678910111213 | --distinct去掉重复记录 select distinct deptno from emp; --字符串连接 --distinct作用于后面所有的列 select distinct deptno,job from emp; --连接符 --concat select concat( 'Hello' , ' World' ); --dual: 伪表 select 'hello' || ' world' 字符串 from dual; |
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | --字符串大小写敏感 --查询名叫KING的员工 select * from emp where ename= 'KING' ; --日期格式敏感 --查询入职日期是17-11月-81的员工 select * from emp where hiredate= '17-11月-81' ; --默认格式:DD-MON-RR --查看日期格式 select * from v$nls_parameters; --修改日期格式
--修改成默认 alter session set NLS_DATE_FORMAT= 'DD-MON-RR' ; --between and --查询工资1000~2000之间的员工 select * from emp where sal between 1000 and 2000; --between and: 1. 包含边界 2. 小值在前 大值在后 --in 在集合中 --查询10和20号部门的员工 select * from emp where deptno in (10,20); --null值 3. 如果集合中含有null,不能使用not in;但可以使用in --错误查找语句 select * from emp where deptno not in (10,20, null ) --like 模糊查询 -- %(任意位数字符) _(一位字符) --查询名字以S打头的员工 select * from emp where ename like 'S%' ; --\转义符号,转义_这个特殊符号 select * from emp where ename like '%\_%' escape '\' --回退已完成,oracle自动开启事务,所以可以直接回滚 rollback ; --排序 --查询员工信息,按照月薪排序 select * from emp order by sal; --order by 后面 + 列,表达式,别名,序号 select empno,ename,sal,sal*12 from emp order by sal*12 desc ; --多个列排序(先按照第一个排序,相同时按照第二个排序) select * from emp order by deptno,sal; --order by 作用于后面所有的列;desc只作用于离他最近的一列 select * from emp order by deptno desc ,sal desc --查询员工信息,按照奖金排序 --null 值 4. null的排序,默认情况下null最大 select * from emp order by comm; --oracle默认进行分页,可以设置每页记录数 set pagesize 20 --a命令: append(在当前的sql语句的基础上添加desc) --a与后面的关键字之间要有两个空格(防止语句连到一起) a desc select * from emp order by comm desc nulls last (将 null 放到最后,默认情况下 null 最大) |
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 | --字符函数 select lower ( 'Hello WOrld' ) 转小写, upper ( 'Hello WOrld' ) 转大写,initcap( 'hello world' ) 首字母大写 from dual; --substr(a,b) 从a中,第b位开始取 select substr( 'Hello World' ,3) 子串 from dual; --substr(a,b,c) 从a中,第b位开始取,取c位 select substr( 'Hello World' ,3,4) 子串 from dual; --length 字符数 lengthb 字节数(英文字符数和字节数相同,中文一个字符两个字节) select length( 'Hello World' ) 字符,lengthb( 'Hello World' ) 字节 from dual; --instr(a,b) 在a中,查找b select instr( 'Hello World' , 'll' ) 位置 from dual; --lpad 左填充 rpad右填充 -- abcd填充后共10位,左边右边分别填充特定符号 select lpad( 'abcd' ,10, '*' ) 左,rpad( 'abcd' ,10, '*' ) 右 from dual; --trim 去掉前后指定的字符 select trim( 'H' from 'Hello WorldH' ) from dual; --replace select replace ( 'Hello World' , 'l' , '*' ) from dual; --四舍五入 select round(45.926,2) 一,round(45.926,1) 二,round(45.926,0) 三,round(45.926,-1) 四,round(45.926,-2) 五 from dual; --结果 一 二 三 四 五 ---------- ---------- ---------- -
|