版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、尚学堂马士兵Oracle学习笔记-101_sqlplus_introduction.avi三种不同的命令行的客户端Oracle需需要了解的第第一个:sqqlpluss,当启动ssqlpluus需要让你你输入,用户户名口令字符符串Sqlpluss是Oraccle的一个个客户端,OOraclee大多数的东东西都是在命命令行执行,输入用户名:sscott 口令:tiiger,进进入oraccle命令行行3个界面:图形形版界面,命命令行界面,网页界面(issqlpluus):在浏浏览器地址栏栏输入: HYPERLINK :5560/isqlplus/ htttp:/127.00.0.1:5560/is
2、qlpplus/ 输入用户名名:scottt 口令:tigerr进入有一个著名的ooraclee客户端叫ttoadOracle还还有一个客户户端plsqql devvelemeent命令行:图形版界面:网页版:02_unloock_usser.avvi使用超级管理员员登录到数据据库上:sqqlpluss sys/bjsxtt as ssysdbaa 当成DBAA登录到服务务器上连上之后更改user :alteer useer scoott acccountt unloock; 更更改用户 解解除锁定03_tablle_strructurres.avvi第二章SQL(struccturedd Q
3、uerry Lannguagee)语言Sql语言是在在数据库地下下进行操作的的专门的语言言,sql语语言本身是一一种标准语言言,它是一个个国际标准,它它定义了套标标准SQL11922, SQL19999,SQQL在大多数数数据库上通通用,或许有有轻微的改变变包含四大语句:1. 查询语句句查询语句只有一一种就是seelect语语句2. DML语语句(数据操操作/操纵语语言)DML语句包含含Inserrt,Upddate,DDeletee等常用语句句3. DDL语语句(数据定定义语言)DDL语句包含含Creatte, Allter, Drop等等常用语句4. 事务控制制语句包含Commiit, R
4、oollbacck等常用语语句还有一大类语句句:叫DCLL语句(Daata Coontroll Langguage),主主要用于权限限的分配与回回收,由于与与开发关系不不是十分密切切,不做重点点讲解最重要的就是sselectt语句,任何何selecct语句全部部要背过,sselectt语句必考,不不会考其它的的Select语语句就是从表表里把数据选选出来首先熟悉试验中中的数据第一条语句:ddesc emp; desc 表名; 列列出 表头 = 字段段 = 列列Varcharr2 可变字符串串支持国际化化NUMBER(7,2) 7位的数字字,2位的小小数每行显示的宽度度setliinesizze
5、 2000;显示的页数 ssetpaggesizee 30;emp雇员信息息表EMPNO 雇员编号NNOT NUULL NUUMBER(4)ENAME 雇员姓名 VARCHHAR2(110)JOB 工作作岗位 VAARCHARR2(9)MGR 该该雇员经理人人的编号 NNUMBERR(4)HIREDATTE 入职职时间 DAATESAL 薪水NNUMBERR(7,2)COMM 津贴贴NUMBEER(7,22)DEPTNO 雇员所在部部门编号 NNUMBERR(2)Varcharr2:可以存存放各国的语语言,适合国国际化;vaarcharr:不能存放放各国语言,有有限定。表内容:EMPNO EE
6、NAME JOB MMGR HIIREDATTE SALL COMMM DEPTTNO- - - - - - - -7369 SMMITH CLERKK 79022 17-112月-800 800 207499 ALLLEN SSALESMMAN 76698 200-2月 -81 16600 3000 307521 WAARD SAALESMAAN 76998 22-2月 -881 12550 5000 307566 JOONES MMANAGEER 78339 02-4月 -881 29775 207654 MAARTIN SALESSMAN 77698 228-9月 -81 11250 1
7、1400 3307698 BLLAKE MMANAGEER 78339 01-5月 -881 28550 307782 CLLARK MMANAGEER 78339 09-6月 -881 24550 107788 SCCOTT AANALYSST 75566 199-4月 -87 30000 2007839 KIING PRRESIDEENT 177-11月-81 50000 1007844 TUURNER SALESSMAN 77698 008-9月 -81 11500 00 307876 ADDAMS CCLERK 7788 23-5月月 -87 1100 20EMPNO EENAME J
8、OB MMGR HIIREDATTE SALL COMMM DEPTTNO- - - - - - - -7900 JAAMES CCLERK 7698 03-122月-81 950 3307902 FOORD ANNALYSTT 75666 03-112月-811 30000 207934 MIILLER CLERKK 77822 23-11月 -822 13000 10dept部门信信息表DEPTNO 部门编号NNOT NUULL NUUMBER(2)DNAME 部部门名字VAARCHARR2(14)LOC 部门所所在地 VAARCHARR2(13)内容:DEPTNO DNAMEE LOC-
9、 - -10 ACCOOUNTINNG NEWW YORKK20 RESEEARCH DALLAAS 30 SALLES CHHICAGOO40 OPERRATIONNS BOSSTONsalgradde薪水等级级表GRADE 薪薪水等级NUUMBERLOSAL 该该等级的最低低薪水值 NNUMBERRHISAL 该该等级的最高高薪水值 NUMBEER内容:GRADE LLOSAL HISALL- - -1 700 112002 1201 14003 1401 20004 2001 30005 3001 9999熟悉表里面的数数据:第一个seleect语句:selecct * ffrom 表表
10、名;Select * froom empp;04_seleect_1.avi1.简单sellect语句句:例子1:取出一一张表中所有有的数据Select * froom empp;例子2:取出某某些字段的值值Select empnoo, enaame, ddeptnoo fromm emp;2.包含算术表表达式的sqql语句例子1:取出eemp中所有有人的年薪及及名字Select enamee , saal*12 from emp;例子2:在emmp表中取出出2*3的结结果Select 2*3 ffrom eemp;例子3:取出22*3的一条条记录 Selectt2*3 ffrom ddual
11、;-当我们需需要显示一个个结果的时候候就用系统提提供的duaal虚表例子4:取出当当前系统时间间Select sysdaate frrom duual;-sysdaate在Orracle中中表示当前系系统时间3.含有别名的的sql语句句例子1:sellect eename, sal*12 annnual_sal ffrom eemp;例子2:如果想想让别名强制制大小写混合合可以使用双双引号Select enamee, sall*12 “Annual_sal” from emp;例子3:如果想想让别名中有有空格也使用用双引号Select enamee, sall*12 “AAnnuall sal
12、” from emp;5.处理含有空空值的字符串串例子1:算某人人一年的年薪薪含有任何nnull值的的数学表达式式最后的结果果都为nulllSelect enamee, sall*12+ccomm ffrom eemp例子2:含有任任何nulll值的字符串串表达式中,nnull被当当作空字符串串处理select empnoo, enaame |and his mmanageer nummber iis | mgrffrom eemp;字符串连接符:|Select语语句中用单引引号表示字符符串6.在seleect中使用用单引号例子1:用两个个单引号表示示一个单引号号select empnoo,
13、enaame | s mannager is | mggr froom empp;05_disttinct.avi7.消除重复值值例子1:sellect ddistinnct deeptno from emp;-用disstinctt消除结果集集中的重复信信息例子2:用diistincct修饰多个个字段的时候候,指的是消消除后面所有有字段的组合合重复结果Select distiinct jjob, ddeptnoo fromm emp;-指joob和depptno都相相同的删除06_wherre.avii使用wheree对数据库设设定条件限制制,wherre过滤条件件,过滤相关关的数据1. 等
14、值判断断例子1:显示部部门编号为110的所有员员工的详细信信息select * froom empp wherre depptno = 10;例子2:显示名名字为KINNG的员工的的详细信息判断字符串是否否相等时,字字符串要用单单引号引起来来,单引号中中字符串内容容是要区分大大小写的Select * froom empp wherre enaame = KINGG;2. 非等值判判断( = = )例子1:取出薪薪水大于20000的所有有员工的名字字和薪水Select enamee, sall fromm emp wheree sal 20000;例子2:字符串串大小比较:是比较字符符串ASCI
15、II码值的比比较,先比较较第一字母,依依次Select enamee, sall fromm emp wheree enamme DBA;例子3:取出所所有部门号不不是10的雇雇员的名字和和薪水Select enamee, sall fromm emp wheree depttno 10;例子4:取出薪薪水位于8000和15000之间的雇雇员名字和薪薪水Select enamee, sallfrom emp wwhere sal = 8000 and sal = 20-2月-811;Select enamee, hirredatee fromm emp whereehireddate 20-2
16、月-19981;如果想用自己定定义的日期格格式,可以使使用to_cchar oor to_date函函数,3. AND, OR, NNOT例子1:查询部部门标号为110 并且薪薪水10000 的员工工Select enamee, depptno, sal ffrom eemp whheredeeptno = 10 and ssal 1000;例子2:查询部部门编号为110或者工作作岗位为CLLERK 的的员工Select enamee, depptno, job ffrom eemp whhere ddeptnoo = 100 or jjob = CLEAARK;例子3:查询薪薪水没有位于于8
17、00, 1500, 20000 之中的员员工Select enamee, sall fromm emp wheree sal notinn (8000, 15000, 20000);7模糊查询使用like关关键字,和通通配符 % 表示0个或或多个字符,_ 表示1个个字符例子1:查询名名字中含有AALL的人员员Select enamee fromm emp wheree enamme likke %AALL%;例子2:查询第第二字母中含含有 A 的的雇员Select enamee fromm emp wheree enamme likke _AA%;例子3:查询名名字中含有 % 等通配配符的数据
18、时时,使用转义义字符 Escape 自定义转移移字符, 系系统默认的转转义字符是 Select enamee fromm emp wheree enamme likke %esscape;Select enamee fromm emp wheree enamme likke %$%esscape$;07_ordeer_by.avi使用它ordeer by 对数据进行行排序例子1:按照名名字的升序进进行排序Select enamee, sallfrom emp oorder by enname;Select enamee, sallfrom emp oorder by enname aasc;
19、用asc关关键字指出按按升序排列例子2:按照雇雇员编号的升升序排序Select enamee ,depptno ffrom eemp orrder bby depptno;Select enamee, depptnofrrom emmp ordder byy depttno assc;例子3:按照名名字降序排列列Select enamee, depptnofrrom emmp ordder byy enamme dessc;例子4:按照部部门编号降序序排列Select enamee, depptnofrrom emmp ordder byy depttno deesc;例子5:多个关关键字排序
20、,先先按照部门编编号升序排列,在再内内部按照ennamel 降序排序08_sql_functtion_11.avi常用SQL函数数1.Lowerr()函数 将字符串全全部转换成小小写例子1:将雇员员中名字含有有A或a的人员员全部显示出出来Select enamee fromm emp wheree enamme likke %AA%oreename like%a%;Select enamee fromm emp wheree loweer(enaame)liike %a%;2.Upperr()函数将将字符串全部部转换为大写写例子2:将雇员员中名字含有有A或a的人员员全部显示出出来Select
21、enamee fromm emp wheree uppeer(enaame)liike %A%;3.substtr()函数数例子1:从第一一字符开始共共截3个子串串Select substtr(Heello, 1, 33) froom duaal; HelSubstr 可以省略第第三个参数例子2:从第二二个字符开始始,截取到整整个字符串结结束Select sbusttr(enaame, 22) froom empp;4.Chr()函数例子1:求一个个与某个ASSCII码值值对应的字符符Select chr(665) frrom duual;1. Asciii()函数数例子:求一个字字符的ASC
22、CII码值Select asciii(A) fromm duall;2. rounnd()函数数 对参数值进进行四舍五入入的操作例子1:对233.652进进行四舍五入入操作Select roundd(23.6652)frrom duual; 24可以指定四舍五五入到小数点点后几位例子2:对233.652四四舍五入到小小数点后2位位Select roundd(23.6652,2) fromm duall; 23.655可以用负数指定定小数点前面面几位例子3:对233.652四四舍五入到小小数点前1位位Select roundd(23.6652,-11) froom duaal; 20*7.to_
23、cchar()用于将数字或日日期转换成特特定的字符串串,To_charr()有两个个参数:第一个参数:需需要进行转换换的日期或数数字第二个参数:特特定的转换格格式,对于数数字有一下几几个格式可以以指定:9 代表数字字,若果该位位没有数字则则不进行显示示,但对于小小数点后面的的部分仍会强强制显示0 代表一位位数字,如果果该位没有数数字则强制显显示0$ 显示美元元符号L 显示本地地货币符号. 显示小数数点, 显示千分位位符号例子1:sellect tto_chaar(sall, $999,9999.99999) saalary from emp wwhere enamee = AALLEN; $1
24、,6000.00000例子2:sellect tto_chaar(sall, $000,0000.00000) saalary from emp wwhere enamee = AALLEN; $01,6600.00000对于日期:too_charr()可以指指定为下面的的常用格式:格式控制符含义义YYYY、YYY -代表4位,22位数字的年年份MM -用数字表表示的月份MON -月份的缩缩写对中文月月份来说就是是全称DD -数字表示的的日DY -星期的缩写写,对中文的的星期来说就就是全称HH24、HHH12 -12小时或或者24小时时进制下的时时间MI -分钟数SS -秒数有了这些格式,就就
25、可以把日期期自定义为任任何格式例子1:sellect tto_chaar(syssdate, YYYYY-MM-DD-HHH24:MII:SS) fromm duall; 20008-04-041、把字段转换换成小写2、截子串 ssubstrr(enamme,1,33)从第一个个开始截,截截取3个字符符3、把数字转换换成相对应的的字母3、把字母转换换成相对应的的ascIII码4、四舍五入5、把数字或者者日期转化成成某种格式1)对数字对齐格式,格式式化L:本地货币符符号2)对日期时间间格式控制HH:12进制制HH24:244进制09_sql_functtion_22.avi*8.to_ddate
26、()函数将特定的字符串串转换成日期期格式,这个个函数有两个个参数第一参数:自定定义的日期字字符串第二参数:指定定这个字符串串的格式例子1:将19981年3月月2日中午以以后入职的雇雇员信息取出出:Select * froom emppwheree hireedate to_date(19811-03-002 12:00:000, YYYYY-MMM-DD HH12:MI:SSS);*9.to_nnumberr()函数讲指定的字符串串转换成数字字格式,这个个函数有两个个参数第一参数:自定定义的数字字字符串第二参数:指定定这个字符串串的格式例子1:求薪水水大于12000的员工信信息Select *
27、 froom emppwheree sal to_numbeer($11,200.00,$9,9999.99);*10.nvll()函数用来处理空值,这这个函数有两两个参数:第一参数:字段段名或表达式式,如果这个个参数值为nnull,就就返回第二参参数值,否则则返回第一参参数值例子:求每个员员工每年的年年收入(122个月的薪水水+津贴)因为comm的的值为nulll,想要得得到正确的结结果,必须讲讲null值值转换为0Select enamee,sal*12+nvvl(commm, 0) fromm emp; 10_grouup_funnctionn.avi(重重要,牢牢记记住,一个都都不能忘
28、)*11.组函数数包括5个函函数:(1).avgg():求平平均值(2).maxx():求最最大值(3).minn():求最最小值(4).summ():求总总和(5).couunt():求记录的数数量例子1:求薪水水的总和、平平均值、最大大值和最小值值Select sum(ssal),aavg(saal), mmax(saal), mmin(saal) frrom emmp; 例子2:求emmp表中记录录的数量Select countt(*) ffromemmp;Count()可以对单独独字段使用,得得到的是所有有非空记录的的数量例子3:求coomm字段中中所有非空记记录的数量Select c
29、ountt(commm)fromm emp;Count()可以和diistincct一起使用用,得到所有有唯一值记录录的数量例子4:求emmp表中deeptno唯唯一的数量Select countt(disttinct,deptnno) frrom emmp;注意:函数名不不是在所有数数据库中通用用10、11_grouup_by.avi对表中的数据进进行分组例子1:计算每每个部门的平平均工资首先将现有数据据按照部门进进行分组,然然后再计算每每个组员工的的平均薪水。Select deptnno,avgg(sal) fromm emp groupp by ddeptnoo; 例子2:计算每每个部门
30、的最最大工资Select deptnno,maxx(sal) fromm emp groupp by ddeptnoo;例子3:按照部部门,和职位位的最大薪水水进行分组Select deptnno, joob,maxx(sal) fromm emp groupp by ddeptnoo, jobb;使用groupp by 的规规律:出现在在selecct列表中的的字段,如果果没有出现在在组函数中,则则必须出现在在groupp by子句句中典型错误:seelect enamee, depptno, max(ssal) ffrom eemp grroup bby depptno;例子4:求出每每一
31、个部门里里赚钱最多的的那个人的名名字Select enamee,depttno, ssal frrom emmp wheere saal in (Select sal ffrom (Select deptnno,maxx(sal) sal from emp ggroup by deeptno)例子4:选出所所用部门里工工资最高的人人的名字Select enamee, sallfrom emp wwhere sal = (Select max(ssal) ffrom eemp);Ename可能能有很多,mmax(saal)只有一一行12_haviing.avvi使用Havinng对分组进进行限制
32、如果我们要从分分组数据中把把某些特定的的剔除去的时时候,使用HHavingg关键字例子1:将平均均薪水大于11000的组组的平均薪水水从emp这这张表中选出出来Select avg(ssal),ddeptnoo grouup by deptnno havving aavg(saal) 1000;例子2:求薪水水大于12000的雇员,按按照部门进行行分组,而且且这些分分组组后组内平均均薪水必须大大于15000,要查询分分组的平均工工资Select avg(ssal) ffrom emp wwhere sal 12000 grouup by deptnno havving aavg(saal) 1
33、500Order bby avg(ssal);13_表连接.avi在where子子句中进行多多表连接(SSQL19992)实际需要在很多多表中取数据据,例子:把员工姓姓名及员工所所在部门的名名字同时显示示出来Select enamee, dnaamefroom empp, deppt;第二天上午:13_表连接-21:441为什么启动慢?因为每次启启动Oraccle的服务务都会启动(解解决办法,把把Oraclle服务设置置成“手动”启启动)scott/ttiger - 用用户名密码可可以直接这样样输入把第一天学的内内容用一句话话总结出来问:从emp这这张表里把平平均工资和部部门编号列出出来,并且
34、过过滤掉大写是是A的名字 ,把剩下的的数据按照部部门编号进行行分组,分组组之后的平均均薪水必须大大于20000,按照部门门编号的倒序序排列select avg(ssal), deptnno froom empp where eename not llike _A%group bby depptnohaving avg(ssal) 20000order bby depptno 这是一个单条的的selecct语句,(只是从一张张表里取数据据)第一天已已经讲完今天讲:多表的的连接例子1:请你选选出雇员的名名字,和雇员员在部门的名名字?错误写法:seelect enamee, depptno ffro
35、m eemp;/这里选的是是部门的编号号,问题里是是让选部门的的名字select dnamee, depptno ffrom ddept wwhere deptnno= 200;/选出出了编号是220的这个人人所在部门的的名字正确写法:seelect enamee, dnaame frrom emmp, deept whhereemmp.depptno = deptt.depttno;必须明确的指出出重复字段是是哪个表的例例如:select enamee, dnaame,deept.deeptno from emp, dept wheree emp.deptnno = ddept.ddeptn
36、oo;指定哪张表的ddeptnoo实际上对它它有一个效率率上的影响例子2:求每个个人的薪水值值包括他的名名字select enamee, sallfrom emp;例子3:求每个个人的薪水值值,名字和他他的薪水处于于第几个级别别(非等值连连接)select enamee, sall,gradde froom empp, sallgradee where ssal beetweenn losaal andd hisaal;select enamee, sall, graadefroom empp, sallgradeewhere ssal = losaal andd sal =s.loosal
37、aand e.sal = s.hhisal and jjob PREESIDENNT;13_子查询例子1:求谁挣挣的钱最多?错误的写法:sselectt enamme, maax(sall) froom empp;正确的写法:sselectt enamme, saal froom empp wheree sal = (seelect max(ssal)frrom emmp);例子2:求出来来有哪些工资资位于所有人人平均工资之之上 selecttenamee, sall fromm emp where ssal (seleect avvg(sall) froom empp);例子3:按照部部门进
38、行分组组之后挣钱最最多的那个人人的名字,部部门编号?select enamee, sall, t.ddeptnoo fromm emp join(seelect max(ssal) mmax_saal, deeptno fromeemp grroup bby depptno) ton (empp.sal = t.mmax_saal andd emp.deptnno =t.deptnno);*理解子子查询的关键键-把它它当成一张表表例子4:(练习习)求每个部部门的平均薪薪水等级是多多少?Select t.avgg_sal, gradde, t.deptnno froom salgrrade ss
39、Join( sselectt avg(sal) avg_ssal, ddeptnoo frommemp ggroup by deeptno) tOn ( t.avg_ssal beetweenn s.loosal aand s.hisall);尚学堂马士兵OOraclee学习笔记3314_selff_tablle_connnectiion.avvi例子1:求这个个人的名字和和他经理人的的名字(自连连接)select e1.enname, e2.enname ffrom eemp e11, empp e2 whhere ee1.mgrr = e22.empnno;自连接:为同一一张表起不同同的别
40、名,然然后当成两张张表来用15_SQL11999_ttable_conneectionns.aviiSQL19922是在wheere语句里里直接写表连连接的条件,新新的语法是把把表连接语句句拿出来,wwhere里里只写过滤条条件。有一个小小的问问题:select enamee, dnaame, ggrade from emp ee, depptd, ssalgraade swhere ee.depttno = d.depptno aand e.sal bbetweeens.loosal aand s.hisall and -两个个表的连接条条件job CLERRK; -过滤滤条件连接条件和过滤
41、滤条件混在一一起让人读起起来SQL语语句会困难一一些,不太容容易清楚怎么把连接条件件和过滤条件件分开来呢?原来的交叉连接接:select enamee, dnaame frrom emmp, deept; -笛卡尔尔乘积56行行1999年标准准的语法:(写写法)select enamee, denname ffrom eemp crross jjoin ddept; crosss join - 叫叫做交叉连接接(新语法定定义的比较明明确,也是556行,笛卡卡尔乘积)原来的等值连接接:select enamee, dnaame frrom emmp, deept whhere emp.ddept
42、noo = deept.deeptno;新语法的等值连连接:select enamee, dnaame frrom emmp joiin deppt on (emmp.depptno = deptt.depttno);等值连接的简单单的写法:select enamee, dnaame frrom emmp joiin deppt usiing(deeptno)using (deptnno) - 是说我我这个表的ddeptnoo等于你这个个表的depptno* usingg 的用法不不推荐使用- 两张张表中要有相相同的字段,类类型必须相同同非等值连接:例子1:取出雇雇员名称和薪薪水等级selec
43、t enamee, graade frrom emmp e join saalgradde s on (e.ssal beetweenn s.loosal aand s.hisall);三个表连接在一一起的:例子2:取出雇雇员名字,他他的部门名称称,和薪水等等级其中名字字第二个字母母包含A的不不要取出select enamee, dnaame, ggrade from emp e jjoin ddept dd on (e.depptno = d.deeptno)join saalgradde s oon (e.sall betwween ss.losaal andd s.hissal)wher
44、e eename not llike _A%;例子3:自连接接新语法求这这个人的名字字,他经理人人的名字select e1.enname, e2.enname ffrom eemp e11 joinnemp ee2 on (e1.mmgr = e2.emmpno);King如果想想显示出来该该怎么办呢?外连接:左外连接:可以以把左边这张张表的多余的的数据(不能能产生连接的的数据给拿出出来)选出雇员名字和和它经理人的的名字(可以以将没有经理理人的那个人人取出来)select e1.enname, e2.enname ffrom eemp e11 leftt (outter) jjoin eemp
45、 e22 on(e1.mgr = e2.eempno);例子4:求:每每个雇员的名名字,他所在在部门的名称称,全部选出出来,并且把把多余的部门门也选出来?select enamee, dnaame frrom emmp e rright outerr joinn deptt d onn(e.deeptno = d.ddeptnoo);全外连接:即把把左边的多余余的数据拿出出来,又把右右边的多余的的数据拿出来来,例:selecct enaame, ddname from emp ee fulll joinn depttd on (e.deptnno = dd.depttno);16_部门平均均薪
46、水的等级级.avi1.求部门平均均薪水等级?select deptnno, avvg_sall, graade frrom (selectt depttno, aavg(saal) avvg_sall fromm emp groupp by ddeptnoo) tjoin saalgradde s oon (t.avg_ssal beetweenn s.lossal annd s.hhisal);2.求部门中哪哪些人的薪水水最高select enamee, sall fromm emp join (sselectt max(sal) max_ssal, ddeptnoo frommemp gg
47、roup by deeptno) ton (empp.sal = t.mmax_saal andd emp.deptnno =t.deptnno);17_部门平均均的薪水等级级.avi例子1:求出每每个人的薪水水等级,然后后再平均求出出的就是平均均薪水等级select deptnno, enname, gradee fromm emp join saalgradde s oon (emmp.sall betwween ss.losaaland s.hissal);select deptnno, avvg(graade) ffrom (selectt depttno, eename, gradd
48、e froom empp join saalgradde s on (empp.sal betweeen s.losall and s.hissal) tgroup bby depptno;18_哪些人是是经理.avviselect enamee fromm emp wheree empnno in (seleect mgr ffrom eemp);select enamee fromm mep wheree empnno in (seleect distiinct mmgr frrom emmp);19_不用组函函数求最高薪薪水.avii(面试题),考考虑使用“自自连接”:select di
49、stiinct ssal frrom emmp wheere saal nott in(selectt disttinct e1.saal froom empp e1 join emmp e2 on (e1.sal 组函函数可以嵌套套,但最多只只能嵌套两层层。22_平均薪水水的等级最低低的部门名称称.avi1.先求平均薪薪水 select avg(ssal) ffrom eemp grroup bby depptno;2.求平均薪水水的等级把上面看成是一一张表,另外外一张表与它它做连接select deptnno, grrade, avg_ssal frrom (selectt depttno
50、, aavg(saal) avvg_sall fromm empggroup by deeptno) tjoin saalgradde s oon (t.avg_ssal beetweenns.lossal annd s.hhisal);3.取出最低等等级select min(ggrade)from (select deptnno, grrade, avg_ssal frrom (selectt depttno, aavg(saal) avvg_sallfrom emp ggroup by deeptno) tjoin saalgradde s oon (t.avg_ssal beetween
51、ns.lossal annd s.hhisal) );最后结果:select dnamee,t1.ddeptnoo, avgg_sal, gradde froom (select avg_ssal, ggrade, depttno frrom (selectt avg(sal) avg_ssal, ddeptnoo fromm emp groupp by ddeptnoo) tjoin saalgradde son (t.aavg_saal bettween s.lossal annd s.hhisal) t1join deeptd oon (t11.depttno = d.depptno)w
52、heret11.gradde = (select min(ggrade) fromm (select avg_ssal, ggrade, depttno frrom (selectt avg(sal) avg_ssal, ddeptnoo fromm empggroup by deeptno) tjoin saalgradde son (t.aavg_saal bettween s.lossal annd s.hhisal);23_vieww.avi权限问题:Conn syys/bjssxt ass sysddba;grant ccreatee tablee, creeate vview tt
53、o scoott;conn sccott/ttiger创建视图:Create view vv$_deppt_avgg_sal_info asselect deptnno, grrade, avg_ssal frrom (selectt depttno, aavg(saal) avvg_sall fromm empggroup by deeptno) tjoin saalgradde s oon (t.avg_ssal beetweenns.lossal annd s.hhisal);视图是什么东西西? 就是一个子查查询或者就是是一张表,视视图中的表叫叫虚表,实际际数据依然在在实际当中的的表里面
54、从视图里面取数数据:select * froom v$_dept_vag_ssal_innfo;视图的作用:首首先建一个虚虚表,给一个个别名,然后后在虚表的基基础上取数据据就方便多了了第二天下午:24_比普通员员工的最高薪薪水还要高的的经理人名称称.avi例子1:求比普普通员工的最最高薪水还要要高的经理人人名称先求普通员工的的最高薪水?select max(ssal) ffrom eemp whhere eempno not iin(selectt disttinct mgr ffrom eemp whhere mmgr iss not nnull);求比这个值还要要大而且他本本身必须是经经理
55、人select enamee fromm empwhere eempno in (sselectt mgr from emp wwheremmgr iss not null)and sal (select max(ssal) ffrom eemp whhere eempno notinn (selecct disstinctt mgr from emp wwhere mgr iis nottnull);)25_creaate_neew_useer_andd_inseert.avvi之前学的sellect语句句全部掌握住住-面试题:比比较效率1、selecct * ffrom eemp whhe
56、re ddeptnoo = 100 andeename like %A%;2、selecct * ffrom eemp whhere eename like %A% andddeptnoo = 100;理论上说,1比比2快先比较数字比较较快一些,只只要数字不对对,后面就不不用看了,只只有数字相同同的情况下才比较后后面的字符串串这其实有点点像短路的那那个意思类似前面学的短短路与和短路路或。这两条条语句放到OOraclee里面执行,OOraclee很可能对他进行优化,很很可能把后面面的语句放到到前面去了。DML语句-数据操作语语言常用的有三条 + sellect语句句合称为-数据库的44大语句*
57、selecct insert - 把一一条数据插入入的数据表里里面update - 修改改现有的已经经放在我们数数据库里面的的数据delete - 删除除数据这四句话应该牢牢牢记住简单介绍Oraacle的逻逻辑结构大家还记得我们们装Oraccle的时候候安装了一个个新的数据库库databbase,ddatabaase的名字字全局数据库库名叫:-然后后为这个数据据库创建了一一系列的管理理数据的进程程叫做-sid 它它的名字叫做做-SXXT。在这个大数据库库里面,逻辑辑把他们划分分成一个一个个的“表空间间”,我们现现在的表其实实是放在不同同的表空间里里面,我们现现在用的表eemp, ssalgra
58、ade, ddept,放放在表空间,UUsers里里,这是Orracle自自己帮你建好好的一个表空空间,这个表表空间放置sscott里里面所有的表表,当你登陆陆上来之后,实实际上是访问问你这个表空间里面所有的的表,如果现现在两个人同同时登录同一一台服务器,就就是两个人同同时访问当前前表空间里的的表这时候会产生数数据不一致的的现象(你正正在改呢,我我给删了,产产生数据不一一致问题),解解决办法:在在服务器上创建一个新新的用户,叫叫xxx,然然后在useers表空间间里,为xxxx分配表空空间,再把xxxx要访问问的表导入xxx这个表空空间里面,这这就是说明OOraclee为什么是支支持多用户的的
59、,每个用户户之间的访问问不会产生影影响综述:一个是DDATABAASE DAATABASSE分配不同同的表空间,现现在用的表空空间是Useers,然后后Scottt所有的相关关资源全部都放在在表空间里面面了,现在我我在表空间里里面开辟同样样的资源,把把这些资源全全部Copyy过来,然后后另外一个人登录录进来访问的的是他自己的的资源,不再再访问其他的的资源第一步:用超级级管理员登录录,只有超级级管理员才能能创建用户Conn syys/bjssxt ass sysdbba;第二步:删除用用户Drop usser XXX cascaade; 当你的的数据库里面面没有xxxx这个名就不不需要删除它它1
60、- bacckup sscott exp把资源导入进入命令行cd cd temppdel *.*;yexpscott/ttigeruyesyesyes成功导出之后CC:temmp下面会多多一个文件EEXPDATT.DMP ,这个文件件里包含我们们导出其他人相关关的资源scott 里里面所有的东东西全部就包包含进来了。2- creeate uusercreate user idenntifieed by defaault tableespacee userrs quoota 100M on userss;分配权限:grant ccreatee sesssion,登登陆 createe tabll
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 课件无法修复教学课件
- 新会区会城创新初级中学八年级上学期语文11月期中考试卷
- 七年级上学期语文期中考试卷-6
- 第八中学九年级上学期语文期中考试试卷
- 一年级数学(上)计算题专项练习集锦
- 贵重物品承销协议书(2篇)
- 南京航空航天大学《程序设计实践》2023-2024学年期末试卷
- 南京工业大学浦江学院《土木工程测量》2021-2022学年第一学期期末试卷
- 南京航空航天大学《法律职业伦理》2021-2022学年期末试卷
- 肥皂泡第课时说课稿
- (2024年)特种设备安全法律法规培训课件
- 个人医保代办委托书
- 小班数学活动《按颜色分类》课件
- AI技术对文化创意产业的创新
- 高校物业物业管理服务内容及标准
- 校车发展方案
- 戏雪乐园策划方案
- 一例新生儿NEC护理个案
- 2024年天翼云运维工程师认证考试复习题库(含答案)
- 呼吸道疾病防控宣传教育培训
- 电池管理系统优化
评论
0/150
提交评论