Oracle學(xué)習(xí)筆記.doc_第1頁(yè)
Oracle學(xué)習(xí)筆記.doc_第2頁(yè)
Oracle學(xué)習(xí)筆記.doc_第3頁(yè)
Oracle學(xué)習(xí)筆記.doc_第4頁(yè)
Oracle學(xué)習(xí)筆記.doc_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Oracle學(xué)習(xí)筆記一Oracle的卸載1)軟件環(huán)境: 1、Windows xp+ORACLE 8.1.7 2、ORACLE安裝路徑為:C:ORACLE 2)實(shí)現(xiàn)方法: 1、 開始設(shè)置控制面板管理工具服務(wù)停止所有Oracle服務(wù)。 2、 開始程序Oracle-OraHome81Oracle Installation ProductsUniversal Installer。卸裝所有Oracle產(chǎn)品,但Universal Installer本身不能被刪除。3、 運(yùn)行regedit,選擇HKEY_LOCAL_MACHINESOFTWAREORACLE,按del鍵刪除這個(gè)入口。 4、 運(yùn)行regedit,選擇HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices,滾動(dòng) 這個(gè)列表,刪除所有Oracle入口。 5、 運(yùn)行refedit,選擇HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplication,滾動(dòng)這個(gè)列表,刪除所有Oracle入口。6、 我的電腦-屬性-高級(jí)-環(huán)境變量。刪除環(huán)境變量CLASSPATH和PATH中有關(guān)Oracle的設(shè)定。刪除Oracle在該值中的內(nèi)容。注意:path中記錄著一堆操作系統(tǒng)的目錄,在windows中各個(gè)目錄之間使用分號(hào)(; )隔開的,刪除時(shí)注意。刪除PATH環(huán)境變量中關(guān)于Oracle的值時(shí),將該值全部拷貝到文本編輯器中,找到對(duì)應(yīng)的Oracle的值,刪除后,再拷貝修改的串,粘貼到PATH環(huán)境變量中,這樣相對(duì)而言比較安全。7、 重新啟動(dòng)計(jì)算機(jī),重起后才能完全刪除Oracle所在目錄。8、 從桌面上、STARTUP(啟動(dòng))組、程序菜單中,刪除所有有關(guān)Oracle的組和圖標(biāo)。9、 刪除Program FilesOracle目錄。10、刪除與Oracle有關(guān)的文件,選擇Oracle所在的缺省目錄C:Oracle,刪除這個(gè)入 口目錄及所有子目錄,并從Windows 2000目錄(一般為C:WINNT)下刪除以下文 件ORACLE.INI、oradim73.INI、oradim80.INI、oraodbc.ini等等。 11、WIN.INI文件中若有ORACLE的標(biāo)記段,刪除該段。12、如有必要,刪除所有Oracle相關(guān)的ODBC的DSN。13、到事件查看器中,刪除Oracle相關(guān)的日志。3)說明: 1、如果有個(gè)別DLL文件無法刪除的情況,則不用理會(huì),重新啟動(dòng),開始新的安裝, 2、安裝時(shí),選擇一個(gè)新的目錄,則,安裝完畢并重新啟動(dòng)后,老的目錄及文件就可以刪除掉了。 3、oracle沒有裝好,建議重新裝過,最好先刪除以前裝 的oracle數(shù)據(jù)庫(kù)。在win里面刪除oracle 有點(diǎn)復(fù)雜 ,如有安裝客戶端也應(yīng)該在服務(wù)里有這樣的服務(wù)存在OracleMTSRecoveryService。步驟如下:Win下完全刪除Oracle 4、可以完整地刪除Oracle products, Oracle services和注冊(cè)表信息(當(dāng)然是很少情況下才想到刪除oracle,只有確定真的不用的時(shí)候才做)。如果需要請(qǐng)備份所有相關(guān)的文件。 二oracle啟動(dòng)方法 oracle自帶的工具軟件,主要用于執(zhí)行spl語(yǔ)句,plspl塊1、開始程序Oracle - OraDb10g_home1應(yīng)用程序開發(fā)spl plus 2、開始運(yùn)行sqlplusw3、開始運(yùn)行sqlplus三oracle登錄登錄名:system 密碼:lin四spl*plus常用命令連接命令(1)connect 說明:conn 用戶名/密碼網(wǎng)絡(luò)服務(wù)名 as sysdba/as sysoper,當(dāng)用特權(quán)用戶身份連接時(shí),必須帶上as sysdba或是as sysoper。 案例:conn system/lin; 切換登錄用戶名(2)disconnect 說明:該命令用于斷開與當(dāng)前數(shù)據(jù)庫(kù)的連接。(3)password 說明:該命令用于修改用戶的密碼,如果想要修改其他用戶的密碼,需要用sys/system登陸。(4)show user 說明:顯示當(dāng)前用戶名。(5)exit 說明:該命令用于斷開與數(shù)據(jù)庫(kù)的連接,同時(shí)退出sql*plus。文件操作命令(1)start和 說明:運(yùn)行sql腳本 案例:sql d:a.sql; 或者 sqlstart d:a.sql;(2)edit 說明:編輯指定的sql腳本 案例:sqledit d:a.sql;(3)spool 說明:該命令可以將sql*plus屏幕上的內(nèi)容輸入到指定的文件中去。 案例:sqlspool d:b.sql 在d盤新建一個(gè)文件b.sql sqlselect * from emp; sqlspool off;交互式命令(1)& 說明:可以替代變量,而該變量在執(zhí)行時(shí),需要用戶輸入。 sqlselect * from emp where job=&job;顯示和設(shè)置環(huán)境變量概述:可以用來控制輸出的各種格式,set show如果希望永久的保存相關(guān)的設(shè)置,可以 去修改glogin.sql腳本。(1)linesine 說明:設(shè)置顯示行的寬度,默認(rèn)是80個(gè)字符。 案例:sqlshow linesize; Sqlset linesize 90;(2)pagesize 說明:設(shè)置每頁(yè)顯示的行數(shù)目,默認(rèn)是14行。 案例:sqlshow pagesize; Sqlset pagesize 5;五Oracle用戶的管理 創(chuàng)建用戶概述:在Oracle中要?jiǎng)?chuàng)建一個(gè)新的用戶使用create user語(yǔ)句,一般是具有dba(數(shù)據(jù)庫(kù) 管理員)的權(quán)限才能使用。(1) create user用戶名identified by密碼 說明:創(chuàng)建新用戶。 案例:sqlconn system/lin; sqlcreate user xiaoming identified by m123;修改用戶密碼概述:如果給其他用戶修改密碼,需要具有dba的權(quán)限,或是擁有alter user的系統(tǒng)權(quán)限, 如system用戶。 案例:sqlconn system/lin; sqlpassword xiaoming; 或 sqlalter user 用戶名 identified by 新密碼 刪除用戶概述:一般以dba的身份去刪除某個(gè)用戶,如果用其他用戶去刪除用戶則需要具有 drop user的權(quán)限,如system用戶。 案例:drop user 用戶名cascade 注意:在刪除用戶時(shí),如果用戶已經(jīng)創(chuàng)建了表,那么在刪除時(shí)需加參數(shù)cascade。綜合案例概述:創(chuàng)建的新用戶沒有任何權(quán)限,甚至無法登錄數(shù)據(jù)庫(kù),這時(shí)需要其他用戶(如sys、system) 為其指定相應(yīng)的權(quán)限。賦予權(quán)限命令grant,收回權(quán)限命令revoke。(1)grant權(quán)限to用戶名 案例:sqlconn system/lin; sqlgrant connect to xiaoming;(2)revoke權(quán)限to用戶名 案例:sqlconn system/lin; sqlrevoke connect from xiaoming;權(quán)限(1)系統(tǒng)權(quán)限:connect(登錄)、dba(所有)、resource(建表)(2)對(duì)象權(quán)限:select(查詢)、insert、update(修改)、delete、all等。概述:用戶xiaoming查詢system的emp表案例:sqlconn system/lin; sqlgrant select on emp to xiaoming;概述:用戶xiaoming修改system的emp表案例:sqlconn system/lin; sqlgrant update on emp to xiaoming;概述:用戶xiaoming對(duì)system的emp表所有權(quán)限案例:sqlconn system/lin; sqlgrant all on emp to xiaoming;概述:用戶xiaoming查詢scott的emp表,同時(shí)可以把這個(gè)權(quán)限賦予其他用戶,如果是 對(duì)象權(quán)限,就在后面加上with grant option;如果是系統(tǒng)權(quán)限,就在后面加上with admin option。案例:sqlconn scott/lin; sqlgrant select on emp to xiaoming with grant option; sqlconn system/lin; sqlcreate user xiaohong identified by m123;(新建用戶xiaohong) sqlgrant connect to xiaohong; (賦予xiaohong登錄權(quán)限) sqlconn xiaoming/m123; sqlgrant select on scott.emp to xiaohong;使用profile管理用戶口令概述:profile是口令限制,資源限制的命令集合,當(dāng)建立數(shù)據(jù)庫(kù)時(shí),oracle會(huì)自動(dòng)建立名稱 為default的profile。當(dāng)建立用戶沒有指定的profile選項(xiàng),那么oracle就會(huì)將default 分配給用戶。(1) 賬戶鎖定 概述:指定用戶登錄時(shí)最多可以輸入密碼的次數(shù),也可以指定用戶鎖定的時(shí)間(天), 一般用dba的身份去執(zhí)行該命令。 案例:指定xiaoming最多只能嘗試登錄3次,鎖定時(shí)間為2天。 sqlconn system/lin; sqlcreate profile myprofile limit failed_login_attempts 3 password_lock_tome 2; sqlalter user xiaoming profile myprofile;(2) 賬戶解鎖 案例:給xiaoming解鎖 sqlconn system/lin; sqlalter user xiaoming account unlock;(3) 終止口令 概述:為了讓用戶定期修改密碼可以使用終止口令的指令來完成,同時(shí)這個(gè)命令也 需要dba身份來操作。 案例:指定xiaoming每隔10天修改登錄密碼,寬限期為2天。 sqlconn system/lin; sqlcreate profile myprofile limit password_life_time 10 password_grace_tome 2; sqlalter user xiaoming profile myprofile;(4) 歷史口令 概述:如果希望用戶在修改密碼時(shí),不能使用以前使用過的密碼,可使用歷史口令。 這樣oracle就會(huì)將口令修改的信息存放到數(shù)據(jù)字典中,這樣當(dāng)用戶修改密碼 時(shí),oracle就會(huì)對(duì)新舊密碼進(jìn)行比較,當(dāng)發(fā)現(xiàn)新舊密碼一樣時(shí),就會(huì)提示用戶 重新輸入密碼。 案例:1)建立profile sqlconn system/lin; sqlcreate profile password_history limit password_life_time 10 password_grace_tome 2 password_reuse_time 10; 其中password_reuse_time 指定口令可重用時(shí)間即10天后就可以重用。 2)分配給某個(gè)用戶 sqlalter user xiaoming profile myprofile;(5) 刪除profile 概述:當(dāng)不需要某個(gè)profile文件時(shí),可以刪除該文件。 案例:sqlconn system/lin; sqldrop profile password_historycascade;六Oracle表的管理表名和列的命令規(guī)則1) 必須以字母開頭2) 長(zhǎng)度不能超過30字符3) 不能使用oracle的保留字4) 只能使用如下字符AZ、az、09、$、#等 支持的數(shù)據(jù)類型(1)字符型 1)char 定長(zhǎng)、最大2000字符。 2)varchar2(20) 變長(zhǎng)、最大4000字符 3)clob(character large objiect) 字符型大、對(duì)象最大4G(2) 數(shù)字型 1)number 范圍:-10的38次方10的38次方,可以表示整數(shù),也可以表示小數(shù)。 2)number(5,2) 范圍:-999.99999.99,表示一個(gè)小數(shù)有5位有效數(shù),2位小數(shù)。 3)number(5) 范圍:-9999999999,表示一個(gè)五位整數(shù)。(3) 日期類型 1)date 包含年月日和時(shí)分秒 2)timestamp 這是oracle9i對(duì)date數(shù)據(jù)類型的擴(kuò)展(4) 圖片類型 1)blob 二進(jìn)制數(shù)據(jù),可以存放圖片/聲音4G創(chuàng)建表(1)建表 - 學(xué)生表 案例:sqlcreate table student ( -表名 xh number(4), -學(xué)號(hào) xm varchar2(20), -姓名 sex char (2), -性別 birthday date, -出生日期 sal number(7,2) -獎(jiǎng)學(xué)金 ); (2) 建表 - 班級(jí)表 案例:aqlcreate table class ( classID number(2), cname varchar2(40) );修改表(1) 添加一個(gè)字段 sqlalter table student add (classID number(2);(2) 修改字段的長(zhǎng)度 sqlalter table student modify (xm varchar2(30);(3) 修改字段的類型和名字(不能有數(shù)據(jù)) sqlalter table student modify (xm char(30); 類型 sqlalter table student rename column 字段1 to 字段2; 名字(4)刪除一個(gè)字段 sqlalter table student drop column sal;(5)修改表的名字 sqlrename student to stu;(6)刪除表 sqldrop table student; (7) 查詢表 sqldesc student; 或 sqlselect * from student; 添加數(shù)據(jù)概述:oracle中默認(rèn)的日期格式為DD-MON-YYYY,其中DD表示日(天);MON表示 月份;YYYY表示年份。如21-1月-2011表示2011年1月21號(hào)。(1) 所有字段都插入 sqlinsert into student values(1,小明,男,11-12月-1997,2345.6,12); sqlselect * from student;(2) 修改默認(rèn)的日期格式 sqlalter session set nls_date_format = YYYY-MM-DD; sqlinsert into student values(1,小明,男,1997-12-11,2345.6,12);(3) 插入部分字段 sqlinsert into student(xh,xm,sex) values(1,小明,男);(4) 插入空值 sqlinsert into student(xh,xm,sex,birthday) values(1,小明,男,null); sqlselect * from student where birthday is null; 查詢空值 sqlselect * from student where birthday is not null; 查詢非空值(5) 修改一個(gè)字段 sqlupdate student set sex=女 where xh=1; 案例:將所有男性的獎(jiǎng)學(xué)金減半 sqlupdate student set sal=sal/2 where sex=男;(6) 修改多個(gè)字段 sqlupdate student set sex=男,birthday=1980-04-01where xh=1;(7) 修改含有null值的數(shù)據(jù)刪除數(shù)據(jù)(1) 刪除所有記錄,表的結(jié)構(gòu)還在,可寫日志,可恢復(fù);速度慢。 sqldelete from student; 案例:刪除student表中的所有記錄,再找回。 sqlsavepoint student; 建立一個(gè)保護(hù)點(diǎn) sqldelete from student; 刪除記錄 sqlrollback to student; 回滾到保護(hù)點(diǎn)(2) 刪除表的結(jié)構(gòu)和數(shù)據(jù)。 sqldrop from student;(3)刪除一條記錄 sqldelete from student where xh=1;(4) 刪除表中所有的記錄,表的結(jié)構(gòu)還在,不可寫日志,無法找回刪除的記錄,速度快。 sqltruncate from student;7 Oracle表基本查詢 簡(jiǎn)單的查詢語(yǔ)句emp表中各個(gè)字段的含義:empno(員工編號(hào))、ename(員工姓名)、job(工作崗位)、 mgr(上級(jí)編號(hào))、hiredate(入職日期)、sal(員工工資)、comm(獎(jiǎng)金)、depno(員工部門)(1) 查詢表的結(jié)構(gòu) sqldesc dept;(2) 查詢所有列 sqlselect * from dept;(3) 查詢指定列 sqlselect ename , sal , job ,deptno from emp;(4) 取消重復(fù)行 sqlselect distinct deptno , job from emp;(5)案例:查詢SMITH的薪水、工作及所在部門? sqlselect deptno , job , sal from emp where ename=SMITH; 注意:sql語(yǔ)句中不分大小寫,而查詢?nèi)说男彰璺执笮?。?) 算數(shù)表達(dá)式 案例:查詢每個(gè)員工的年工資,有獎(jiǎng)金的員工加上獎(jiǎng)金。 sqlselect sal*12+nvl(comm,0)*12 年工資,ename , comm from emp; (7) 使用列的別名 sqlselect ename 姓名 ,sal*12 as 年工資 from emp; 將ename改為姓名,sal*12 改為年工資。(8) 如何處理null值 使用nvl函數(shù)來處理,參照(6)。(9) 如何連接字符串(|) sqlselect ename | is a | job from emp;(10) 使用where子句 案例:1.查詢工資高于3000的員工情況? sqlselect ename,sal from emp where sal3000; 2.查詢1982.1.1后入職的員工情況? sqlselect ename,hiredate from emp where hiredate1-1月-1982; 3.查詢工資在2000到2500之間的員工情況? sqlselect ename,sal from emp where sal=2000 and salselect ename,sal from emp where ename like S%; 2.查詢第二個(gè)字符為大寫O的所有員工姓名和工資? sqlselect ename,sal from emp where ename like _O%;(12) 在where條件中使用in 案例:查詢empno為7499,345,800.的員工? sqlselect * from emp where empno in(7499,345,800);(13) 使用is null操作符 案例:查詢沒有上級(jí)的員工? sqlselect * from emp where mgr is null;(14) 使用邏輯操作符號(hào) 案例:查詢工資高于500或是崗位為MANAGER的員工,同時(shí)還要滿足他們的姓名 首寫字母為大寫的J? sqlselect * from emp where (sal500 or job=MANAGER) and ename like J%;(15) 使用order by 子句 案例:1.按照工資從低到高的順序顯示員工的信息? sqlselect * from emp order by sal (asc); 默認(rèn)從低到高的順序 sqlselect * from emp order by sal desc; 從高到低的順序 2.按照員工部門升序而員工的工資降序排列員工的信息? sqlselect * from emp order by deptno , sal desc;(16) 使用列的別名排序 案例:按照員工的年薪排序? sqlselect ename , (sal+nvl(comm,0)*12 as年薪 from emp order by 年薪 asc;復(fù)雜的查詢語(yǔ)句概述:在實(shí)際應(yīng)用中經(jīng)常需要執(zhí)行復(fù)雜的數(shù)據(jù)統(tǒng)計(jì),經(jīng)常需要顯示多張表的數(shù)據(jù),所以這 就要求我們學(xué)習(xí)較為復(fù)雜的select語(yǔ)句。(1) 數(shù)據(jù)分組 max,min,avg,sum,count 案例:1.查詢所有員工中最高的工資和最低的工資? sqlselect max(sal),min(sal) from emp; * 2.查詢所有員工中最高的工資及是誰(shuí)? sqlselect ename,sal from emp where sal=(select max(sal) from emp); 3.查詢所有員工的平均工資和工資的總和? sqlselect avg(sal),sum(sal) from emp; 4.查詢總共有多少員工? sqlselect count(sal) from emp; 5.查詢工資最高員工的名字及工作崗位? sqlselect job,sal from emp where sal=(select max(sal) from emp); 6.查詢工資高于平均工資的員工信息? sqlselect * from emp where sal(select avg(sal) from emp);(2) 使用group by和having子句 概述:group by用于對(duì)查詢的結(jié)果分組統(tǒng)計(jì),having用于限制分組顯示的結(jié)果。 案例:1.查詢每個(gè)部門的平均工資和最高工資? sqlselect avg(sal),max(sal),deptno from emp group by deptno; 2.查詢每個(gè)部門的每種崗位的平均工資和最低工資? sqlselect avg(sal),min(sal),deptno,job from emp group by deptno,job; 3.查詢平均工資高于2000的員工部門和它的平均工資、最高工資? sqlselect avg(sal),max(sal),deptno from emp group by deptno having avg(sal)2000;(3) 數(shù)據(jù)分組的總結(jié) 1.分組函數(shù)只能出現(xiàn)在選擇列表、having、order by子句中。 2.如果在select語(yǔ)句中同時(shí)包含有g(shù)roup by、having、order by,那么他們的 順序是group by,having,order by。 如:sqlselect avg(sal),max(sal),deptno from emp group by deptno having avg(sal)2000 order by avg(sal); 3.在選擇列種時(shí),如果有列、表達(dá)式和分組函數(shù),那么這些列和表達(dá)式必須有一個(gè) 出現(xiàn)在group by子句中。 如:sqlselect avg(sal),max(sal),deptno from emp group by deptno having avg(sal)2000; 這里deptno一定要出現(xiàn)在group by中。 多表的查詢概述:多表的查詢時(shí)指基于兩個(gè)或是兩個(gè)以上的表或是視圖的查詢。在實(shí)際應(yīng)用中,查詢 單個(gè)表的可能無法滿足需求(如:查詢sales部門位置和其員工的姓名),在這種 情況下需要使用到dept表和emp表。案例:1.查詢員工姓名、員工工資及其所在的部門名字? 笛卡爾集規(guī)定:多表查詢的條件個(gè)數(shù)至少不能少于表的個(gè)數(shù)-1。 salselect a1.ename,a1.sal,a2.dname from emp a1,dept a2 where a1.deptno=a2.deptno; 2.查詢部門號(hào)為10的部門名、員工姓名和工資? salselect a1.dname,a2.ename,a2.sal from dept a1,emp a2 where a1.deptno=a2.deptno and a1.deptno=10; 3.查詢各個(gè)員工的姓名、工資及其工資的級(jí)別? salselect a1.ename,a1.sal,a2.grade from emp a1,salgrade a2 where a1.sal between a2.losal and a2.hisal; 4.查詢員工姓名、員工工資及其所在的部門名字,并按部門排序? salselect a1.ename,a1.sal,a2.dname from emp a1,dept a2 where a1.deptno=a2.deptno order by a1.deptno;(1)自連接 概述:自連接是指在同一張表的連接查詢。 案例:查詢某個(gè)員工的上級(jí)領(lǐng)導(dǎo)的姓名?比如查詢FORD的上級(jí)? salselect worker.ename,boss.ename from emp worker,emp boss where worker.mgr=boss.empno and worker.ename=FORD;子查詢概述:子查詢是指嵌入在其他sql語(yǔ)句中的select語(yǔ)句,也叫嵌套查詢。(1) 單行子查詢 概述:?jiǎn)涡凶硬樵冎钢环祷匾恍袛?shù)據(jù)的子查詢語(yǔ)句。 案例:查詢與SMITH同一部門的所有員工? salselect * from emp where deptno=(select deptno from emp where ename=SMITH);(2) 多行子查詢 概述:多行子查詢指返回多行數(shù)據(jù)的子查詢語(yǔ)句。 案例:查詢和部門10的工作相同的員工姓名、崗位、工資和部門號(hào)? salselect * from emp where job in (select distinct job from emp where deptno=10);(3) 在多行子查詢中使用all操作符 案例:查詢工資比部門30所有員工的工資高的員工姓名、工資和部門號(hào)? salselect ename,sal,deptno from emp where salall (select sal from emp where deptno=30); 或者salselect * from emp where sal(select max(sal) from emp where deptno=30);(4) 在多行子查詢中使用any操作符 案例:查詢工資比部門30任意一個(gè)員工工資高的員工姓名、工資、部門號(hào)? salselect ename,sal,deptno from emp where salany (select sal from emp where deptno=30); 或者salselect * from emp where sal(select min(sal) from emp where deptno=30);(5)多列子查詢 概述:多列子查詢指查詢返回多個(gè)列數(shù)據(jù)的子查詢語(yǔ)句。 案例:查詢與SMITH的部門和崗位相同的所有員工? salselect * from emp where (deptno,job)=(select deptno,job from emp where ename=SMITH); (6) 在from子句中使用子查詢 案例:查詢高于自己部門平均工資的員工? salselect a2.ename,a2.sal,a2.deptno,a1.mysal from emp a2, (select deptno,avg(sal) mysal from emp group by deptno) a1 where a2.deptno=a1.deptno and a2.sala1.mysal; 說明:當(dāng)在from子句中使用子查詢時(shí),該子查詢會(huì)被作為一個(gè)視圖來對(duì)待,因此 叫做內(nèi)嵌視圖;當(dāng)在from子句中使用子查詢時(shí),必須給子查詢指定別名。(7) 分頁(yè)查詢 1.rownum分頁(yè) (select * from emp) 2.顯示rownum (oracle分配的),表中多出一列rn。 select a1.*,rownum rn from (select * from emp) a1; 3.查詢r(jià)nselect a1.*,rownum rn from (select * from emp) a1 where rownum=10; 查詢6=rnselect * from (select a1.*,rownum rn from (select * from emp) a1 where rownum=6; 4.查詢r(jià)n610的員工姓名和工資? salselect * from (select a1.*,rownum rn from (select ename,sal from emp) a1 where rownum=6; 5.查詢r(jià)n610的員工姓名和工資、工資要按升序排列? salselect * from (select a1.*,rownum rn from (select ename,sal from emp order by sal) a1 where rownum=6;(8) 用查詢結(jié)果創(chuàng)建新表 532205244185 概述:在創(chuàng)建新表的同時(shí)數(shù)據(jù)也將帶入新表。 案例:用emp表中員工編號(hào)、姓名和工資創(chuàng)建一張新表emp2? salcreate table emp2 (a,b,c) as select empno,ename,sal from emp;合并查詢概述:有時(shí)在實(shí)際應(yīng)用中,為了合并多個(gè)select語(yǔ)句的結(jié)果,可以使用集合操作符號(hào) union、union all、intersect、minus。(1) Union 概述:該操作符用于取得兩個(gè)結(jié)果集的并集,當(dāng)使用該操作符時(shí),會(huì)自動(dòng)去掉結(jié)果 集中重復(fù)行。 案例:salselect ename,sal,job from emp where sal2500 union select ename, sal,job from emp where job=MANAGER;(2) union all 概述:該操作與union相似,但是它不會(huì)取消重復(fù)行,而且不會(huì)排序。該操作符 用于取得兩個(gè)結(jié)果集的并集,當(dāng)使用該操作符時(shí),會(huì)自動(dòng)去掉結(jié)果集中重 復(fù)行。 案例:salselect ename,sal,job from emp where sal2500 union all select ename,sal,job from emp where job=MANAGER;(3) intersect 概述:該操作符用于取得兩個(gè)結(jié)果集的交集。 案例:salselect ename,sal,job from emp where sal2500 intersect select ename,sal,job from emp where job=MANAGER;(4) minus 概述:該操作符用于取得兩個(gè)結(jié)果集的差集,它只會(huì)顯示存在第一個(gè)集合中,而不 存在第二個(gè)集合中的數(shù)據(jù)。 案例:salselect ename,sal,job from emp where sal2500 minus select ename,sal,job from emp where job=MANAGER;8 在Oracle中操作數(shù)據(jù)使用特定的格式插入日期值(1) 使用to_date函數(shù) 案例:如何插入列帶有日期的表,并按照年-月-日的格式? sqlinsert into student values(1,小明,男, to_date(1997-12-11,yyyy-mm-dd),2345.6,12);使用子查詢插入數(shù)據(jù)概述:當(dāng)使用values子句時(shí),一次只能插入一行數(shù)據(jù),當(dāng)使用子查詢插入數(shù)據(jù)時(shí),一條 Insert語(yǔ)句可以插入大量的數(shù)據(jù)。當(dāng)處理行遷移或者裝載外部表的數(shù)據(jù)到數(shù)據(jù)庫(kù) 時(shí),可以使用子查詢來插入數(shù)據(jù)。案例:新建一張表,把emp表中的部分?jǐn)?shù)據(jù)導(dǎo)入新表中? 1.建表kkk sqlcreate table kkk (myID number(4),myname varchar2(50),myDept number(5); 2.導(dǎo)入數(shù)據(jù) sqlinsert into kkk (myID,myname,myDept) select empno,ename,deptno from emp where deptno=10;使用子查詢更新數(shù)據(jù)概述:使用update語(yǔ)句更新數(shù)據(jù)時(shí),即可以使用表達(dá)式或者數(shù)據(jù)直接修改數(shù)據(jù),也可以 使用子查詢修改數(shù)據(jù)。案例:把員工scott的崗位、工資、補(bǔ)助改為與員工smith一樣? sqlupdate emp set (job,sal,comm)=(select job,sal,comm from emp where ename=SMITH) where ename=SCOTT;9 Oracle中事務(wù)處理(1) 事務(wù) 概述:事務(wù)用于保證數(shù)據(jù)的一致性,它由一組相關(guān)的dml語(yǔ)句組成,該組的dml 語(yǔ)句要么全部成功,要么全部失敗。 例如:網(wǎng)上轉(zhuǎn)賬就是典型的要用事務(wù)來處理,用以保證數(shù)據(jù)的一致性。 (2) 事務(wù)和鎖 概述:當(dāng)執(zhí)行事務(wù)操

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論