JAVAOracleWord格式文档下载.docx
《JAVAOracleWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《JAVAOracleWord格式文档下载.docx(37页珍藏版)》请在冰豆网上搜索。
管理工具-->
服务)
3.运行oracle的universalinstaller(开始-->
程序-->
oracleinstallatioinproducts-->
universalinstaller)删除所有的oracle产品
4.卸载程序执行完毕后,oracle并不能别干净的清除,这时候还需要手动的将文件清除。
5.修改注册表regedit,将HKEY_CLASS_ROOT-->
删除所有以ORACLE或者ORAL开头的注册表项
6.将HKEY_LOCAL_MACHINE\SOFTWARE下ORACLE注册表项删除
7.将HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Service下的以Oracle开头的注册表项
8.删除HKEY_CURRENT_USER\SOFTWARE下的oracle注册表项然后退出注册表
9.重启计算机
10.删除c:
\ProgramFiles\Oracle目录
11.删除所有硬盘上ORACLE_BASE(一般为c:
\oracle)目录
sysman:
如何查看服务名:
1.查看位置C:
\oracle\product\10.2.0\db_1\NETWORK\ADMIN
2.修改tnsnames.ora
EDU_SUSHE=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.10.210)(PORT=1521))
)
(CONNECT_DATA=
(SERVICE_NAME=orcl)
用户名:
hibernate密码123456
3.目录介绍
vFunction:
函数库
vProcedures:
过程
vTriggers:
触发器
vTables:
表【CRUD操作C:
CreateR:
ReadU:
UpdateD:
Delete】
vView:
视图,虚拟表【多个表之间的一个结果集】
vSequence:
序列
vUsers:
用户【测试用户:
scott密码:
tiger】
针对用户进行解锁操作:
alteruserSCOTTaccountlock;
锁定账户
alteruserSCOTTaccountunlock;
解锁账户
作业:
编写tnsnames.ora,实现连接172.16.10.210数据库服务器,访问boss表中数据,有多少行有多少列。
使用工具PLSQLDevelop。
3、开发工具
1.命令行
Cmd进入DOS界面------------>
sqlplusscott/tiger@edu访问外部数据库服务器
sqlplusscott/tiger访问本地数据库服务器
2.SQLPLUS
3.SQLDevelop
4、SQL语句介绍
SQL语句是关系数据库最基本的操作语言。
基本上不同的数据库厂商支持的SQL大部分都相似,但有些特殊的存在着不同【MySQL、Oracle分页】。
SQL:
结构化查询语言StructuredQueryLanguage
SQL语句包括数据查询语言select、数据操作语言DML(insert、update、delete)
【作用级别是在表中行数据上】,事务控制语言(commit提交、rollback回滚),数据定义语言DDL(create创建、alter修改、drop删除)
【作用级别在表、视图、用户等】,数据控制语言DCL(grant授权、revoke回收)。
DML:
DataManipulationLanguage【使用场所最多】
DDL:
Datadefinitionlanguage
DCL:
DataControlLanguage
v创建用户【默认使用scott】
createuser"
120"
;
创建用户
identifiedby"
1"
指定密码
grantconnectto"
允许用户连接至数据库
grantresourceto"
允许用户使用数据库中存储空间
grantunlimitedtablespaceto"
允许用户不受表空间的限制
用户在Oracle中又叫一个方案Schema。
也就是用户下面可以有专门的表、视图、存储过程、函数等。
修改:
alteruser"
identifiedby"
修改密码
删除:
dropuser“120”
[扩展:
]
如何访问别的用户下的表:
select*fromhibernate.bosst
但是实现跨用户访问,有时无法访问到表中数据,处理方式--->
提高访问权限:
grantselect,insertonBOSSto"
赋予查询、插入Boss表的权限给用户120
v创建表
createtablestudent--创建表
(
idnumber(10)notnull,--ID
namevarchar2(50),--姓名
sexnumber
(1)--性别
)
添加列:
altertablestudentaddagenumber(3);
删除列:
altertablestudentdropcolumnage;
列重命名:
altertablestudentrenamecolumnagetoage1;
修改列的数据类型或者长度:
altertablestudentmodifyage1number(10);
删除表:
droptablestudent;
Truncatetablestudent;
数据类型:
包括:
字符、数值、时间日期、LOB、RAW
字符数据类型:
VARCHAR2()、char()、nvarchar()
当使用长度固定的字符数据类型时,采用char,其长度为1-2000个字节。
VARCHAR2和nvarchar支持可变长度。
其长度为1-4000个字节
数值类型:
number,可以存储整数、浮点数、实数,精度可以高达38位。
其格式number(p,s)p:
表示精度s:
表示小数点位数【s可以忽略】
日期类型:
date、timestamp
LOB:
大对象数据类型,可以存储高达4GB的非结构化数据。
包括CLOB(存储大量的字符数据),BLOB(存储较大的二进制对象,例如图像、视频等)。
RAW:
存储二进制数据。
5、数据操作语言
v插入
1.insertintostudent(id,name,sex,age1)values(1000,'
姚明'
1,35)
往student表中四个字段添加数据。
2.insertintostudentvalues(1000,'
不用定义往数据库中哪个字段填充数据,student表中任何字段都会插入新值
3.insertintostudent(id)values(1001)
对固定的某一列添加新值。
4.添加大量数据
insertintostudentselect*fromstudentt
注意:
PLSQL中要求选中某一段SQL语句然后选择执行,此时执行的就是选中的SQL语句。
v更新
1.更新全部的字段数据
updatestudentsetname='
姚小明'
2.更新某一行的列的数据
姚大明'
whereid=1000;
3.更新某一行中多列数据
age1=80whereid=1000;
v删除
1.删除指定条件数据行【from可省略】
deletefromstudentwhereid=1000;
2.删除所有数据行
deletefromstudent
3.直接截断整个表数据,使用truncate
truncatetablestudent效率比delete高
6、数据查询语言
Select是用于检索数据库中表数据。
基本结构:
Select<
*,column[alias]>
from表名
其中*号表示匹配所有的列,alias给列指定别名。
v基本查询
1 检索所有的列
select*fromdept;
2 检索特定的列
selectename,job,salfromemp;
3 指定别名
SELECTEname“?
”,Job,SalFROMEmp;
SELECTEnameas?
Job,SalFROMEmp;
as?
t.job?
SalFROMEmpt;
4 检索日期列
selectt.ename,t.hiredatefromempt;
--?
F6?
selectt.ename,to_char(t.hiredate,'
yyyy/mm/dd'
)?
fromempt;
to_char(?
5 取消重复行
distinct
selectdistinctt.mgr,t.deptnofromempt;
6 使用算数表达式
算术表达式有加减乘除,其中乘除优先级要高。
如果要执行加减运算,则采用括号进行处理。
selectt.ename"
姓名"
t.job"
职位"
t.sal*12"
年薪"
t.sal+m"
月薪"
7 处理null
null?
0.?
publicclassEmp{
privateStringempNo;
privateStringename;
privateStringjob;
privateFloatsal;
将薪水字段设置为包装类类型,原因是因为如果没有对薪水字段设置值,那么添加到数据中的数据就是0.
}
Stringsql="
insertintoemp(empno,ename,sal)values('
"
+emp.getEmpNo()+"
'
'
+emp.getEname()+"
"
+emp.getSal()+"
)"
select1+null*1fromdual;
测试结果均为空
那么去处理空情况,需要使用函数
Ø
使用函数nvl函数
nvl(exp1,exp2):
表示如果exp1为null,那么值返回exp2.如果exp1不为null,那么值返回exp1.
【注意:
SQL语句中不分大小写】
selectt.Ename"
t.sal,m,
t.sal+nvl(m,0)"
使用nvl2函数
Nvl2(exp1,exp2,exp3):
如果exp1为空,那么值采用exp3.如果exp1不为空,那么采用exp2对应的值。
nvl2(t.sal+m,t.sal+m,t.sal)"
altertablesalemodifyNAMEdefault'
altertablesaleaddsexnumber
(1)default1notnull;
--添加sex列默认值为1
altertablesaleaddtimesdatedefaultsysdatenotnull;
--提供默认时间点
8 连接字符串
JAVA?
+,?
||?
select'
姓名:
||t.ename||'
他的薪水为:
||t.sal"
介绍"
concat('
A'
B'
错误情况:
1.没有足够的值情况
insertintosalevalues(2001069,2001064);
错误
2.单引号、双引号情况
3.单词写错
4.修改date类型的值,文字与字符串格式不匹配问题
updatesaletset
t.times=to_date('
2013-04-2811:
24:
51'
yyyy-MM-ddhh:
mi:
ss'
)
wheret.id=2001069
vWhere条件过滤
where?
and?
or?
not?
=
!
=或者<
>
=>
大于等于大于
<
=<
小于等于小于
Between....And
在两者之间
In(,,,,)
like
匹配字符样式,常用模糊查询
isnull
测试null
检索数字
SELECT*FROMEmptwheret.empno=7369;
?
SELECT*FROMEmptwheret.ename='
SMiTH2'
使用单引号进行标识。
SQL中不分大小写,传递进来的值分大小写。
函数:
处理大小写
selectupper('
a'
)fromdual
selectlower('
S'
1982?
SELECT*FROMEmptwheret.hiredate>
to_date('
1982-01-01'
yyyy-MM-dd'
SELECT*FROMEmptwhereto_char(t.hiredate,'
)>
'
yyyy-MM-ddhh24:
指定24小时制
指定12小时制
Where?
betweenand
Betweenand?
between?
select*fromemptwheret.salbetween3000and5000
Like?
select*fromemptwheret.enamelike'
%AM%'
模糊查询统配符有两种:
%和_
其中%号表示匹配0个或者多个字符。
_下划线表示匹配一个字符。
_AM%'
但是在处理过程中,如果有字符刚好为通配符,那么如何处理?
使用关键字escape。
%s_%'
escape'
s'
表示escape指定的字符其后面的通配符当成普通字符使用。
in?
900?
3000?
select*fromemptwheret.salin(900,3000)
select*fromemptwheret.salnotin(900,3000)
null,?
true,?
false?
select*fromemptwheremisnull
当与null进行比较时,不要使用等于或者不等于。
select*fromemptwheremisnotnull
1.查询薪金在800到1600之间的员工信息
2查询员工SMITH,ALLEN,JAMES的信息
3.查询员工编号为7369和7876的员工信息
4.查询姓名以S开头的员工信息
5.查询姓名的第二个字符为L的员工信息
6.查询姓名包含ME的员工信息
7.选择在部门30中员工的所有信息
8.列出职位为(MANAGER)的员工的编号,姓名
9.找出奖金高于工资的员工
10.找出每个员工奖金和工资的总和
andornot
true------and
如果条件有一个为true,那么返回true--------or
如果条件为false,使用not转变为true-------not
优先级not最高,其次为and,再然后为or。
示例1:
查询部门编号为20,职位为经理的个人信息。
select*fromemptwheret.deptno=20andlower(t.job)='
manager'
示例2:
查询工资高于2500,或者岗位为经理的个人信息。
select*fromemptwheret.sal>
2500orlower(t.job)='
true?
or
SQL?
SELECT*
FROMLoginusert
WHEREt.Username='
admin'
ANDt.Password='
OR'
1'
='
oracle?
orderby?
desc?
asc?
select*fromemptorderbyt.sal
select*fromemptorderbyt.saldesc
selectt.ename,nvl(t.sal+m,t.sal)薪水fromemptorderby薪水
selectt.ename,nvl(t.sal+m,t.sal)薪水fromemptorderby2
2表示薪水所在查询的列的位置。
使用多列排序。
示例:
按照工资升序,按照奖金降序排列。
select*fromemptorderbyt.salasc,mdesc;
注意优先级,先执行orderby前面的排序条件,执行完之后再去执行后面的条件排序。
1.找出部门10中的经理(MANAGER)和部门20中的普通员工(CLERK)
2.找出部门10中既不是经理也不是普通员工,而且工资大于等于2000的员工
3.找出有奖金的员工的不同工作
4.找出没有奖金或者奖金低于500的员工
5.显示雇员姓名,根据其服务年限,将最老的雇员排在最前面
6.查询工资高于800,或者岗位是manager的员工,并且姓名首字母为S开头的员工信息
7.查询岗位不是分析师(ANALYST)和经理(MANAGER)的所有员工
v数据分组
groupby?
groupby,?
Max:
Min:
Avg:
Sum:
Count:
selectmax(t.sal)"
min(t.sal)"
fromEmpt
selectavg(t.sal)"
selectsum(t.sal)"
selectcount(*)"
fromEmpt?
selectcount(distinctt.sal)fromempt
⏹Groupby:
SELECTt.Deptno,SUM(t.Sal)"
月值"
AVG(t.Sal)"
平均值"
MAX(t.Sal)"
最高值"
MIN(t.Sal)"
最小值"
FROMEmptGR