首页 oracle最全最有价值的知识点共24页文档

oracle最全最有价值的知识点共24页文档

举报
开通vip

oracle最全最有价值的知识点共24页文档oracle最全最有价值的知识点共24页文档oracle最全最有价值的知识点共24页文档页脚内容)),,._原的-代的-;=滚-00_)(0:.)序增-)0的误个一;'错错-)'多'错_-0=)(处处).倒-.)(.)(=))(_.循)))00-名名,然--列列先可时果)<(句语在放前就<可要以出有只-字一默前查来来就字,有默段有。示)默表表,含经成目,排根段生是为错;,0,,握掌(雇第的水<),名高有要题,后记出先为错雇前水记)=..名的学程过又号)=)0姓学上或出*0:的格门选绩均名生及上门明明<.=(.(名生...

oracle最全最有价值的知识点共24页文档
oracle最全最有价值的知识点共24页文档oracle最全最有价值的知识点共24页文档页脚内容)),,._原的-代的-;=滚-00_)(0:.)序增-)0的误个一;'错错-)'多'错_-0=)(处处).倒-.)(.)(=))(_.循)))00<_)'_)__.')'')')'录'%_响影记就个后-(0_0%.)),('=:%.':%0:)._.记一且有)|'___0_,%.录条有误条)|'.,_,.%误误在不查录到))|'|__.=,,运句))|''|.''':0%变变%)._''|__'':0变定用_类段-.类字为-.类字 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 为--类类定-__类中相类量))()())=:=)=变声的自-__.表整用,字为_型定组于(量(型)''.类的__量声类段表为明;)属使声)00,,',)00,''()),,,'')())())))|'.''=0(的变型打-:常表-=0.0=:,(00_)(声声变和取以类:串字日:符长:符符定类字类字来用数要数:类变变个能一同列的据要字0含最字须字个留用能名规明).))_(_0错错)_=0=:错示展)_._'')赋明声)!_._方输------/时试索想询用了递自),.().)))段段对序一;列用采属识来递表词储于表的典表表做;__束有面前__:视面户:多面交提时,,。像行务一当句了一而可命简很行从>-名名,然--列列先可时果)<(句语在放前就<可要以出有只-字一默前查来来就字,有默段有。示)默表表,含经成目,排根段生是为错;,0,,握掌(雇第的水<),名高有要题,后记出先为错雇前水记)=..名的学程过又号)=)0姓学上或出*0:的格门选绩均名生及上门明明<.=(.(名生有师明选出,,表,表题试面0%'''*效比试来出会字,含认的字有值示)表的,有出经已目,排再段含生生因了,成(,0=,,,握握员0到最),(,名前出的求是,排记选为的(=雇雇的水()名名经水高员普名部低薪平经)水均高薪均:法写数.=.____,(,_=...__)(_._表*___(,(_(==._(___(,.,___)名部水平部》号的最薪部-级薪平--均门称门的部等水平())=,_.薪平称号的部水平))_,)==,=名门部高均(_=,_编门门高均平).高高水数用导是哪)((等工平部.((级的均部记子例)_(0=_()._|__思意连|-**:.;':0(=)_.(;过存;现形树用综里记被操数后触了了执就下)触改跟了没字表改考其被(行改同表时的被当考一段中一致据于可时什操操做)--)例触建然。的录用_如建先要很(行发时操执:样一用等(,(和用数建0..0(00_重是不建创名过:)_(.))_,_:=程用调:__==>_是认传还是参-_,(程创例例数参令命,一体出报(改错但创也程存就储个需就了次无后存建;过代程内有期,储是只行句/,过(例程过行执名接-程的有:过的来数于相的句用参了它,录储标)_,._%(标游带)_.错易不而打,声自始循无是的用历游环循数结到值-,到有没打-性个游次两会的一了结换交能上此;__)(标明/*例历行对标)),___(原的错字字代的;滚--=0=_)0)__:建)0表个先表存据据有常其)'(_)了录'_异的统_-_0)_异处)(_倒倒0)._循:)<循))>+)(.=_例例的当和;始定:循中)_=/=_=00_=_例引个改引面引单创立')')(')句语调中据据后句-响被少多个,语是条记句次最'被记|%(_语调-;0%)_|'|(_.._%必游用中句值个只返的询查句使量的为_-量声用还)||(_'=':0_:的类_一-;_%.%数多存型型种明型类变)(_(;打;:)-_;)0_其量明;_量数定类据化引来由据型数是类义-%__量组一声,类明先--型数//多-行里/在类类变置设明将)(_型的量为置_类的字型%.):属属:量值取可布:串长日:符字符符数和含型类型类示是而用整:型变个明一.同者表数不字字包最变字字字一.如留用不变.规明变)':)._0=)__''=_*)!'::输显言序程在键键直要递能:范况的主段多于。依是键个依主依在能范第可列键.范第据余减的所则一计据:索到首时化当:除生产由中据一表为''.,:应列序佳..,序的个一列做么但数更可销维会,子个图率效数低还,很仅不要引建引议量大数段索删_些快更候的的询在则立;)_数入引索据数表仅为会度据插当速的读高索:索叫张又字据名应对束的库查名视所库数;名名有据看_,表录信有将典字)条约除数已容保,修段中)0段字中删)加表为)(命构修键是就它段参段的是必考参)样)例键)主作不么复能什主为字用也束为也我,非必束约此合组;),(如合组束时__定非将_取件约段(表约束主一;;-:束约提被事断。动事连正失提务权(句执句语或于结(。第于务删表行所的>表;有所除为;'*:如备操的一撤回命资户用-权图创创配,权分户-配上并间省码建用建-命资资有备用给资的的有将用)语称$令图给分的视将;登来用陆陆命些一--序顺少多计人多有部(点*****行,数函函函**人计少-命陆用登视给语有资备资-用建码省配权权户一操*;有的表务(于或句(权提失事断约;束表段件将__时合,组约必我也字主复样)是段参键修()删中段段保数除字表看名;库名库应据张:索速度仅据入数立询的快索数议建仅低率个,可数列个列:'据由:化首计所余范.第能主是多主范递键程言输::'!'')_变变用字最字数表.变示型和符符串布值:字_置的明类-数-先声组义型引化定量_((类种存数._的0'_用-使返值句用%.';(|'记个少-后中创引引例_0=_/)中始;_=))<_.0-的录_()其常据先个:_0_0-滚的代错原__,标对历*标;能了会游性到-结环历是始声而错)带游_)标录参用句于数有程名执(/句行储程过;后了储程创(出,参例程-传_=:用_)).():名不是00数和(样时很建_。然))操什于致段当时改考字跟触了触记综现过(.('-连__(_=0_)记均((部(导高高均门_,_部,==_)水平_)水部门-平部最号水名)_(.=(,_表__=(_.数:均平低普经名雇为排求出,员握,=,含再排经的示有字,出比'试表出选有((.明名绩格出姓=又学=水雇错出,有名的(握为生目经表默)段默来来前-有以前在<先列列然名行而一一行交:户面__;表于表递属采;对).(自用询试---方_明__错:_))能须0的同变类数来类字符符::以声_:=表的(=')())0,,0)明为段量'(于字用表.-声:)()量__定表.-类类用:'__'_变'.'|),._'录不,_,'误有,_0_')有记.0_-就_)''__)'_0)_().(-处)0错'-误序00;的,,)容内内文知有最文点的价最文点知有最识知有最页脚内容oracle最全最有价值的知识点共24页文档页脚内容oracle最全最有价值的知识点sql1.组函数:max,min,avg,sum,count计算行;*************重点;selectcount(*)fromempwheredeptno=10;计算部门10有多少人。selectcount(*)fromemp;计算一共多少列2.执行顺序:select->where->groupby->having->orderby;3.一些命令connguanghua;用户guanghua登陆;connguanghuaassysdba;用guanghua以dba的身份来登陆grantcreatetable,createviewtojay;将创建表和视图的权限分配给用户jay;4.创建视图命令:createviewv$视图名称as(select语句);5.创建新用户,并将一个已有的用户的所有资源赋给新用户*--备份原有用户的资源exp命令*--创建新用户createuserjayidentifiedbyjaydefaulttablespaceusersquota10Monusers//创建用户jay密码为jay缺省的表空间为users并在users上分配10M的配额*--为用户分配权限grantcreatesession,createtable,createviewtoliuchao//分配登陆,创建表,创建视图的权利*--导入原有用户的资源imp命令6.roolback回退命令。撤消前一步的操作7.简单的备份:如:备份emp表createtableemp2asselect*fromemp;8.UPDATEEMPSETEMPNO=7902WHEREENAME='FORD';将ename为ford的empno更新为7902;9.DELETEFROMEMP2;删除emp2表的所有行DELETEFROMDEPT2WHEREDEPTNO>40;删除dept2表中deptno>40的所有行。10.删除表:droptablet;删除表t。11.transaction事务;起始于第一条dml语句。(insert,delete,update)结束于commit或rollback语句;当执行一条ddl语句(createtable)dcl语句(grant授权)事务自动提交。roolback失效正常断开连接事务自动提交。非正常断开则事务不被提交12,约束条件:*notnull--非空;*default1;*unique唯一;主键约束:primarykey;外键约束:references表(字段)可以为约束条件取名字如constraintstu_name_not_nullnotnoll;将非空限定命名为stu_name_not_null;可以同时约束两个值的组合为unique,如constraintstu_name_email_nuiunique(email,name);将email和name的组合设置为unique此为表集约束。主键必须非空,唯一。我们也可以为主键约束命名,也可以用两个字段作为主键。什么字段能够重复那么它肯定不能作为主键例:constraintstu_id_pkprimarykey(id);外键约束:例:classnumber(4)referencesclass(id);还可这样定义:constraintstu_class_fkforeignkey(class)referencesclass(id);外键约束中被参考的字段必须是主键。如class表中的id字段就是被参考字段,那么它就必须是主键。13.修改表结构命令altertablestudentadd(addressvarchar2(100));为student表添加字段address;altertablestudentdrop(address)删除student表中的address字段;altertablestudentmodify(addressvarchar2(150));将student表中的address字段的修改精度,但要保证能容纳已有数据altertablestudentdropconstraintstu_class_fk;删除约束条件altertablestudentaddconstraintsut_class_fkforeignkey(class)referencesclass(id);14.数据字典表oracle将所有的表信息 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 到一张表中,user_tables。selecttable_namefromuser_tables;查看数据库中的所有的表名;selectview_namefromuser_views;查看数据库中的所有的视图名;selectconstraint_name,table_namefromuser_constraints;查看数据库中的所有的约束名及对应表名;15.所有的数据字典表又存在一张表中叫dictionary16.索引:建立索引可以提高读取数据时的速度。但是当插入数据时,则速度会更慢,因为不仅要在表中写入数据,还要在索引表中插入数据createindexidx_stu_emailonstu(email);建立索引,则用户在查询student的email的时候速度会更快一些。dropindexidx_stu_email;删除索引当此字段数据量大,访问量大则建议索引,但建立索引时要谨慎,它不仅占用很多空间,而且还降低插入数据时的效率。17.视图就是一个子查询,视图会增加维护的开销。视图可以更新数据,但不常这么做。18.序列:oracle中使用sequence。序列:产生一个唯一的不间断序列如1,2,3,4,5,6......createsequenceseq;创佳一个序列。应用:insertintostudent(sno,sname)values(seq.nextval,'jay');为student表插入一行数据,其中sno由序列产生。删除序列:dropsequenceseq;19.当提出优化表的时候,首先想到索引20.范式:就是数据库 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 时的一些规则。它所追求的是减少冗余数据。第一范式:.要有主键,列不可分第二范式:不能存在部分依赖,非主键要依赖整个主键,而不是部分依赖主键。用于检查多个字段作为主键的情况。第三范式:不能存在传递依赖;要直接依赖主键;21.PL/SQL在oracle中执行的程序语言。在sqlplus下显示输出必须setserveroutputon;程序举例:1*begindbms_output.putline('HelloWorld!');end;/2*declarev_namevarchar2(20);beginv_name:='guanghua';dbms_output.put_line(v_name);end;3*declarenumnumber:=0;beginnum:=2/num;dbms_output.put_line(num);exceptionwhenothersthendbms_output.put_line('error:被0除');end;变量声明的规则1.变量名不能够使用保留字,如from,select等2.第一个字符必须是字母3.变量名最多包含30个字符4.不要与数据库的表或者列同名5.每一行只能声明一个变量变量类型:*binary_integer:整数,用来记数而不是用来表示字段类型。*number:数字类型(包含整数和小数)*char:定长字符串*varchar2:变长字符串*date:日期*long:长字符串,最长2GB*boolean:布尔类型,可以取值为true,false和null值。变量声明:使用%type属性例:declarev_empnonumber(4);v_empno2emp.empno%type;--将v_empno2的类型设置为表emp字段empno的类型v_empno3v_empno2%type;--将v_empno3的类型设置为变量v_empno2的类型;begindbms_output.put_line('test');end;%type可以将变量声明的类型设置为另一个变量的类型22.PL/sql(在PL/SQL里注释一行用--多行用/**/)数组类型的声明:-------先声明数组类型,然后才声明一个数组变量。declaretypetype_table_emp_empnoistableofemp.empno%typeindexbybinary_integer;--定义一个类型名为type_table_emp_empno是数组由emp.empno的类型的数据构成由binary_integer类型来索引;简化为:declaretype类型名istableof数据类型indexbybinary_integer;定义数组变量:v_empnostype_table_emp_empno;声明一个变量,其类型为type_table_emp_empno;赋值:v_empnos(0):=1234;v_empnos(-1):=2345;v_empnos(1):=9887;打印输出;dbms_output.put_line(v_empnos(-1));Record变量类型:declaretypetype_record_deptisrecord--声明一种record类型,此类型中存放多个数据deptnodept.deptno%type,dnamedept.dname%type,locdept.loc%typev_depttype_record_dept;--声明一个type_record_dept类型的变量叫做:v_dept;beginv_dept.deptno:=50;v_dept.dname:='sale';v_dept.loc:='nanchang';dbms_output.put_line(v_dept.deptno||''||v_dept.dname||''||v_dept.loc);end;还可以使用%rowtype声明record变量;declarev_tempv_dept%rowtype;--v_dept为一个record类型的变量;23.pl/sql中使用调用sql语句。使用查询语句的时候返回且只返回一个值。select语句中如果不使用游标则必须有into例declarev_enameemp.ename%type;v_salemp.sal%type;beginselectename,salintov_ename,v_salfromempwhereempno=7369;dbms_output.put_line(v_ename||''||v_sal);end;declarev_deptnoemp2.deptno%type:=10;v_countnumber;beginupdateemp2setsal=sal/2wheredeptno=v_deptno;--在plsql中调用update语句dbms_output.put_line(sql%rowcount||'条记录被影响。');sql%rowcount记录最近一次sql语句改变的记录条数。(若是select语句,有多少个值就有多少记录被影响)commit;--执行完update。。等语句后要提交数据。*end;24.plsql中调用ddl语句(createtable):beginexecuteimmediate'createtableT(nnnvarchar2(20)default''aa'')';--执行立即创建表t注意单引号里面的单引号要改为两个单引号end;例:declarev_salemp.sal%type;beginselectsalintov_salfromempwhereempno=7839;if(v_sal<2500)thenupdateempsetsal=sal*2whereempno=7839;elsif(v_sal>2500)thenupdateempsetsal=sal/2whereempno=7839;elsedbms_output.put_line(v_sal);endif;commit;end;25.plsql中的循环:一定是从loop开始endloop结束;loop和endloop相当于java中的{}例;>declareibinary_integer:=1;beginloopdbms_output.put_line(i);i:=i+1;exitwhen(i>=11);endloop;end;--while循环>declareibinary_integer:=1;beginwhilei<11loopdbms_output.put_line(i);i:=i+1;endloop;end;--for循环>beginforkin1..10loopdbms_output.put_line(k);endloop;forkinreverse1..10loop--倒序dbms_output.put_line(k);endloop;end;26.plsql处理异常例declarev_tempnumber(4);beginselectempnointov_tempfromempwheredeptno=10;exceptionwhentoo_many_rowsthen--too_mang_rows系统已定义的异常dbms_output.put_line('太多记录了');whenothersthendbms_output.put_line('error!');end;其它异常:no_date_found没有找到数据;27.将Exception保存到errorlog表中*首先创建一个表>createtableerrorlogidnumberprimarykey,errcodenumber,errmsgvarchar2(1024),errdatedate*创建一个序列:createsequenceseq_errorlog_idstartwith1incrementby1;declarev_tempnumber(4);--v_deptnoemp.deptno%type:=20;v_errcodenumber;v_errmsgvarchar2(1024);beginselectempnointov_tempfromempwheredeptno=10;--deletefromempwheredeptno=v_deptno;--commit;exceptionwhenothersthenrollback;--回滚v_errcode:=SQLCODE;--错误的代码(关键字)v_errmsg:=SQLERRM;--错误的原因insertintoerrorlogvalues(seq_errorlog_id.nextval,v_errcode,v_errmsg,sysdate);commit;end;28.plsql游标对表进行遍历;例:declarecursorcisselect*fromemp;//声明游标;v_empc%rowtype;beginopenc;loopfetchcintov_emp;exitwhen(c%notfound);dbms_output.put_line(v_emp.ename);--此句和上一句不能交换,交换了结果就错了,最后一条的结果会输出两次。endloop;closec;end;游标有四个属性isopen-是否打开,notfound--没有fetch到值,found--fetch到值,fetch--得到的结果数。游标用while循环:游标遍历中最实用的循环是for循环无须声明v_empfor循环开始的时候自动声明,并且打开游标c,而且不容易出错。declarecursorcisselect*fromemp;beginforv_empincloopdbms_output.put_line(v_emp.ename);endloop;带参数的游标>declarecursorc(v_deptnoemp.deptno%type,v_jobemp.job%type)isselectename,salfromempwheredeptno=v_deptnoandjob=v_job;beginforv_tempinc(30,'CLERK')LOOPDBMS_OUTPUT.PUT_LINE(V_TEMP.ENAME);ENDLOOP;END;//游标C是储存了ename,sal的记录集,只是它带了两个参数(v_deptno,v_job,用于传递到where句后的参数)相当于函数。游标就是用来读的。29.存储过程:带有名字的plsql的程序块--直接写名字就能执行了创建一个过程例:createorreplaceprocedurepis(程序的过程,pl/sql语句块)/执行完后此时只是创建了存储过程,期间没有执行内部的程序代码执行存储过程p:execp;或beginp;end;/创建完存储过程后,无须再次键入代码了就,只需执行这个存储过程就行了。存储过程有错oracle也会创建的,但是会报错,得改。(oracle报错不会指出具体哪一行错,用showerror命令)创建带有参数的过程:例:*创建过程:createorreplaceprocedurep(v_ainnumber,v_bnumber,v_retoutnumber,v_tempinoutnumber)--in,out代表参数是传入还是传出的。默认是inisbeginif(v_a>v_b)thenv_ret:=v_a;elsev_ret:=v_b;endif;v_temp:=v_temp+1;*end;*调用过程:declarev_bnumber:=3;v_anumber:=4;v_retnumber;v_tempnumber:=5;beginp(v_a,v_b,v_ret,v_temp);dbms_output.put_line(v_ret);dbms_output.put_line(v_temp);*end;删除存储过程:dropprocedure过程名;30.创建函数--不是很重要>createorreplacefunctionsal_tax(v_salnumber)returnnumberisbeginif(v_sal<2000)thenreturn0.1;elsif(v_sal<2750)thenreturn0.15;elsereturn0.20;endif;end;创建完函数后,用法和max(),min()等在sql中的用法一样。31.触发器:当执行某个操作的时候触发器执行,(概念很重要)先创建一个表如emp2_log用于记录对emp2的操作。然后创建一个触发器triggeremp2_trig;例:>createtableemp2_logunamevarchar2(20),--谁actionvarchar2(10),--做什么操作atimedate--什么时间触发器可用于数据的一致性。一个表中的字段被另一个表参考,当修改被参考表的主键时,参考表同时改变如:执行这句话:updatedeptsetdeptno=99wheredeptno=10;(deptno有被其他表参考,改了其他表此字段就没意义了,也得跟着改,用触发器)如下:createtriggertrig;afterupdateondeptforeachrowbeginupdateempsetdeptno=:NEW.deptnowheredeptno=:OLD.deptno;end;这时就可以执行上句话了。创建完触发器后,执行数据库操作后会被记录在emp2_log里。32.综合运用树状形式展现帖子;递归存储过程;createorreplaceprocedurep(v_idarticle.pid%type,v_levelbinary_integer)iscursorcisselect*fromarticlewherepid=v_id;v_prestrvarchar2(100):='';beginforiin1..v_levelloopv_prestr:=v_prestr||'****';--||是连接上的意思。endloop;forv_articleincloopdbms_output.put_line(v_prestr||v_article.cont);if(v_article.isleaf=0)thenp(v_article.id,v_level+1);endif;endloop;end;Oracle查询例子笔记:--求部门平均工资的等级selectdeptno,avg_sal,gradefrom(selectdeptno,avg(sal)avg_salfromempgroupbydeptno)emp2leftjoinsalgradeon(emp2.avg_salbetweensalgrade.losalandsalgrade.hisal)--求部门的平均的工资等级selectdeptno,avg(grade)from(selectdeptno,ename,gradefromempjoinsalgradeon(emp.salbetweensalgrade.losalandsalgrade.hisal))groupbydeptno--求出哪些人是领导者selectenamefromempwhereempnoin(selectdistinctmgrfromemp)--不用组函数,求薪水的最高值selectsalfromempwheresalnotin(selectdistincte1.salfromempe1joinempe2on(e1.sal(selectmax(sal)fromempwhereempnonotin(selectmgrfromempwheremgrisnotnull)--求薪水最高的前5名雇员selectename,salfromempwhererownum<=5orderbysaldesc;(错的,因为这是先选出前5个记录后再排序,而题目是要求所有的选出最高前5名)selectename,salfrom(selectename,salfromemporderbysaldesc)whererownum<=5;--求薪水最高的第6到第10名雇员(重点掌握)selectename,salfromselectename,sal,rownumrform(selectename,salfromemporderbysaldesc))wherer>=6andr<=10;若selectename,sal,rownumrform(selectename,salfromemporderbysaldesc)换成selectename,sal,rownumrformemporderbysaldesc;就错了,因为这是先生成含有enamesalrownum字段的表再根据sal排序的,而题目是先生成已经排序出的含有ename,sal字段的表(该表默认有rownum1,2,3--)再显示出rownum的值。没有rownum字段的表都默认含有,有此字段的就会显示出来。--面试题:比较效率select*fromempwheredeptno=10andenamelike'%A%';select*fromempwhereenamelike'%A%'anddeptno=10;--面试题:有三个表s,c,sc学生s(sno,sname)课程表c(cno,cname,cteacher)sc(sno,cno,scgrade)1.找出没有选过“黎明”老师的所有学生姓名;selectsnamefromsjoinscon(s.sno=sc.sno)joincon(c.cno=sc.cno)wherecteacher<>'黎明'2.列出2门以上(含2门)不及格学生姓名及平均成绩:*先选出两门不及格的学生的序号:selectsnofromscwherescgrade<60groupbysnohavingcount(*)>=2;*再求出两门或以上不及格学生姓名:selectsnamefromswheresnoin(selectsnofromscwherescgrace<60groupbysnohavingcount(*)>=2);3.即学过1号课程又学过2号课程所有学生的姓名:selectsnamefromsjoinscon(s.sno=sc.sno)wherecno=1ands.snoin(selectdistinctsnofromscwherecno=2);笔记:--求薪水最高的前5名雇员selectename,salfromempwhererownum<=5orderbysaldesc;(错的,因为这是先选出前5个记录后再排序,而题目是要求所有的选出最高前5名)selectename,salfrom(selectename,salfromemporderbysaldesc)whererownum<=5;--求薪水最高的第6到第10名雇员(重点掌握)selectename,salfromselectename,sal,rownumrform(selectename,salfromemporderbysaldesc))wherer>=6andr<=10;若selectename,sal,rownumrform(selectename,salfromemporderbysaldesc)换成selectename,sal,rownumrformemporderbysaldesc;就错了,因为这是先生成含有enamesalrownum字段的表再根据sal排序的,而题目是先生成已经排序出的含有ename,sal字段的表(该表默认有rownum1,2,3--)再显示出rownum的值。没有rownum字段的表都默认含有,有此字段的就会显示出来。oracle查出的表前面默认有一列数字1,2,3----只是没有显示出来。所以要求前5名时可以用rownum<=5就可以求出前5条记录,放在where条件语句里。(rownum只跟<或<=)如果要用>时,可这样:先selectrownumr,列名,列名from-----.然后用select列名,列名from(selectrownumr,列名,列名from---)whererownun>5;mysql求从第几行到第几行很简单,用limit命令就可以,而oracle就不一样了:多个DML语句oracle会当作一个事务来执行,就像hibernate里一样。碰到DDL,DCL,commit,rollback时会自动提交。查询当前用户下面有多少表:selecttable_namefromuser_tables;查询当前用户下面有多少视图:selectview_namefromuser_views;查询当前用户下面有多少约束名:selectconstraint_namefromuser_constraints;像user_tables;user_views;user_constraints叫做数据词典表;数据词典表的表叫做dictionaries表;用于存储数据词曲表;在mysql里自动递增用autoincrese来标识某个属性,而oracle是采用序列。如:createsequenceseq;(一般一个序列对应一个字段)createtablearticle(idint,titlevarchar(20),contvarchar(100));insertintoarticlevalues(seq.nextval,kfaf,lfjallkjda);insertintoarticlevalues(seq.nextval,dfds,fdssa);这样就会自动递增了。序列删除用DROP;优化查询表时要想到索引,面试时。--PL/QL----------setserveroutputon;--开启输出方法begindbms_output.put_line('HelloWorld!');end;--声明赋值declarev_namevarchar2(20);beginv_name:='myname';dbms_output.put_line(v_name);end;--展示错误declarev_numnumber:=0;beginv_num:=2/v_num;dbms_output.put_line(v_num);end;--捕捉错误declarev_numnumber:=0;beginv_num:=2/v_num;dbms_output.put_line(v_num);exceptionwhenothersthendbms_output.put_line('error');end;--变量声明的规则1.变量名不能够使用保留字,如from,select等2.第一个字符必须是字母3.变量名最多包含30个字符4.不要与数据库的表或者列同名5.每一行只能声明一个变量--常用变量类型1.binary_integer:整数,主要用来计数而不是用来表示字段类型2.number:数字类型3.char:定长字符串4.varchar2:变长字符串5.date:日期6.long:长字符串,最长2GB6.boolean:布尔类型,可以取值为true,false和null值--declare变量的声明declarev_tempnumber(1);v_countbinary_integer:=0;v_salnumber(7,2):=4000.00;v_datedate:=sysdate;v_piconstantnumber(3,2):=3.14;--constant表示常量v_validboolean:=false;--不能打印Boolean类型变量的值v_namevarchar2(20)notnull:='MyName';begindbms_output.put_line('v_tempvalue:'||v_count);end;--创建emp表createtableempempnonumber(4)notnull,enamevarchar(10),jobvarchar(9),hiredatedate,salnumber(7,2),deptnonumber(4),primarykey(empno)commit;insertintoempvalues(7369,'smith','computer','',1300,10);insertintoempvalues(110,'jerry','computer','',1300,10);insertintoempvalues(119,'lucy','computer','',1300,50);--变量声明,使用%type属性declarev_empnonumber(4);v_empno2emp.empno%type;--声明变量v_empno2为emp表中empno字段的类型v_empno3v_empno2%type;--声明变量v_empno3为变量v_empno2的类型begindbms_output.put_line('Test');end;--复合类型变量(table,Record)--table变量类型(相当于数组)declare--自定义类型type_table_emp_empno为emp表empno字段类型,下标用整数表示typetype_table_emp_empnoistableofemp.empno%typeindexbybinary_integer;v_empnostype_table_emp_empno;--用自定的类型声明变量beginv_empnos(0):=7369;v_empnos(2):=7839;v_empnos(-1):=9999;dbms_output.put_line(v_empnos(-1));end;--创建dept表createtabledeptdeptnonumber(4)notnull,dnamevarchar(10),locvarchar(100),primarykey(deptno)--Record变量类型(相当java中的类)declaretypetype_record_deptisrecord--自定义类型type_record为record类型deptnodept.deptno%type,--deptno为dept表depno字段类型dnamedept.dname%type,--dname为dept表dname字段类型locdept.loc%type--loc为dept表loc字段的类型v_temptype_record_dept;--用自定义变量beginv_temp.deptno:=50;v_temp.dname:='aaaa';v_temp.loc:='bj';dbms_output.put_line(v_temp.deptno||''||v_temp.dname);end;--使用%rowtype声明record变量declarev_tempdept%rowtype;beginv_temp.deptno:=50;v_temp.dname:='aaaa';v_temp.loc:='bj';dbms_output.put_line(v_temp.deptno||''||v_temp.dname);end;--SQL语句的运用declarev_enameemp.ename%type;v_salemp.sal%type;beginselectename,salintov_ename,v_salfromempwhereempno=7369;dbms_output.put_line(v_ename||''||v_sal);end;--未找到记录错误(查询的不存在,会报错误)declarev_enameemp.ename%type;v_salemp.sal%type;beginselectename,salintov_ename,v_salfromempwhereempno=111;dbms_output.put_line(v_ename||''||v_sal);end;--返回多条记录错误(dept=10有多条记录)declarev_enameemp.ename%type;v_salemp.sal%type;beginselectename,salintov_ename,v_salfromempwheredept=10;dbms_output.put_line(v_ename||''||v_sal);end;----保证有且仅有一条记录declarev_empemp%rowtype;beginselect*intov_empfromempwhereempno=7369;dbms_output.put_line(v_emp.ename);end;declarev_deptnodept.deptno%type:=50;v_dnamedept.dname%type:='aaaa';v_locdept.loc%type:='bj';begininsertintodeptvalues(v_deptno,v_dname,v_loc);commit;end;declarev_deptnoemp.deptno%type:=50;v_countnumber;beginupdateempsetsal=sal/2wheredeptno=v_deptno;selectdeptnointov_deptnofromempwhereempno=110;selectcount(*)intov_countfromemp;--最后产生几个值就有几条记录被影响。dbms_output.put_line(sql%rowcount||'条记录被影响');commit;end;beginexecuteimmediate'createtableT(nnnvarchar2(20)default''aaa'')';end;declarev_salemp.sal%type;beginselectsalintov_salfromempwhereempno=7369;if(v_
本文档为【oracle最全最有价值的知识点共24页文档】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
优秀工作者
暂无简介~
格式:doc
大小:329KB
软件:Word
页数:23
分类:
上传时间:2022-03-01
浏览量:2