Oracle基础问答 与 常用技巧
上一篇 / 下一篇 2008-06-11 21:48:07 / 个人分类:Oracle
- 文件版本: V1.0
- 开发商: 本站原创
- 文件来源: 本地
- 界面语言: 简体中文
- 授权方式: 免费
- 运行平台: Win9X/Win2000/WinXP
锁定设置口令:tiger51Testing软件测试网iA r"Zm&C_
全局数据库名:orcl
#Em#w9Hq"y8sZ\k0系统标符:orcl51Testing软件测试网Z
d!M.N$s3@,p9Qir;i
用户名/口令:scott/tiger51Testing软件测试网m*[OfUh.l
按F10可用IE执行sqlplus51Testing软件测试网"?O*Yb-I
错误:ora-28000 the account is locked
ly$V4M]s#{Kq0解决:新装完Oracle10g后,用scott/tiger测试,会出现以下错误提示:
6JD:y!u\@ La
W0 oracle10g the account is locked
Q({5T#\9K4E0K5wQ0 oracle10g the password has expired51Testing软件测试网IxpHm@5S\
原因:默认Oracle10g的scott不能登陆。
*^2Y!q
fPj}/l0解决:51Testing软件测试网 NY!\!U+y%svE9W
(1)conn sys/sys as sysdba; //以DBA的身份登录51Testing软件测试网{^#^/HN
fyV
(2)alter user scott account unlock;// 然后解锁
3|+w7u
J"Jb0(3)conn scott/tiger //弹出一个修改密码的对话框,修改一下密码就可以了51Testing软件测试网fB(mT,z,j ~I
在运行里面输入cmd在DOS模式下输入sqlplus,以system用户名登录,密码是刚装oracle时自己填写的密码orcl,登录进去以后。
0l%CJ `kc~0 B8E;yd|Nd|0SQL> conn sys/sys as sysdba; (分号是必须的但是我是以system登录的所在这不应该写conn sys/sys as sysdba应该写conn system/orcl as sysdba;)51Testing软件测试网6vsoo)I#N/PZ/Ow#k
Connected.51Testing软件测试网AS9n1n/I&a
SQL> alter user scott account unlock;51Testing软件测试网 d$Lr}/G1|g0mV\2tL
User altered.
J(Pmxo+rH;r$W0SQL> commit;
A$@Opr:yD(ywyK+W0 Commit complete.51Testing软件测试网,W,WFO4g@
SQL> conn scott/tiger//请输入新密码,并确认后OK51Testing软件测试网f
l5y9@Sp:X#b/x\S,p
Password changed
Jd(A4Y3WT%R B0Connected.51Testing软件测试网\zqj%s M1@'vvK
n n6Tae pi0授权:51Testing软件测试网'` c3xY:A,Mo
conn sys/scott as sysdba;51Testing软件测试网!T&J%o
D$}9@m(M
grant create table,create view to scott;
语句学习:51Testing软件测试网7DI gh"\6|"W
desc dept/salgrade/emp51Testing软件测试网J2T)^M?_8]HH
select * from dept;51Testing软件测试网U
J;oOn#DB+l
select sal*12 from emp;
{rCws!ky
um(vW0select 2*3 from dept;51Testing软件测试网_ VlNz-{Y$k
select ename||sal from emp;(串连接)
.\x2Xb,z{ds5H0select sal sal_anme from emp;(取别名)
8T*vz*y!Dd}q2|0select sal "sal dd" from emp;()
:JE~'q$^D0select ename||'afasdf' from emp;(连接)
cd%Q1KMwA0select ename||'sdfs''sdf' from emp;(用双引号显示单引号)
|rkvK]0select deptno from emp;51Testing软件测试网&JmS5]UC_:y
select distinct deptno from emp;(distinct去掉重复的)
Z`([[1`C;\#FK0select distinct deptno,job from emp;
]&W&a^k
~up0select * from emp where deptno=10;
bO,T rP:g&K2q+~5f6S\0select * from emp where ename='CLARK';51Testing软件测试网GS
QPk%X;P.d7h
select sal,deptno from emp where deptno!=10;(!=与<>等同)
#s}
N @unD^0select ename,sal from emp where ename>'CBA';51Testing软件测试网:CRWOB{&L&h
m9[2`
select ename,sal from emp where sal between 800 and 1500;(其中包括800和1500)51Testing软件测试网lY6vlO!?(^ R
select ename,sal form emp where sal >=800 and <= 1500;
select ename,sal,comm from emp where comm is null;(正确的写法,not null)51Testing软件测试网-ZGsDu'~o1B4r
select ename,sal,comm from emp where comm=null;(错误的写法)51Testing软件测试网3P5h1cA
D;VJo&V8G
H"\*WHh0select ename,sal,comm from emp where sal in (800,1500,2000)(取得等于800,或1500,或2000的值)51Testing软件测试网6p#^-Y
sL
_q_
select ename,sal,comm from emp where ename in ('SMITH','KING','ABC')(取得满足条件的值)
eq3Bf6t/Y0select ename,sal from emp where deptno=10 and sal>1000; (and可以改成or)
3K_h%iY;Y6M0select ename,sal from emp where sal not in (800,1500);(只要不是800,1500的)51Testing软件测试网S+cDO*?GS
lpe
xo0%代表0到多个,_代表一个字符,\代表转义字符51Testing软件测试网1CF{/x*R%\
select ename from emp where ename like '%ALL%';51Testing软件测试网(DRx#jd,@F
select ename from emp where ename like '_A%';(满足第二个字符为A的)
*Bp4m0k1H
^T0select ename from emp where ename like '%\%%';(满足有%的)
!VDa%bA$H!M'e0如果不想用\做转义字符.可以这么写:
&q;Su{EHy0select ename from emp where ename like '%$%%' escape '$';(即以$为转义字符)
%wiS`[8|Yk-X~0order by语句(排序)51Testing软件测试网CPX1i%kog1^L
select * from dept;51Testing软件测试网 L&mn(Kd B2Y |
select * from dept order by deptno desc;
+Je(K(@-s0select empno,ename from emp where deptno<> 10 order by empno asc;(先筛选完再排序)51Testing软件测试网 v2d4^2c2DE
select ename,sal,deptno from emp order by deptno asc,ename desc;(先按deptno升序后,再按ename降序)
X.z0l@\1QJ o0函数的使用:51Testing软件测试网$}tDb jK
kr f.O
单行函数(给多条就产生多条输出):
8Heo0z[-}:?
y0select lower(ename) from emp; 小写
Q.q5@uY-_Mk0select ename from emp where lower(ename) like '_a%';
8l2`1dfR3S6r3ob(P0select ename from emp where ename like '_a%' or ename like '_A%';
select substr(ename,1,3) from emp;(从第一个字符开始写,写三个字符)
dDe0U"o9p0select substr(ename,2,3) from emp;(从第二个字符开始写写三个字符)
/iehqq3U&d7V0select chr(65) from dual;(把65转成ASCII字符)
A!M4m;igC5E0select ascii('A') from dual;51Testing软件测试网Q@G&_
j.w*ys
select round(23.652) from dual;(四舍五入)
9WO[X.T$O7ql5p3v:C0select round(23.652,2) from dual;(四舍五入到小数点后两位)51Testing软件测试网/Z/s4U!X)zB
select round(23.5443,-1) from dual;(结果20)
G_/z(U Rk,cnY'f0上面的函数有个概念即可,不记得查一下就好.下面的函数很重要,无论如何记住它们.51Testing软件测试网2DPiB@0Q
1.to_char转换日期,数字
Y o3m,q0na0select to_char(sal,'$99,999.9999') from emp;(让工资以$99,999.9999的形式显示,其实9就是一位数字)(美元)51Testing软件测试网.Ku6Oq"\
select to_char(sal,'L99,999.9999') from emp;(人民币)51Testing软件测试网Zv9r-i/W_
select to_char(sal,'L00000.000') from emp;(统一格式,不足的以0补齐)51Testing软件测试网8d.YwWH
XaZ `#a
select to_date(hiredate,'YYYY-MM-DD HH:MI:SS') from emp;51Testing软件测试网|#z5FT#O|
F;P
select to_date(sysdate,'YYYY-MM-DD HH24:MI:SS') from emp;(把当前日期转成24小时制的.默认是12进制的)
mf`KBohvxm0select ename,hiredate from emp where hiredate > to_date('1981-2-20 12:34:56','YYYY-MM-DD HH24:MI:SS') ;51Testing软件测试网)Mubs2~
select sal from emp where sal> to_number('$1,250.00','$9,999.99');
"Bu0KP"|7\0select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from emp;51Testing软件测试网we l!M{ Y.E
select ename,sal*12+comm from emp;(这样只要表达式中有一个空值,结果就为空)
Dn&t"`3G&XMsg0select ename,sal*12+nvl(comm,0) from emp;
多行(组)函数(给出一条或者多条,只会有一行输出)51Testing软件测试网PwiR v1p E
select max(sal) from emp;51Testing软件测试网:W ImON5{-c
select min(sal) from emp;
&X%q!}eQ0select avg(sal) from emp;51Testing软件测试网:i5}*HW8mq4mZ.D
select to_char(avg(sal),'999999.99') from emp;
5Pc+Vb_1B:o0select round(avg(sal),2) from emp;51Testing软件测试网/e:l`uZ-q
select sum(sal) from emp;统计总额51Testing软件测试网nU ?q!Rh\VBC
select count(*) from emp;统计记录
Z
Wr&nL
H:?\)dCx:\0select count(*) from emp where deptno=10;求出部门号为10的人数为多少.
H*?#h8jCa(eND0select count(comm) from emp;(只要不为空值就算一个)51Testing软件测试网
RnT!nW
PGj
select count(distinct deptno) from emp;对非重复的条目进行统计