Oracle数据库的基本操作.docx
《Oracle数据库的基本操作.docx》由会员分享,可在线阅读,更多相关《Oracle数据库的基本操作.docx(13页珍藏版)》请在冰豆网上搜索。
Oracle数据库的基本操作
6、Oracle?
?
?
?
?
?
?
?
?
?
?
Linux?
?
su-root?
?
?
?
?
?
?
?
?
?
1.连接数据库
Sqlplus/assysdba?
sys?
?
?
?
?
?
?
?
2.解锁用户
alteruserhridentifiedbyhraccountunlock;?
hr?
?
?
?
(?
?
?
/?
?
)
3.连接到用户
Coonhr/hr?
?
?
hr?
?
(?
?
?
/?
?
)
4.打开关闭
Shutdown?
?
?
?
?
Startup?
?
?
?
?
5.查看
Select*fromtab;?
?
?
?
?
?
?
?
?
Showuser?
?
?
?
?
?
6.设置时间显示格式
altersessionsetnls_date_format='yyyy-mm-ddhh24:
mi:
ss';
?
?
:
2013-07-2714:
21:
28
7.oracle的表的管理
7.1显示和设置环境变量
1.linesize
?
?
:
?
?
?
?
?
?
?
?
?
?
?
80?
?
?
showlinesize
setlinesize90
2.Pagesize
?
?
:
?
?
?
?
?
?
?
?
?
?
?
?
?
14
?
?
?
linesize?
?
7.2标识符命名规则
?
?
?
?
?
?
?
?
?
∙?
?
?
?
?
?
?
∙?
?
?
?
?
?
30?
?
?
∙?
?
?
?
oracle?
?
?
?
∙?
?
?
?
?
?
?
?
A-Z,a-z,0-9,$,#?
7.3oracle支持的数据类型
?
?
?
char ?
?
?
?
2000?
?
?
?
?
?
:
char(10) ‘?
?
’?
?
?
?
?
?
‘?
?
’,?
?
6?
?
?
?
?
?
‘?
?
’
varchar2(20) ?
?
?
?
4000?
?
?
?
?
?
:
varchar2(10)‘?
?
’oracle?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
clob(characterlargeobject)?
?
?
?
?
?
?
?
4G
char?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
varchar?
?
?
?
?
?
?
number?
?
-10?
38?
?
?
10?
38?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
number(5,2)
?
?
?
?
?
?
?
5?
?
?
?
2?
?
?
?
?
:
-999.99?
999.99
number(5)
?
?
?
?
5?
?
?
?
?
99999?
-99999
?
?
?
?
date?
?
?
?
?
?
?
?
?
oracle?
?
?
?
1-1?
-1999
timestamp?
?
oracle9i?
date?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
blob?
?
?
?
?
?
?
?
?
?
?
/?
?
4G ?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
7.4创建表
?
?
?
?
createtablestudent( ---?
?
xh number(4), --?
?
xm varchar2(20), --?
?
sex char
(2), --?
?
birthdaydate, --?
?
?
?
sal number(7,2) --?
?
?
);
?
?
?
?
?
?
?
?
?
?
?
Createtablebiaoming
Asselect*fromdempwhere1=2;
新表t14的字段名称、类型、长度,和dept表完全相同,只是没有内容
?
?
?
?
?
?
?
?
Createtablebiaoming
Asselect*fromdemp;
新表t14的字段名称、类型、长度,值和dept表完全相同。
7.5插入数据
?
?
?
?
?
?
Insertintobiaomingvalues(,,,);commit?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
Insertintobiaoming(ziduan1,ziduan2,ziduan3)
Values(zhi1,zhi2,zhi3)
赋值过程中,时间和字符串要加单引号;注意类型匹配,不然会发生隐式类型转换;
?
?
?
?
?
Altertablet10modify(enamedefault‘haha’)
?
?
t10?
?
?
?
;(?
?
ename?
default?
)
?
?
?
t10?
insert?
?
?
?
?
?
?
?
ename?
?
?
?
?
?
?
?
’haha’?
?
?
?
;
?
?
?
?
?
default?
?
?
?
?
?
?
?
?
?
?
?
’haha’?
?
?
?
;
?
?
?
?
?
?
?
?
?
?
?
?
?
?
default?
?
?
?
null;?
?
?
?
?
?
?
?
?
?
null,?
?
?
?
?
?
default?
;
?
?
?
?
?
?
?
?
?
?
Insertintot10(empno,ename,sal)
Values(&haha,’&hehe’,’&xixi’);
?
?
?
?
?
?
?
?
?
?
?
Insertintot10(empno,ename)
Selectempno,enamefromemp
Whererownum<=3;
?
emp?
?
?
empno,ename?
?
?
?
?
?
t10?
?
7.6更新数据
Updatet10commit;?
?
?
?
?
?
Setcomm=zhi,job=‘zhi’
Whereempno=1002;
?
?
?
?
?
where?
?
?
t10?
?
?
?
?
?
?
comm?
?
?
?
?
?
200;
7.7删除操作
Deletefromt10from?
?
?
?
Whereempno=1002;
7.8查询操作
7.8.1?
?
?
?
?
?
?
?
?
Select*fromtab;
Select*fromemp;?
?
emo?
?
?
?
?
?
Descemp;?
?
emp?
?
?
?
7.8.2?
?
?
?
?
?
?
?
?
?
?
?
?
?
Selectempno,ename
fromemp;
7.8.3?
?
?
?
?
?
?
?
?
Selectsysdatefromdual;dual?
?
?
?
?
?
?
?
?
?
?
select?
?
?
?
?
7.8.4?
?
?
?
?
?
?
?
?
?
?
;(session?
?
?
?
?
?
?
?
?
?
?
?
)
Altersessionsetnls_date_fomat=‘yyyy-mm-ddhh24:
mi:
ss’;
7.8.5?
?
?
?
Selectsysdate+2,sysdate+2/24,sysdate+2/24/60,sysdate+2/24/60/60fromdual;
系统时间+2天系统时间+2小时系统时间+2分钟系统时间+2秒
?
?
:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
;
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
;
7.8.6?
?
null?
?
?
?
?
:
null?
?
?
0,?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
step1:
?
?
?
?
?
?
?
?
?
(?
?
comm?
?
?
?
)
step2:
?
?
comm?
null?
?
?
null?
?
?
?
?
:
where?
?
?
?
?
?
?
=?
?
<>(?
?
?
?
?
?
!
=?
?
<>?
?
^=,?
?
?
?
?
?
<>)
step3:
null?
?
?
?
?
?
:
?
?
?
?
null?
?
?
?
?
?
?
?
?
?
null;
5.?
?
?
?
?
?
:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
;
6.?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
?
?
?
?
?
?
?
?
?
?
;
6.1?
?
?
?
?
?
isanameof?
?
?
?
6.2?
?
?
?
?
?
‘snameis?
?
?
?
6.3?
?
?
?
?
?
isanumber,andit’snameis?
?
?
?
?
?
:
?
?
?
?
?
‘‘?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
;
?
:
?
?
?
?
?
?
?
?
?
?
?
7.?
?
?
?
?
?
?
?
7.1?
?
?
?
?
emp?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
:
?
?
?
?
?
?
?
?
?
?
?
?
?
;?
?
distinct?
?
?
?
?
;
?
?
:
distinct?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
;
?
:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
;
?
?
:
tempinfo?
?
?
1234?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
emp?
?
?
?
?
?
?
?
?
;
?
job?
tempinfo?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
;
7.8.7查找时限定约束条件
1.?
emp?
?
?
?
?
?
?
?
1500?
2500?
?
?
?
?
?
Select*fromempwheresalbetween1000and1200;
2.?
emp?
?
?
?
?
?
10,20?
?
?
?
?
?
?
?
;
Select*fromempwheresalin(10,20);
3.?
emp?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
‘O’?
?
?
?
?
?
;
Select* fromempwhereenamelike‘%o%’
4.检索包含%的记录信息;
Select*fromempwhereenamelike‘%\%%’escape‘\’
5.检索以%开头的记录信息
Select* fromempwhereenamelike‘\%%’escape‘\’
6.?
?
?
?
?
?
?
?
?
Select*fromempwhereename=‘john’orderbysalasc;?
?
Select*fromempwhereename=‘john’orderbysalasc;?
?
asc或者desc影响的字段,仅仅是它紧挨着的那个字段升降顺序;
如果orderby后面跟多个字段,则将结果集先按照第1个字段进行排序,【条件1】,再按照第2个字段进行排序;
Null值的处理
select*fromemporderbycommascnullsfirst;空值排在前
select*fromemporderbycommdescnullslast;空值排在后
7.9多表查询
7.9.1?
?
?
?
Selecte.empno,e.ename,e.deptno,d.dname
Fromempe,deptd
Wheree.deptno=d.deptno;
7.9.2?
?
?
?
?
Selecte.ename,e.sal,j.grade
Fromempe,salgradej
Wheree.salbetweenj.losalandj.hisal;
7.9.3?
?
?
Selecte.empno,e.ename,e.deptno,d.dname
Fromempe
Innerjoindeptd
One.deptno=d.deptno;
7.9.4?
?
?
------------------------------------
7.10子查询
1.?
emp?
?
?
?
?
?
?
?
?
CLARK?
?
?
Select*fromemp
Wheresal>(selectsalfromempwhereename=‘CLARK’);
2.?
?
?
Clark?
?
?
?
?
?
?
?
sal?
?
clark?
?
?
?
?
?
;
Select*fromemp
Wheredeptno=(selectdeptnofromempwhereename=‘clark’)
Andsal>(selectsalfromempwhereename=‘clark’);
3.?
emp?
?
?
?
?
?
?
?
?
?
?
Select*fromemp
Wheresal=(selectmin(sal)fromemp);
4.?
?
?
?
sales?
?
?
?
?
?
?
?
?
?
---------------------------
7.11函数
7.11.1字符处理函数
lower(s),将所给的字符串s全部转换成小写;
upper(s),将所给的字符串s全部转换成大写;
initcap(s),将所给的字符串s中的每个单词转换成首字母大写;
Selectlower(‘howAREyou’)resultfromdual;
concat(s1,s2):
?
?
?
?
s1?
?
?
?
s2?
?
?
?
;
rownum?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
select*from…?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
;?
?
?
?
rowid,?
?
?
?
?
?
?
?
?
?
64?
?
?
?
;(?
?
?
?
?
?
?
?
?
?
rownum?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
)
substr(s,m,[n]):
?
?
?
?
?
?
?
?
?
s?
?
?
?
?
?
?
?
?
?
;
?
?
:
m?
?
?
?
?
?
s?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
;?
?
?
?
?
?
?
?
?
?
?
;
n?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
m?
?
?
?
?
?
?
?
?
;
length(s):
?
?
?
?
?
?
?
?
?
s?
?
?
?
?
?
?
(?
?
?
?
?
?
?
?
?
1?
?
?
;?
?
?
?
?
?
?
2?
?
?
?
?
)
instr(s,s1,[m],[n]):
?
?
?
?
?
?
s1?
?
?
?
s?
?
?
m?
?
?
?
?
?
n?
?
?
?
?
?
?
?
?
?
?
?
?
;
?
?
:
?
?
m?
?
?
?
?
?
?
?
?
m?
?
?
?
?
?
;
?
?
m,n?
?
?
?
?
?
?
?
?
1?
?
?
?
?
?
?
?
s?
?
1?
?
?
s1?
?
?
?
?
;
lpad(s,n,s1):
?
?
?
?
s?
?
?
?
?
?
s1,?
?
?
?
?
n;
rpad(s,n,s1):
?
?
?
?
s?
?
?
?
?
?
s1,?
?
?
?
?
n;
trim(leading|trailing|boths1froms):
?
?
?
?
?
?
?
s1?
s?
?
?
;
?
?
:
leading?
?
?
s?
?
?
s1?
?
;trailing?
?
?
s?
?
?
s1?
?
;both?
?
?
s?
?
?
s1?
?
;(?
?
)
?
?
s?
?
?
?
s1,?
?
?
?
?
;
replace(s,s1,s2):
?
?
?
?
?
?
s?
?
s1?
s2?
?
?
;
7.11.2数字处理函数(主要针对数字的格式进行设定)
round(c,[n]):
?
?
?
?
?
c?
?
?
?
?
?
;
?
?
:
n?
?
?
?
?
?
?
?
?
?
?
?
?
;?
?
n?
?
?
?
?
?
?
?
;?
?
n?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
;
trunc(c,[n]):
?
?
?
?
?
c?
?
?
?
?
?
?
?
?
?
n?
;
?
?
:
n?
?
?
?
?
?
?
?
?
?
?
n?
?
?
n?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
;
?
?
n?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
;?
?
n?
?
?
?
?
?
?
?
?
?
?
?
?
n?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
;
nvl(e1,e2):
如果第1个参数e1的值为null,则返回e2的值;
nvl2(e1,e2,e3):
如果第1个参数e1的值为null,则返回e3的值;
如果第1个参数e1的值不为null,则返回e2的值;
7.11.3组函数
Avg([ditingct|all]expr):
计算expr的平均值
Sum([distinct|all]expr):
计算expr的总计值
Max([distinct|all]expr):
计算expr的最大值
Min([distinct|all]expr):
计算expr的最小值
Count(*[distinct|all]expr):
计算表中数据总数
说明:
distinct去除重复值,all所有值,空值被自动忽略
Groupby创建数据组
Selectdeptno,job,sum(sal),count(*),avg(sal)
Fromemp
Groupbydeptno,job
Orderbydeptno;
使用where子句对分组前的的数据进行筛选,使用having子句对分组后的数据进行筛选
组函数不能使用在where中,可以使用在having中
Select*fromempgroupbydeptnohavingavg(sal)<200
Orderbydeptno;正确
Select*fromempgroupbydeptnowhereavg(sal)<200
Orderbydeptno;错误
SQL语句的编译顺序from--where--groupby--having--select--orderby
7.12约束