上一主题下一主题
«12»Pages: 1/2     Go
关键字
主题 : [转贴]马士兵oracle视频学习笔记[pl/sql之前]
中金在线商城计划
级别: 终身会员


UID: 27150
精华: 0
发帖: 875
威望: 2797 点
学点: 1663 点
贡献: 29 点
好评: 0 点
学币: 58 个
注册时间: 2008-07-29
最后登录: 2018-03-01
楼主  发表于: 2008-10-05 09:13||

0 [转贴]马士兵oracle视频学习笔记[pl/sql之前]

管理提醒: 本帖被 amsizhuang 从 Oracle数据库学习 移动到本区(2008-10-09)
马士兵oracle视频学习笔记-pl/sql之前 HG(J+ocn   
这是我看马老师的oracel视频时所****的笔记,pl/sql部分已经贴出,这是之前部分。其中有些东西,是我 JEF2fro:Z  
I}5#!s< {&  
自己加上的,个人觉得比较重要。希望对大家有帮助 ogt<vng  
------------------------------------------------------------------------------------------- 9{gY|2R_  
-------------------- ,_K /e  
url访问:http://localhost/isqlplus [L.+N@ M  
解锁用户:alert user scott account unlock Z J:h]  
用系统管理员账号登陆数据库:conn sys/sys as sysdba sN6R0YW  
conn scott/tiger 或者connect user/pwd 切换用户 5ua`5Hb;  
ed或者edit//打****一个缓冲文件 Z.a`S~U  
操作回滚:rollback,一旦提交则不可回滚; JXG%Cx!2}  
数据操纵语言dml,数据定义语句ddl,数据控制语言dcl %P!6cyQS  
oy I8}s:  
显示表结构:desc emp ,KXS6:1%5Y  
--单行注释 |sf&t  
/* <ID/\Qx`q  
*/多行注释 D0'L  
SQL>@d:\student.sql //执行sql文件 Te%2(w,B  
-------------------------------------------------- @dl{ .,J  
--创建雇员表emp W\JbX<mQ  
create table emp 7Y`/w$  
( +Y7"!wYR>  
empno number(4) not null ,--员工号 Nj8 `<Sl  
ename varchar(10),--员工姓名 JI TQ3UL:W  
job varchar(9),--工种 *D&(6$ [^  
mgr number(4),--所属经理编号 C&Nga `J  
hiredate date,--入职日期 zGtWyXP  
sal number(7,2),--薪水 cg16|  
comm number(7,2),--奖金 F` /mcyf  
deptno number(2),--部门号 Q\WH2CK  
primary key(empno) Ce: 2Tw  
); A~MAaw!YE  
--创建部门表dept 99G zhX_  
create table dept V1[Cc?o  
( M4MO)MYJ  
deptno number(2) not null ,--部门号 $ {Y? jJ  
dname varchar(14),--部门名称 [sxJ<  
loc varchar(13),--部门位置 L '=mDb  
primary key(deptno) )Sz2D[@n  
); A1VbqA  
--创建工资等级表salgrade K9{]v=#I  
create table salgrade  "pQFIV,  
( [^oTC;  
grade number not null ,--等级 s8i@HO  
losal number,--最低薪水 "x;|li3;  
hisal number,--最高薪水 ]+C;C  
primary key(grade) nT(Lh/  
); <4 l;I*:2&  
--------------------------------------------------------------------- = JE4C9$,  
select ename,sal*12 from emp; yeI((2L@E2  
select 2*3 from emp; %(f&).W  
select 2*3 from dual;--计算表达式 /UwB6s(  
select sysdate from dual;--获取系统当前时间 %E1_)^ ^  
----------------------------------------------------------------------- y(^hlX6gQ  
--字段取别名 /' +GYS  
select ename, sal*12 anuual_sal from emp;--取别名 w6b\l1Z  
select ename, sal*12 as anuual_sal from emp;--取别名 S,Y\ox-  
select ename, sal*12 "anuual sal" from emp;--取别名,可以显示空格,保持大小写 V:<NQd  
------------------------------------------------------------------------------- uA`EJ )d  
--连接符 G@Jl4iHug"  
select ename||'aa''aa' from emp;--"||"连接符号,两个单引号表示一个单引号 ymNL`GYN[  
----------------------------------------------------------------------------- 8-f2$  
--distinct,不重复 Mg7nv\6  
select distinct deptno,job from emp;--先查询,再排除重复记录 *hm;C+<~  
------------------------------------------------------------------------------ ceKR?%8s  
--between,范围之内 be@\5  
select * from emp where sal between 800 and 1500;--between相当于>= and <= fo$5WTY  
-------------------------------------------------------------------------------- )&jE<C0  
--null,空 oBBL7/L  
空值是指不可用来分配的值 8!{;yz  
空值不等于空或空格 7 3 Oo;  
任何类型的数据都有空值 R)[ l 3  
空值相加任何数据还为空 ?zS t  
select ename,sal from emp where comm=null; --没有记录,没有实际用处 JGLjx "Y  
select ename,sal from emp where comm is null; --为空,有记录 2r 0u[  
select ename,sal from emp where comm is not null;--不为空 QH) uh"  
------------------------------------------------------------------------- #]g9O?0$  
--in,在一个枚举的范围内 Boi?Bt  
select ename,sal from emp where sal in(800,1500,1300); +nLsiC{&  
select ename,sal from emp where sal not in(800,1500,1300); T+$Af,~  
-------------------------------------------------------------------------- o3s ME2  
--系统默认的日期格式 C>A*L4c]F  
select ename,hiredate from emp where hiredate>'20-2月 -81'; ~_;x o?@ba  
-------------------------------------------------------------------------- lZ\8$,B)  
--通配符,"_"匹配一个字符,"%"匹配任意的字符串 gG>|5R0  
select ename,sal from emp where ename like '%a%'; D09/(%4j  
select ename,sal from emp where ename like '_a%'; 96 oztUK  
select ename,sal from emp where ename like '%\%%';--系统默认的转义字符为"\" ,hggmzA~  
select ename,sal from emp where ename like '%$%%' escape '$';--escape,指定转义字符 ]jkaOj  
-------------------------------------------------------------------------------------- 2X= pu. ;F  
--order by,先查询,后排序,desc:降序,asc:升序(系统默认) L#\!0YW/@  
select * from dept order by deptno desc; Lwy9QZL  
select * from dept where deptno<>10 order by deptno asc; qMHI-h_A  
select ename,sal,deptno from emp order by sal desc,deptno asc;--先按工资降序排列,工资相同的 B\tP{}P8{  
!_ng_,J  
列,再按升序排列 52zD!(   
--------------------------------------------------------------------------------------- u4W2 {  
--单行函数 byyzXRO;  
--lower(),将字符串转化为小写 F5Xj}`}bq  
select ename from emp where lower(ename) like '%y%'; +V N&kCx)  
select ename from emp where ename like '%y%' or ename like '%Y%'; |3h-F5V)  
--upper(),将字符串转化为大写 a$~pAy5C  
select ename from emp where upper(ename) like '%Y%'; RT E zcJ>  
--substr()字符串截取 >=WlrmI  
select substr(ename,1,3) from emp;--从ename中的第一个字符****始截取三个字符 hm&cRehU  
--chr(),将数字转化其对应的ascii码字符 o\ M  
select chr(65) from dual; j3J\%7^i  
--ascii(),将对应的字符转化为其ascii码对应的数字 '/ >7pB  
select ascii('A') from dual; !n?8'eqWru  
--round()四舍五入,默认精确到各位 qkLp8/G>pO  
select round(23.652) from dual; Ha} TdQ%  
select round(23.652,1) from dual; -k+}w_<Q  
select round(23.652,-1) from dual; 74c[m}'S  
--to_char()将数字或日期转化为字符串 &azy1.i~  
select to_char(sal) from emp; >[D(<b(U&  
select to_char(sal,'$999,999,999.99') from emp;--将sal,安装相应的格式转化为字符串 $YNWT\FE  
select to_char(sal,'L999,999,999.99') from emp; "s!|8F6$  
select to_char(sal,'L000,000,000.00') from emp; TrEo5 H;  
$:美元,L或者l:本地货币 e[:i`J 2  
select to_char(hiredate) from emp; wUj#ACqB  
select to_char(hiredate,'yyyy-mm-dd hh:mi:ss') from emp; @rV|7%u  
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from emp; v"LH^!/  
--to_date(),将当前固定格式的字符串转化为日期 ==?!z<I.d  
select ename,hiredate from emp where hiredate>=to_date('2008-09-03 00:00:00','yyyy-mm-dd /ZeN\ybx  
4dgo*9  
hh24:mi:ss'); G 5T{*  
--to_number(),将当前的固定格式的字符串转化为数字 3utv  
select sal from emp where sal>to_number('$1,050.00','$9,999.99'); +IM: jrT(  
--nvl(),对为空的字段进行**** *MG*]\D  
select ename,sal*12+nvl(comm,0) from emp;--不会空,则加comm,为空则加0; 4^jIV! V  
------------------------------------------------------------------------------- !UV1OU  
--组函数 \%! t2=J !  
--max():最大值,min():最小值,****g():平均值,sum():求和,count():统计记录数 xX5EhVR   
select max(sal) from emp; RM(MCle}  
select min(sal) from emp; :Nt_LsH  
select ****g(sal) from emp; E;vF :?|  
select sum(sal) from emp; b)e';M  
select count(*) from emp; {j!jm5  
select count(comm) from emp;--不统计字段为空的记录 }5??n~:*5  
--group by分组 Wj}PtQ%lp/  
select deptno,****g(sal) from emp group by deptno; @}8~TbP  
select deptno,job,****g(sal) from emp group by deptno,job;--deptno,job相同的记录为一组 WCpCWtmy  
------------------------------------------------------------------------------------------- XP |qY1  
yltzf #%  
--- Ol@ssm  
--h****ing,对分组进行过滤 xyvG+K&  
select deptno,****g(sal) from emp group by deptno h****ing ****g(sal)>1000; t'.oty=  
------------------------------------------------------------------------------------------- O9_S"\8]@  
i"HENJyCb  
------ @'ln)RT,  
select deptno,****g(sal) from emp ~dm/U7B:  
where sal>1000 S Y7'S#  
group by deptno e+? -#  
h****ing ****g(sal)>1200 iL](w3EM  
order by ****g(sal) asc; r@.3.Q  
j0eGg::  
nbhzLUK  
--case when,分支 P\3$Y-id  
统计empno<1003,empno<1005,和其他的记录的个数 ]JUb;B;Z  
select count(*), ;#>,eD2u  
(case when empno<1003 then 1 OS Dx  
when empno<1005 then 2 TSp;Vr OP  
else 3 l|Z<p D  
end) no Vjc*D]  
from emp fho$:S  
group by 2!y%nkO*  
( -y+u0,=p.  
case when empno<1003 then 1 UyWKE<  
when empno<1005 then 2 ,O;+fhUJ(  
else 3 xwm-)~L4T  
end )}KQtkU8:  
); < "8<<   
---------------------------------------------------------------- r8uc.z2%  
--sql,1999新标准 4wa8Vw`  
select ename,sal from emp 7ql&UIeQ  
join (select max(sal) max_sal,deptno from emp group by deptno) t "V>7u{T  
on (emp.sal = t.max_sal and emp.deptno=t.deptno); u>cU*E4/  
--交叉连接 !:7aXT*D$  
select ename,dname from emp cross join dept; _s&sA2r<  
--等值连接 G|"`kAa  
select * from emp,salgrade where emp.sal between salgrade.losal and 02EbmP  
salgrade.hisal; +EnJy li  
select ename,dname from emp join dept on(emp.deptno=dept.deptno); ~5f|L(ODX  
select ename,dname from emp join dept using(deptno); ?pLKUAh  
--非等值连接 pK M5<1J  
select ename,dname,grade from  1aAYBV<3  
emp e join dept d on (e.deptno=d.deptno)  9kkYD  
join salgrade s on (e.sal between s.losal and s.hisal) 'za4c4b*u  
where ename not like '_A%'; z [q O5z~I  
--自连接 j (8I+||  
select e1.ename ,e2.ename from emp e1 #$qhxYyd  
join emp e2 on (e1.mgr=e2.empno) @+S5"W  
--外连接 ;zbF~5e  
select e1.ename,e2.ename from emp e1 left join emp e2 on(e1.mgr=e2.empno); ~TGk`cAM>  
select e1.ename,e2.ename from emp e1 right outer join emp e2 on(e1.mgr=e2.empno); tvC7LLNP<  
select e1.ename,e2.ename from emp e1 full outer join emp e2 on(e1.mgr=e2.empno); b;[u=9ez  
--------------------------------------------------------------------------------------- ` _+j+  
--导出导出数据 Xu1tN9:oE  
drop user liuchao cascade;--****用户liuchao b ~Qd9 Nf  
exp--导出当前用户的表结构,和数据,在cmd中执行 -6+&?f  
--创建一个用户liuchao,密码liuchao,数据存在默认的表空间users,在表空间users分配大小为10M的 0CYm%p8!  
a*8^M\>m4  
空间 D\:~G}M  
create user liuchao identified by liuchao default tablespace users quota 10M on users Cu%|}xq  
grant create session,create table,create view to liuchao;--授权liuchao用户可以连接数据库,创 'WUevPmt  
pGy]t  
建表,创建视图 ya9V+/i7T_  
imp--导入表结构 %rz.>4i)(  
create table emp2 as select * from emp;--****emp表的数据到新创建的表emp2 O?ZCX_R :L  
------------------------------------------------------------------------------------------- GlDl0P,*r  
NA,)FmQjk  
---- 0!n6tz lT  
--rownum,列号:每一个表都默认有一个显示列号的字段rownum o <lS90J  
select rownum,emp.* from emp; [hf#$Dl |  
select rownum,ename from emp where rownum<=3; CbJ ]}Z  
--运用虚列选出第n-m条的记录(效率较高) nnU &R  
select * from HDyus5g  
( x)h p3&L  
select rownum row_num,emp.* from emp order by empno H1,;Xrm  
) o3hsPzOQx  
where row_num between 2 and 3; H\f.a R=  
--利用分析函数:row_number() over ( partition by col1 order by col2 )选出第n-m条的记录 +3 2"vq)_  
select * from ( [Hn4&PET  
select row_number() over (order by empno) no,emp.* from emp gE/O29Y  
) /x6,"M[97  
where no between 2 and 3; FuNc#n>  
----------------------------------------------------------------------------------------- D]9I-|  
--列约束条件 vZM.gn  
create table stu :N~1fvx  
( Fz_SID  
id number(6) primary key,--主键约束 RZ!-,|"cwL  
name varchar2(20) constraint stu_name_nn not null,--不为空约束 TR8<=  
sex number(1) check(sex in(0,1)),--检查约束 9=D\xBd|w  
age number(3), 7_WD)Y2yS  
sdate date, 'IweN  
grade njmber(2) default 1,--默认约束 Tp.0@aC  
class number(4) references class(id),--外键约束 ZZf-c5 g  
email varchar2(50) unique--唯一约束 y!SElKj  
) Y!LcS48X  
KZ/U2.{O<  
create table stu e9;<9uX  
( ( w(GJ/g  
id number(6), DFKU?#R  
name varchar2(20), @, D 3$P8}  
sex number(1), LL+ROX^M  
age number(3), u@\]r 1  
sdate date, H/>86GG  
grade number(2) default 1, Kc+;"4/#q  
class number(4) , }qlU  
email varchar2(50), ?b0VB  
constaint stu_id_pk primary key(id), q;a`*gX^  
constaint stu_name_email_uni unique(email,name) #EiOC.A=  
constaint stu_class_fk foreign key(class) ;7"} I  
) 1;<J] S$$  
--添加,****约束条件 <o^_il$W  
alert table stu add(addr varchar2(100)); )A9K9pZj  
alert table stu add drop addr; 0 !yvcviw  
alert table stu modify(addr varchar2(150)); TTaSg\K  
alert table stu drop constraint stu_class_fk; nS0K&MH6B  
alert table stu add constraint stu_class_fk foreign key(class) reference class(id) ; ;aKdRhDo  
----------------------------------------------------------------------------------------- Q}~of}h/  
数据字典表的存储表(dictionary) 0x!XE|7I  
desc dictionary $ Scb8<  
select tablename from dictionary; (.,`<rXw  
常用数据字典表(user_tables,user_views,user_constraints) )&}\2NK6L  
desc user_tables; zXQ o pQ1  
select table_name from user_tables; ,.tv#j|A  
select view_name from user_views; `JyTS~v$  
select constraint_name from user_constraints; K^bzZa+a  
select constraint_name,table_name from user_constraints; 1\:puC\)  
select index_name from user_indexes; @e#eAJhU  
---------------------------------------------------------------- hc}d S$=C  
--索引(提高对经常访问的字段读取速度) mAh0xgm  
create index idx_stu_email on stu(email);--创建索引 YHN@?}T()  
drop index idx_stu_email;--****索引 |[n- H;0  
--视图(就是一个子查询) @ ^oOXc,r$  
create view v$_stu as select id,name,age from stu;--创建视图 s0"S;{_#  
desc v$_dept_****g_sal_info;--显示表结构中的所有视图 deSrs:.  
----------------------------------------------------------------------------- n.]K"$230  
--序列(一般用于作为主键) ^& ZlV  
create table article %m]9";   
( L6yRN>5aE  
id number, xg %EQ  
title varchar2(1024), U2z1HIs  
cont long }Z*@EWc>  
); qy=4zOOD#  
create sequence seq;--创建序列 ;}{xpJ/  
drop sequence seq;--****序列 =M^4T?{T  
start with 1;--从1****始 3eQ-P8LS  
select seq.nextval from dual;查询下一个序列值 j(mbUB*  
insert into article values (seq.nextval,'a','b');--将虚列作为主键 |>a  sGP  
--------------------------------------------------------------------- @mBZu!,  
--思考题 w!o[pvyR$  
部门平均薪水的等级 .VN "j  
部门平均的薪水等级 mx smW   
哪些人是经理 ,<n >g;  
不用组函数求最高薪水 IBWUXG;  
平均薪水最高的部门编号与名称 T{v(B["!$  
平均薪水的等级最低的部门名称 V.5gxr3QqW  
比普通员工的最高薪水还要高的经理人名称 XL>v$7`#  
求部门经理人中平均薪水最低的部门名称 ;Ut0tm  
求比普通员工的最高薪水还要高的经理人名称 H%NIdgo}  
求薪水最高的前五名雇员 _cdrz)T  
求薪水最高的第六名的到十名雇员 :&ir5xHS  
-------------------------------------- 0FmYM@Wc  
--三范式 :4s{?IY)l  
第一范式:要有主键,列不可分 W]MKc&R  
第二范式:不能存在部分依赖, \xG>>A%  
第三范式:不能存在传递依赖 a5jc8S>  
[/post]
本帖最近评分记录:
  • 威望:+5(dm0412)
  • 中金在线商城
    级别: 终身会员

    UID: 767
    精华: 0
    发帖: 501
    威望: 1613 点
    学点: 953 点
    贡献: 15 点
    好评: 1 点
    学币: 0 个
    注册时间: 2008-05-14
    最后登录: 2013-07-14
    沙发(1楼)  发表于: 2008-10-05 09:47||

    谢谢啊
    馨月
    级别: 北风资深评论员

    UID: 442
    精华: 0
    发帖: 1456
    威望: 5960 点
    学点: 323 点
    贡献: 23 点
    好评: 0 点
    学币: 0 个
    注册时间: 2008-05-10
    最后登录: 2014-09-11
    板凳(2楼)  发表于: 2008-10-14 15:52||

    看看先
    主席语录第272页写道:zhou_xun同志是个好同志。
    级别: 北风爱好者

    UID: 72955
    精华: 0
    发帖: 7
    威望: 7 点
    学点: 14 点
    贡献: 0 点
    好评: 0 点
    学币: 0 个
    注册时间: 2008-11-11
    最后登录: 2010-04-09
    地板(3楼)  发表于: 2008-11-12 11:44||

    谢谢啊
    级别: 北风高级技术员

    UID: 13103
    精华: 0
    发帖: 312
    威望: 486 点
    学点: 39 点
    贡献: 0 点
    好评: 0 点
    学币: 0 个
    注册时间: 2008-06-25
    最后登录: 2016-11-09
    地下室(4楼)  发表于: 2008-11-26 12:41||

    多谢分享  ****下来看看
    小琦
    级别: VIP四级

    UID: 73876
    精华: 0
    发帖: 240
    威望: 555 点
    学点: 724 点
    贡献: 16 点
    好评: 0 点
    学币: 6 个
    注册时间: 2008-11-12
    最后登录: 2015-10-01
    下水道(5楼)  发表于: 2008-12-12 20:50||

    多谢分享
    级别: VIP六级

    UID: 86565
    精华: 0
    发帖: 80
    威望: 326 点
    学点: 26 点
    贡献: 0 点
    好评: 0 点
    学币: 0 个
    注册时间: 2008-12-01
    最后登录: 2016-07-02
    6楼  发表于: 2009-03-05 18:31||

    谢谢分享

    谢谢 Bh!J&SM:  
    学习中
    级别: VIP六级

    UID: 86565
    精华: 0
    发帖: 80
    威望: 326 点
    学点: 26 点
    贡献: 0 点
    好评: 0 点
    学币: 0 个
    注册时间: 2008-12-01
    最后登录: 2016-07-02
    7楼  发表于: 2009-03-05 18:35||

    2008-10-09

    aafafafaf
    级别: 北风爱好者

    UID: 124718
    精华: 0
    发帖: 4
    威望: 4 点
    学点: 12 点
    贡献: 0 点
    好评: 0 点
    学币: 0 个
    注册时间: 2009-02-24
    最后登录: 2009-04-06
    8楼  发表于: 2009-04-04 18:29||

    顶一下了
    级别: 北风高级技术员

    UID: 130235
    精华: 0
    发帖: 104
    威望: 984 点
    学点: -2 点
    贡献: 0 点
    好评: 0 点
    学币: 0 个
    注册时间: 2009-03-07
    最后登录: 2010-05-20
    9楼  发表于: 2009-05-22 21:11||

        
    上一主题下一主题
    «12»Pages: 1/2     Go