时间: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 | --别名的使用selectempno as"员工号",ename "姓名",sal "月  薪",sal*12,comm,sal*12+nvl(comm,0) fromemp | 
| 12345678910111213 | --distinct去掉重复记录selectdistinctdeptno fromemp;--字符串连接--distinct作用于后面所有的列selectdistinctdeptno,job fromemp;--连接符--concatselectconcat('Hello','  World');--dual: 伪表select'hello'||'  world'字符串 fromdual; | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | --字符串大小写敏感--查询名叫KING的员工select* fromemp whereename='KING';--日期格式敏感--查询入职日期是17-11月-81的员工select* fromemp wherehiredate='17-11月-81';--默认格式:DD-MON-RR--查看日期格式select* fromv$nls_parameters;--修改日期格式
 
 --修改成默认altersession setNLS_DATE_FORMAT='DD-MON-RR';--between and--查询工资1000~2000之间的员工select* fromemp wheresal between1000 and2000;--between and: 1. 包含边界 2. 小值在前 大值在后--in 在集合中--查询10和20号部门的员工select* fromemp wheredeptno in(10,20);--null值 3. 如果集合中含有null,不能使用not in;但可以使用in--错误查找语句select* fromemp wheredeptno notin(10,20,null)--like 模糊查询-- %(任意位数字符)  _(一位字符)--查询名字以S打头的员工select* fromemp whereename like'S%';--\转义符号,转义_这个特殊符号select* fromemp whereename like'%\_%'escape'\'--回退已完成,oracle自动开启事务,所以可以直接回滚rollback;--排序--查询员工信息,按照月薪排序select* fromemp orderbysal;--order by 后面 + 列,表达式,别名,序号selectempno,ename,sal,sal*12 fromemp orderbysal*12 desc;--多个列排序(先按照第一个排序,相同时按照第二个排序)select* fromemp orderbydeptno,sal;--order by 作用于后面所有的列;desc只作用于离他最近的一列select* fromemp orderbydeptno desc,sal desc--查询员工信息,按照奖金排序--null 值 4. null的排序,默认情况下null最大select* fromemp orderbycomm;--oracle默认进行分页,可以设置每页记录数setpagesize 20--a命令: append(在当前的sql语句的基础上添加desc)--a与后面的关键字之间要有两个空格(防止语句连到一起)a  descselect* fromemp orderbycomm descnulls last(将null放到最后,默认情况下null最大) | 
|  |  | 
|  |  | 
|  |  | 
| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 | --字符函数selectlower('Hello WOrld') 转小写,upper('Hello WOrld') 转大写,initcap('hello world') 首字母大写 fromdual;--substr(a,b) 从a中,第b位开始取selectsubstr('Hello World',3) 子串 fromdual;--substr(a,b,c) 从a中,第b位开始取,取c位selectsubstr('Hello World',3,4) 子串 fromdual;--length 字符数 lengthb 字节数(英文字符数和字节数相同,中文一个字符两个字节)selectlength('Hello World') 字符,lengthb('Hello World') 字节 fromdual;--instr(a,b) 在a中,查找bselectinstr('Hello World','ll') 位置 fromdual;--lpad 左填充 rpad右填充-- abcd填充后共10位,左边右边分别填充特定符号selectlpad('abcd',10,'*') 左,rpad('abcd',10,'*') 右 fromdual;--trim 去掉前后指定的字符selecttrim('H'from'Hello WorldH') fromdual;--replaceselectreplace('Hello World','l','*') fromdual;--四舍五入selectround(45.926,2) 一,round(45.926,1) 二,round(45.926,0) 三,round(45.926,-1) 四,round(45.926,-2) 五 fromdual;--结果        一         二         三         四         五                         ---------- ---------- ---------- -                    
                  
	 	
                    
                    
                    
                    
                    
                
              
                    
                
                  
                     |