Oracle經(jīng)典自學(xué)筆記_第1頁(yè)
Oracle經(jīng)典自學(xué)筆記_第2頁(yè)
Oracle經(jīng)典自學(xué)筆記_第3頁(yè)
Oracle經(jīng)典自學(xué)筆記_第4頁(yè)
Oracle經(jīng)典自學(xué)筆記_第5頁(yè)
已閱讀5頁(yè),還剩85頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、一驗(yàn)證Oracle差不多安裝完成了,首先得確認(rèn)程序里有這些個(gè)選項(xiàng),有四個(gè)選項(xiàng):Oracle Installation Products、集成治理工具、配置和移植工具(治理員用得比較多)、應(yīng)用程序開(kāi)發(fā)。Oracle也能夠形成一種層次性的鏈接(Directory Manager),關(guān)于我們來(lái)講用得最多是sqlplus,而OLE 是一種面向?qū)ο蟮募夹g(shù),利用這種技術(shù)可開(kāi)發(fā)可重復(fù)使用的軟件組件(COM),他是微軟提出的,在用VB開(kāi)發(fā)時(shí)可能要用,關(guān)于我們來(lái)講不須管。當(dāng)啟動(dòng)sqlplus時(shí)會(huì)提示輸入用戶名和口令,所謂的sqlplus是Oracle的一個(gè)客戶端。Oracle大多數(shù)命令都用命令來(lái)實(shí)現(xiàn),因此比較難

2、使,就如同unix比windows難使。口令你輸入tiger,建議就用它,因?yàn)橐院笕テ髽I(yè)里Oracle 9i確實(shí)是用的那個(gè)口令。當(dāng)你看到SQL命令符時(shí)講明差不多進(jìn)入到了Oracle的命令行了。圖形版的sqlplus,命令行的sqlplus,還有一個(gè)確實(shí)是通過(guò)網(wǎng)頁(yè)訪問(wèn)Oracle的服務(wù),啟動(dòng)sqlplus,端口號(hào)是5560,URL是 HYPERLINK :5560/isqlplus。isqlplus :5560/isqlplus。isqlplus特不有用,比如講你的機(jī)器上沒(méi)有裝上Oracle,就能夠通過(guò)鍵入不人的IP,然后登陸到他的機(jī)器上來(lái)做實(shí)驗(yàn),因此也能夠安裝特定的客戶端軟件實(shí)現(xiàn)。講實(shí)在的Or

3、acle的那個(gè)客戶端太難看了,同時(shí)要記好多好多的命令,因此專門有一類公司專門為Oracle開(kāi)發(fā)客戶端。有一個(gè)比較聞名的客戶端叫Toad,因此Oracle還有一個(gè)客戶端PL/SQL Develplor,那個(gè)用的也特不多。數(shù)據(jù)庫(kù)治理時(shí)常用Toad(英文蛤蟆的意思),假如有聲卡的話,你啟動(dòng)一次它就叫一次。對(duì)我們來(lái)講sqlplus足夠使了。以后有機(jī)會(huì)我使用一下PL/SQL Develplor,只是那個(gè)也不行使,因?yàn)槟阃瑫r(shí)必須裝上Oracle,還不如isqlplus好呢。以超級(jí)治理員身份鏈接數(shù)據(jù)庫(kù)的方法是再命令行下敲入命令:sqlplus sys/口令 as sysdba。Sys和system的區(qū)不是s

4、ys是數(shù)據(jù)庫(kù)治理者,system是數(shù)據(jù)庫(kù)所有者,sys用戶擁有dba,sysdba,sysoper等角色或權(quán)限,是oracle權(quán)限最高的用戶,system用戶擁有dba,sysdba等角色或系統(tǒng)權(quán)限,system假如正常登錄,它事實(shí)上確實(shí)是一個(gè)一般的dba用戶,然而假如以as sysdba登錄,其結(jié)果實(shí)際上它是作為sys用戶登錄的,這一點(diǎn)類似Linux里面的sudo的感受,從登錄信息里面我們能夠看出來(lái)。sys用戶必須以as sysdba或as sysoper形式登錄。然后輸入命令alter user scott account unlock;它的意思是將Scott用戶解鎖,以后關(guān)于dba的用到

5、一個(gè)學(xué)一個(gè),沒(méi)必要從頭到尾的去學(xué)它。二SQL語(yǔ)言是在數(shù)據(jù)庫(kù)下進(jìn)行操作的語(yǔ)言,它本身是一個(gè)標(biāo)準(zhǔn)語(yǔ)言,有國(guó)際標(biāo)準(zhǔn)。有兩套一個(gè)是SQL1992,SQL1999。大多數(shù)數(shù)據(jù)庫(kù)既支持舊的標(biāo)準(zhǔn)也支持新的,專門多也是用的舊的SQL語(yǔ)言寫程序的,關(guān)于我們來(lái)講新舊都要學(xué),而且對(duì)大多數(shù)數(shù)據(jù)庫(kù)系統(tǒng)來(lái)講差不多上通用的,只只是不同數(shù)據(jù)庫(kù)有一個(gè)輕微的改變,這確實(shí)是最郁悶的地點(diǎn),沒(méi)方法到時(shí)候查手冊(cè)或google一下。SQL全稱為Structured Query Language,即機(jī)構(gòu)化查詢語(yǔ)言,它被定義為第四代語(yǔ)言。什么緣故叫第四代語(yǔ)言,因?yàn)槲覀兠靼椎谌Z(yǔ)言也得有if else for 等這些流程操縱語(yǔ)句,也確實(shí)是你得

6、告訴它干什么且如何干。第四大只用告訴它我要干什么,不用去操縱它如何干,如此的語(yǔ)言學(xué)起來(lái)因此十分easy。我們共有四類語(yǔ)句要學(xué):數(shù)據(jù)操作語(yǔ)言語(yǔ)句Data manipulation language,DML,會(huì)話操縱語(yǔ)句 HYPERLINK /searchwhatis/18/5949018.shtml t _bank session control statement,數(shù)據(jù)定義語(yǔ)言語(yǔ)句Data definition language,DDL以及事務(wù)操縱語(yǔ)句 HYPERLINK /searchwhatis/297/6092797.shtml t _bank transaction control s

7、tatement。查詢語(yǔ)句只有一句話確實(shí)是select語(yǔ)句,這是最重要的一條語(yǔ)句。以后只要遇到相應(yīng)的select語(yǔ)句一律背過(guò),企業(yè)再面試時(shí)其他語(yǔ)句一般可不能如何考但這條語(yǔ)句是必考的。假如考你SQL語(yǔ)句確信會(huì)考這條select語(yǔ)句不是不的。你跟不人交流的時(shí)候,不講我寫過(guò)幾條dml語(yǔ)句,而因詳細(xì)的講到底是什么語(yǔ)句,比如insert語(yǔ)句、update語(yǔ)句等。選擇的意思是從表里把數(shù)據(jù)拿出來(lái),展現(xiàn)出來(lái)。聽(tīng)起來(lái)大概挺簡(jiǎn)單的,但你要從表里拿數(shù)據(jù)得首先明白有幾張表,每張表里有些什么內(nèi)容。第一步要做的確實(shí)是熟悉一下實(shí)驗(yàn)用的數(shù)據(jù),這些數(shù)據(jù)Oracle都給自帶了,直接用就行了。首先第一條語(yǔ)句desc emp,描述一

8、下emp這張表,會(huì)分不列出所有字段(表頭),empno 雇員編號(hào),ename 雇員名字,job 雇職員種,mgr 經(jīng)理人,hiredate 雇員入職日期,sal 薪水,comm 津貼,獎(jiǎng)金,deptno 所屬部門編號(hào)。表還有一部分叫類型,也確實(shí)是相對(duì)應(yīng)字段的類型,這些差不多上Oracle差不多定義好的,我們直接用?,F(xiàn)在先用不人建立好的表,然后再自己建表。NUMBER指數(shù)字,VARCHAR指字符型,Oracle7往常在用,現(xiàn)在常用的是VARCHAR2它支持各種可變字符串,能夠更好的表示各國(guó)文字,DATE指日期,NUMBER(7,2)指七位數(shù)字有兩位小數(shù)。desc dept 部門表,它有三個(gè)字段D

9、EPTNO 部門編號(hào),DNAME 部門名稱,LOC部門所在位置。Desc salgrade工資等級(jí)表,許多公司都實(shí)行的是工資等級(jí)制,分幾級(jí)工資,GRADE工資等級(jí),HISAL該等級(jí)最高工資,LOSAL該等級(jí)最低工資。以上簡(jiǎn)要的介紹了三張表,假如想更詳細(xì)的了解里面的數(shù)據(jù),教大伙兒第一個(gè)select語(yǔ)句:seclect * from 表名;。*表示把表里所有的數(shù)據(jù)都取出來(lái),分號(hào)表示語(yǔ)句結(jié)束。盡量多熟悉各張表之間的關(guān)系,以及表內(nèi)部各字段之間的關(guān)系,越熟悉越好。假如要算純數(shù)據(jù),能夠采納dual這張表,它就一條記錄,一個(gè)字段。你假如用其他表計(jì)算的話會(huì)有好多條重復(fù)結(jié)果,記錄。字段是不能有空格的,假如非要空

10、格能夠?qū)⒄麄€(gè)字段用雙引號(hào)括起來(lái),如此的話引號(hào)里面就能夠加上各種各樣的字符了。假如沒(méi)加引號(hào)的話那樣做是不對(duì)的。再?zèng)]有加雙引號(hào)的時(shí)候結(jié)果字段名會(huì)以大寫字母顯示出來(lái),但加了雙引號(hào)就保持住了原來(lái)的形式不變。沒(méi)有確實(shí)是null值,即便是0也與空值大不一樣。0是有值但為0,null是沒(méi)有值。任何含有空值的表達(dá)式最后的結(jié)果差不多上空值。SQL里面有一個(gè)字符串鏈接符|,它的作用跟Java里的+一樣,所有被鏈接的都會(huì)轉(zhuǎn)換為字符串顯示出來(lái)。如select ename|sal from emp;它的意思是將結(jié)果sal轉(zhuǎn)換為字符串后鏈接到ename后面。在任何數(shù)據(jù)庫(kù)的SQL語(yǔ)句里面差不多上用單引號(hào)括起來(lái)表示一個(gè)字符串

11、序列。假如字符串里本來(lái)就有單引號(hào),再解析時(shí)就會(huì)出錯(cuò)。能夠用兩個(gè)單引號(hào)來(lái)代替一個(gè)單引號(hào),如此就能夠正確顯示了。關(guān)鍵字distinct是指選擇不重復(fù)的記錄,假如修飾多個(gè)字段時(shí)表示選擇該多個(gè)字段的組合不重復(fù)的顯示出來(lái)。where叫過(guò)濾條件,它會(huì)過(guò)濾掉一些記錄,等值推斷用=,不等值推斷注意是而不是Java語(yǔ)句里的不等號(hào)。字符串比較是比較字符的ASCII碼,挨個(gè)比較。做比較時(shí)還能夠用關(guān)鍵字between and,注意的是包括邊界值的。and也可把兩個(gè)過(guò)濾條件連接起來(lái)。下面來(lái)講空值的處理,你能夠直接用where +字段+is null來(lái)取出是空值的,取出不是空值的多加一個(gè)not就行。這種處理方式特不像我們

12、的講話適應(yīng)。in然后跟著某個(gè)字段的取值是括號(hào)括起來(lái)各值之間用逗號(hào)隔開(kāi)。能夠使用and、or,not連接起各個(gè)查詢條件。日期處理起來(lái)略微苦惱一些,由于現(xiàn)在還沒(méi)有學(xué)日期函數(shù),因此采納另外一種方式一個(gè)專門的字符串。你就按它的日期寫法來(lái)寫如20-2月-07,然后系統(tǒng)就按照字符串來(lái)比較即可。年份能夠?qū)懭?0-2月-2007,它能認(rèn)出來(lái)。以后我們能夠?qū)懗扇魏涡问降娜掌诟袷蕉寄芴幚?。模糊查詢是如此的,比如找出名字里含有al的,有點(diǎn)像正則表達(dá)式。使用關(guān)鍵字like,能夠通配符%,代表0個(gè)或多個(gè)字符,_代表一個(gè)字母。假如名字里就含有一個(gè)%,則使用轉(zhuǎn)義字符%的形式,因此能夠自己指定轉(zhuǎn)義字符方法是select *

13、 from emp where ename like _A$% escape $;。排序用到的一個(gè)關(guān)鍵字是order by,默認(rèn)的是按升序排列,假如想降序排列能夠采納如下形式:select * from dept order by deptno desc;desc是降序的英文縮寫。升序排列可不寫也可加上asc。還能夠加入where先過(guò)濾了再排序,按照幾個(gè)字段進(jìn)行排序時(shí),用逗號(hào)分隔開(kāi),如下:select ename ,job,empno,sal ,deptno from emp order by deptno,sal desc;意思是先將表按照deptno升序排列,然后相同的deptno內(nèi)部再按

14、照sal降序排列。三SQL函數(shù),函數(shù)確實(shí)是Java里的方法,有參數(shù)有返回值?,F(xiàn)在講的是單行函數(shù),第一個(gè)叫做lower,作用是轉(zhuǎn)換為小寫;第二個(gè)叫upper,作用是轉(zhuǎn)為大寫;第三個(gè)叫substring,取子串。這幾個(gè)函數(shù)差不多上對(duì)字符串進(jìn)行操作的,傳遞到里面去的參數(shù)確實(shí)是字段名。如select lower(ename) from emp;還有一個(gè)函數(shù)叫chr,它是把一個(gè)數(shù)字轉(zhuǎn)為字符:select chr(86) from dual;將86代表的字符顯示出來(lái),與之對(duì)應(yīng)的是將一個(gè)字符轉(zhuǎn)為對(duì)應(yīng)的ASCII碼,叫ascii,如:select ascii(A) from dual;確實(shí)是將A的碼值顯示出來(lái)

15、。round函數(shù)是四舍五入的作用,如select round(43.535435) from dual;結(jié)果就為44。還有一個(gè)重載的帶兩個(gè)參數(shù)的方法如select round(43.535435,4) from dual;四舍五入到小數(shù)點(diǎn)后4位,結(jié)果位44.5354,第二個(gè)參數(shù)能夠是負(fù)數(shù)表示四舍五入到小數(shù)點(diǎn)前多少位。其他函數(shù)能夠不用記住,但要明白有這么個(gè)函數(shù),然后取手冊(cè)中能夠查到,但下面講的一個(gè)函數(shù)最好記住它。to_char是將字段內(nèi)容顯示為字符,能夠?qū)︼@示的形式進(jìn)行格式操縱,比如select to_char(sal, $99,999,999.9999) from emp;確實(shí)是以后面給定字符

16、形式顯示出來(lái),小數(shù)點(diǎn)后的四位會(huì)強(qiáng)制顯示,而前面的沒(méi)有的位數(shù)就不顯示,這確實(shí)是9的含義。$換為L(zhǎng)表示本地貨幣。0代表一位數(shù)字,假如沒(méi)有該位數(shù)字也會(huì)強(qiáng)制顯示為0,關(guān)于這種方式是為了進(jìn)行格式操縱。實(shí)際上用to_char來(lái)操縱數(shù)字是比較少用的,而用得最多的是對(duì)日期格式的操縱,我們明白Oracle里的sysdate包含了插入記錄的詳細(xì)時(shí)刻信息,我們能夠?qū)ζ溥M(jìn)行顯示的格式進(jìn)行操縱,比如:select to_char(hiredate,yyyy-mm-dd) from emp;轉(zhuǎn)換為年月日2006-3-23這種格式的。實(shí)際上對(duì)日期的格式操縱是利用Java來(lái)實(shí)現(xiàn)的,到時(shí)會(huì)有一個(gè)關(guān)于日期處理的專題。select

17、 ename,job,hiredate from emp where hiredate to_date(1982-1-1 1:30:00, yyyy-mm-dd hh:mi:ss);意思是將特定的字符串轉(zhuǎn)換為相應(yīng)的日期格式。還有to_number是將特定的字符串解析為相應(yīng)的數(shù)字格式如select ename ,job ,sal from emp where sal2000;首先按deptno求出每個(gè)deptno的平均sal,然后對(duì)這些分組利用having 語(yǔ)句進(jìn)行過(guò)濾。到現(xiàn)在為止差不多學(xué)完了所有的單條select語(yǔ)句,執(zhí)行順序按照select+字段或內(nèi)容+from+表名+where+group

18、 by+having+order by那個(gè)順序進(jìn)行執(zhí)行,首先取出記錄,然后對(duì)單個(gè)記錄進(jìn)行過(guò)濾,過(guò)濾完了分組,分組好了對(duì)組過(guò)濾,剩下的分組再按順序顯示出來(lái)。單條select語(yǔ)句一定要特不熟悉,假如這都要查書的話對(duì)企業(yè)就沒(méi)法交代了,哈哈!之前差不多講過(guò)一個(gè)子查詢的例子:select ename,sal from emp where sal=(select max(sal) from emp);看誰(shuí)的工資最高,之因此叫子查詢因?yàn)樵僖粋€(gè)select語(yǔ)句里套了另外一個(gè)select語(yǔ)句。理解子查詢的關(guān)鍵是把它當(dāng)成一張表,能夠?qū)λ霰磉B接最后就能夠求出想要的結(jié)果來(lái)。單獨(dú)的select語(yǔ)句相當(dāng)簡(jiǎn)單,然而有了s

19、elect子句和表連接之后語(yǔ)句就略微復(fù)雜了點(diǎn)。select ename ,sal from emp join(select max(sal) max_sal,deptno from emp group by deptno) t on (emp.sal=t.max_sal and t.deptno=emp.deptno);那個(gè)語(yǔ)句的作用是求出每個(gè)部門薪水最高的職員記錄。select e1.ename,e2.ename from emp e1,emp e2 where e1.mgr=e2.empno;關(guān)于在同一張表中進(jìn)行查詢時(shí)需要進(jìn)行自連接,為表取不名便于寫出條件和比較。這條語(yǔ)句的意思是找出每個(gè)職

20、員的經(jīng)理人。為同一張表起不同的不名然后當(dāng)成兩張表來(lái)用。在SQL99里面鏈接條件和過(guò)濾條件是分開(kāi)的,即鏈接條件不能出現(xiàn)在where語(yǔ)句里面,利用Join+表名+on+鏈接條件進(jìn)行。比如:select ename ,job,dname from emp join dept on (emp.deptno=dept.deptno);等值鏈接的時(shí)候有一個(gè)簡(jiǎn)便的寫法using(deptno)代替on (emp.deptno=dept.deptno)但不推舉使用,因它的限制條件專門多,可能報(bào)出來(lái)的錯(cuò)誤專門難找同時(shí)看起來(lái)也不是專門清晰。連接有各種各樣的形式,下面我們講外連接,事實(shí)上用起來(lái)特不方便。它會(huì)把左邊那

21、張表不能和右邊鏈接的數(shù)據(jù)也拿出來(lái)。select t1.ename , t2.ename mgr , t1.deptno from emp t1 left outer join emp t2 on (t1.mgr=t2.empno);outer能夠省略掉效果一樣。假如想把右邊多余的拿出來(lái)Join前加上right即可;假如兩邊多余的都想拿出來(lái)Join前加上full叫全外連接。講一道面試題,不準(zhǔn)用組函數(shù)求出薪水的最高值。方法是用自連接,連接條件采納非等值連接,如此表中的最大值就會(huì)連接不上,然后再?gòu)膃mp表中找出未連接上的最大值,如下:select sal from emp where sal not

22、 in (select t1.sal from emp t1 join emp t2 on (t1.sal(select max(sal) from emp where empno not in (select distinct mgr from emp where mgr is not null) and empno in (select distinct mgr from emp where mgr is not null );再講一道面試題:比較這兩個(gè)語(yǔ)句的執(zhí)行效率Select * from emp where deptno=10 and ename like %A%;Select *

23、from emp where ename like %A% and deptno=10;理論上講應(yīng)該是第一個(gè),就如同&和&的區(qū)不一樣它會(huì)過(guò)濾掉專門多條件,后面的字符串就不用再取去比較了,但實(shí)際中不行講因?yàn)橛锌赡躉racle在執(zhí)行的時(shí)候做了優(yōu)化,自動(dòng)將數(shù)字比較放前面了。四現(xiàn)在差不多講完了select語(yǔ)句,接下來(lái)講dml語(yǔ)句,常見(jiàn)的有三條,他們和select語(yǔ)句合稱為數(shù)據(jù)庫(kù)的四大語(yǔ)句(select/insert/update/delete)。增刪改查!接下來(lái)簡(jiǎn)單介紹一下Oracle的邏輯結(jié)構(gòu)。安裝的時(shí)候創(chuàng)建了一個(gè)全局?jǐn)?shù)據(jù)庫(kù),同時(shí)為那個(gè)數(shù)據(jù)庫(kù)建立了一系列治理它的進(jìn)程SID。一個(gè)大數(shù)據(jù)庫(kù)里面又區(qū)分為不

24、同的表空間,講白了確實(shí)是裝表的地兒。我們現(xiàn)在的表是放在不同的表空間里面,比方講users表空間,在里面放著某個(gè)用戶所有的表,當(dāng)該用戶登錄到里面去后事實(shí)上是去訪問(wèn)自己的表空間里的相對(duì)應(yīng)的表。能夠?qū)⒛硞€(gè)表空間里的內(nèi)容全部copy出去創(chuàng)建一個(gè)新的user,然后該user就操作專屬于自己的表空間里的表了,因此講Oracle是支持多用戶的。將某個(gè)表空間里的內(nèi)容全部copy出去創(chuàng)建一個(gè)新的user做法是如此的:1.以超級(jí)治理員登錄數(shù)據(jù)庫(kù)conn sys/oracle as sysdba; 2.從命令行在起一個(gè)client,先建立一個(gè)目錄如C:test進(jìn)入該目錄后執(zhí)行del *.*刪除所有,然后鍵入命令ex

25、p后提示輸入用戶名和口令,確實(shí)是你要備份哪個(gè)就輸哪個(gè),接下來(lái)提示輸入數(shù)組提取緩沖區(qū)大小,那個(gè)沒(méi)關(guān)系(內(nèi)存里的一個(gè)小區(qū)域填滿了再統(tǒng)一拿到硬盤上來(lái))一路回車就行,等著它導(dǎo)完就能夠了;3.創(chuàng)建新用戶create user huanggang identified by haha0832 default tablespace users quota 10M on users;用戶名huanggang口令haha0832在users表空間里分配10M的默認(rèn)表空間給該用戶;4.給予相應(yīng)權(quán)限grant create session,create table,create view to huanggang,

26、假如沒(méi)有session它登錄差不多上問(wèn)題;5.導(dǎo)入文件imp后回車幾個(gè)后提示是否導(dǎo)入整個(gè)導(dǎo)出文件選否后輸入想導(dǎo)入的那個(gè)用戶數(shù)據(jù)的用戶名。只有2和5是在命令行中完成,其余是超級(jí)用戶登錄后在數(shù)據(jù)庫(kù)里完成。insert into+表名+values(各字段值),在對(duì)這些數(shù)據(jù)進(jìn)行操作時(shí)最好有一個(gè)備份,方法專門簡(jiǎn)單rollback回退操作,create table 表名 as select * from +欲備份表名;insert語(yǔ)句還有一種插入方法,insert into dept2(deptno,loc) values(50,beijing);只是插入部分字段的值,其他字段的值為null,還有一種方

27、法是insert into dept2 select * from dept;將select子句選出的記錄挨個(gè)插入前提是選出的記錄與該表的記錄格式相同。在Oracle中取完相應(yīng)字段后,會(huì)在末尾附加一個(gè)偽字段,你看不到,叫做rownum,它是記錄下每條記錄在第幾行了,用它的時(shí)候有個(gè)限制條件只能與或=6 and r=10;那個(gè)在Oracle里面是效率最高的,假如通過(guò)連接數(shù)據(jù)庫(kù)用Java編程來(lái)做,但效率相當(dāng)?shù)?。那個(gè)重點(diǎn)掌握,比如講顯示論壇里的帖子是分頁(yè)顯示的,假如想顯示第4頁(yè)的內(nèi)容一定是從某一個(gè)帖子到某一個(gè)帖子顯示出來(lái),帖子那個(gè)記錄是按照發(fā)帖時(shí)刻倒序排列的。三層嵌套確實(shí)是Oracle對(duì)這種問(wèn)題的解決

28、方案,因此每一種數(shù)據(jù)庫(kù)有自己的解決方式。SQL面試題:有3個(gè)表S,C,SC。S(SNO,SNAME)代表(學(xué)號(hào),姓名);C(CNO,CNAME,CTEACHER)代表(課號(hào),課名,教師);SC(SNO,CNO,SCGRADE)代表(學(xué)號(hào),課程成績(jī))。問(wèn)題:找出沒(méi)選過(guò)“拂曉”老師課程的所有學(xué)生姓名;列出2門以上(含2門)不及格學(xué)生姓名及平均成績(jī);既學(xué)過(guò)1號(hào)課程又學(xué)過(guò)2號(hào)課程所有學(xué)生姓名。請(qǐng)用標(biāo)準(zhǔn)SQL語(yǔ)言寫出答案,方言也行(請(qǐng)講明使用什么方言)。select sname from s join sc on (s.sno=sc.sno) join c on (o=sc.no) where c.ct

29、eacher liming; (2) select sname from s where sno in (select sno from sc where scgrade =2); (3) select sname from s where sno in (select sno from sc where cno=1 and sno = (select sno from sc where cno=2);update 的作用相關(guān)于對(duì)記錄進(jìn)行修改。用法是update+表名+set+字段列表及更新值過(guò)濾條件;delete+from+表名+過(guò)濾條件,刪除某些字段。五接下來(lái)講數(shù)據(jù)定義語(yǔ)言ddl語(yǔ)言。它實(shí)

30、現(xiàn)了數(shù)據(jù)表,視圖等的建立。事務(wù)transaction確實(shí)是一系列的操作,要么同時(shí)完成要么不完成,比如轉(zhuǎn)賬操作要對(duì)兩個(gè)賬戶update,可不能出現(xiàn)數(shù)據(jù)不一致。關(guān)于Oracle來(lái)講,一個(gè)transcation起始于一條dml語(yǔ)句,然后一系列的操作rollback回退事務(wù)會(huì)結(jié)束;或commit結(jié)束事務(wù),再rollback也沒(méi)用;當(dāng)遇到一條dcl語(yǔ)句或ddl語(yǔ)句提交結(jié)束事務(wù);當(dāng)正常退出exit時(shí)提交結(jié)束事務(wù),不正常退出時(shí)(如斷電)自動(dòng)回滾結(jié)束事務(wù)。數(shù)據(jù)庫(kù)常用對(duì)象是指它經(jīng)常使用的一些資源,比方講表、視圖或其他資源。下面講如何創(chuàng)建一張表,create table +表名+字段及字段的數(shù)據(jù)類型。Oracle

31、常用的數(shù)據(jù)類型有變長(zhǎng)字符串varchar2(最長(zhǎng)字符數(shù)即上界4k)、定長(zhǎng)字符串char(所占大小)。有了變長(zhǎng)字符串后什么緣故還要有定長(zhǎng)字符串呢?要緊依舊效率問(wèn)題,跟數(shù)組專門像,然而站空間,專門多結(jié)構(gòu)、算法都存在拿空間換時(shí)刻問(wèn)題,如HashTable。數(shù)字型number(m,n)m指總共多少為,n是小數(shù)點(diǎn)后的位數(shù);日期date,包含年月日時(shí)分秒;變長(zhǎng)字符串long可達(dá)2G,要緊是有些時(shí)候一篇文本相當(dāng)長(zhǎng);存圖片能夠把硬盤上圖像的名字存到數(shù)據(jù)庫(kù)里,也能夠把整張圖片存到數(shù)據(jù)庫(kù)里。創(chuàng)建一張表存放學(xué)生數(shù)據(jù)如:create table stu ( id number(8), name varchar(20)

32、, sex number(10), age number(3), sdate date, grade number(2) default 1, class number(2), email varchar2(50) );sex取數(shù)字來(lái)表示更節(jié)約空間,入學(xué)時(shí)日期加個(gè)s幸免和關(guān)鍵字沖突,能夠?yàn)槟承┳侄沃付J(rèn)值當(dāng)插入記錄時(shí)沒(méi)有對(duì)該字段賦新值就以該默認(rèn)值,其他沒(méi)有默認(rèn)值為null。五個(gè)約束條件第一個(gè)叫非空,第二個(gè)叫唯一,第三個(gè)叫主鍵,第四個(gè)叫外鍵第五個(gè)叫check。當(dāng)我們創(chuàng)建這張表的時(shí)候,有一個(gè)最簡(jiǎn)單的條件字段非空not null。在Oracle里面約束條件也能夠看成一個(gè)對(duì)象,能為之取一個(gè)名字,加一

33、個(gè)關(guān)鍵字constraint+約束名,如name varchar(2) constraint stu_name_nn not null,不起時(shí)系統(tǒng)自動(dòng)起名字我們不用管了。唯一約束的意思是在那個(gè)字段里面所有的記錄不能重復(fù),如id number(8) unique,這屬于字段級(jí)的約束;字段級(jí)的約束有些限制,比如要某些字段組合不能重復(fù),還有確實(shí)是兩個(gè)空值它不認(rèn)為是重復(fù)的。要達(dá)到表級(jí)約束方法是在最后一個(gè)字段寫完后加一句如:constraint stu_name_email_uniunique(email,name)。主鍵(primary key)是能夠唯一標(biāo)示整條記錄的東西,它代表的意思是既不能為空又

34、不能重復(fù),比如學(xué)生學(xué)號(hào)。E-mail做主鍵不行因?yàn)樗軌驗(yàn)閚ull,同時(shí)索引的時(shí)候數(shù)字比字符串效率高。如id number(8) primary key ,也能夠加在表級(jí),如constraint stu_id_pk primary key(id),主鍵也能夠是多個(gè)字段組合。外鍵約束建立在一張表的兩個(gè)字段上或者是兩張表的兩個(gè)字段上,是比較苦惱的一種約束。在emp和dept就有外鍵約束,往emp里加記錄的時(shí)候不同意再dept里沒(méi)有的部門編號(hào)。class number(2) references class(id),參考class這張表的id字段,因此也能夠加在表級(jí)上:constraint fore

35、ign key (class) references class(id),。注意在寫外鍵約束的時(shí)候,stu里的class叫參考字段,class里的id叫被參考字段,加外鍵的前提是被參考字段必須是主鍵。刪一條記錄的時(shí)候首先看有沒(méi)有其他字段參考它,有的話是無(wú)法刪除的,違反了完整約束條件。Check約束用得比較少,在寫mis系統(tǒng)時(shí)數(shù)據(jù)在Java程序里就差不多校驗(yàn)過(guò)了。修改表結(jié)構(gòu)是在現(xiàn)有表上修改。在任何項(xiàng)目開(kāi)發(fā)時(shí)候建表的SQL語(yǔ)句是要保存下來(lái)的,因此能夠?qū)⒈碚麄€(gè)刪掉再建。添加字段alter table +表名+add(字段名+數(shù)據(jù)類型)如alter table dept2 add(dphone var

36、char2(11);刪除某個(gè)字段如alter table dept2 drop(dphone);還能夠修改字段的數(shù)據(jù)類型,假如里面差不多有數(shù)據(jù)修改的后果應(yīng)不阻礙原來(lái)存的記錄值。在Oracle里面看當(dāng)前用戶下有哪些表,哪些約束,哪些視圖等等這些信息被單獨(dú)地裝在一張表里面,稱作數(shù)據(jù)字典表。user_tables里面裝的是當(dāng)前用戶共有多少?gòu)埍?,里面字段可多了,我們關(guān)懷的是table_name。查詢當(dāng)前用戶下有哪些視圖:select view_name from user_views;查詢當(dāng)前用戶下有哪些表:select table_name from user_tables;查詢當(dāng)前用戶下有哪些約束

37、:select constraint_name,table_name from user_constraints;。user_tables、user_constraints、user_views這些差不多上數(shù)據(jù)字典表,那么一共有多少個(gè)數(shù)據(jù)字典表呢?Oracle專門有另外一張表存放數(shù)據(jù)字典表的表叫做dictionary,它總共兩個(gè)字段一個(gè)叫table_name數(shù)據(jù)字典表的名字、還有一個(gè)叫comments關(guān)于這張數(shù)據(jù)字典表的描述??偣灿?00多個(gè)數(shù)據(jù)字典表,這確實(shí)是Oracle的DBA總是背著個(gè)小本本的緣故,你要背是不可能的。索引就相當(dāng)于字典里的索引一樣,它在Oracle里相當(dāng)于一種新的數(shù)據(jù)庫(kù)對(duì)象

38、,建立索引的方法create index idx_stu_emil on stu (email);也能夠在字段組合上建立索引,以后在查詢組合時(shí)效率就高,刪除索引同刪除表方法類似。忘了自己有哪些索引能夠采納select index_name from user_indexse;當(dāng)你給某張表的字段加主鍵或唯一性約束的時(shí)候。建立索引的用處是當(dāng)你建立了索引后取訪問(wèn)相應(yīng)數(shù)據(jù)的時(shí)候效率會(huì)專門高。注意講的是讀的效率高了,但存的效率反而低了,因?yàn)槟愕猛瑫r(shí)往索引表里加索引值,會(huì)占用大量的空間。記住一點(diǎn)不要輕易建立索引,除非覺(jué)得訪問(wèn)量特不大時(shí)。視圖前面也提過(guò),它是一張?zhí)摫?,?yán)格來(lái)講確實(shí)是一個(gè)子查詢。利用它能夠簡(jiǎn)化

39、我們的查詢復(fù)雜度,同時(shí)它也有不行的地點(diǎn),確實(shí)是表結(jié)構(gòu)改了它也得跟著改動(dòng),增加了維護(hù)的難度。視圖有些其他功能,比如講我有一個(gè)數(shù)據(jù)庫(kù),它里面存了所有的產(chǎn)品信息,而有一個(gè)供應(yīng)商他想看我產(chǎn)品的信息,假如我把整張表都給他看那么關(guān)鍵信息他就全部都看走了,我的銷量有多少等等。我能夠建立一個(gè)視圖里面只包含我想要給他看的內(nèi)容。序列是Oracle數(shù)據(jù)庫(kù)獨(dú)有的東西,它產(chǎn)生一個(gè)唯一、不間斷的序列,作用是一般做主鍵。如下我們要存儲(chǔ)BBS里的帖子建立一張表:create table article (id number,title varchar2(1024),cont long);假如要加入一篇文章,采納這種做法sel

40、ect max(id) from article;然后明白了id往里插,但若有另外一個(gè)客戶端在做數(shù)據(jù)插入同時(shí)也在執(zhí)行完上面一條語(yǔ)句插入了一條記錄就會(huì)導(dǎo)致數(shù)據(jù)不一致的現(xiàn)象。為此我們能夠創(chuàng)建一個(gè)sequence,每次插的時(shí)候訪問(wèn)它的一個(gè)屬性nextval就會(huì)得到不重復(fù)的id,實(shí)際上它是在內(nèi)部做了同步的。六范式確實(shí)是數(shù)據(jù)庫(kù)設(shè)計(jì)的一些規(guī)則,而它又是由一個(gè)姓范的提出的。講到設(shè)計(jì)事實(shí)上是專門復(fù)雜的情況,不能希望用幾條規(guī)則把所有的都總結(jié)出來(lái)(你在造永動(dòng)機(jī),追求銀彈silver bullet),因此有時(shí)要具體問(wèn)題具體分析,該打破三范式的時(shí)候依舊要敢于打破。三范式追求的是如此的目標(biāo):不存在冗余數(shù)據(jù),換句話講確實(shí)

41、是同樣的數(shù)據(jù)不存第二遍。因此除了冗余性外還有一些邊緣性的要求,不是專門重要,講到的時(shí)候再講。第一范式的第一個(gè)要求-要有主鍵;第二個(gè)要求-列不可分,不能講姓名我還要分成姓和名。第二范式當(dāng)一張表里有多個(gè)字段作為組合主鍵的時(shí)候,非主鍵的字段不能夠依靠于部分主鍵,多對(duì)多關(guān)系的表應(yīng)分割成三張表,如前一個(gè)面試題。第三范式是不能存在傳遞依靠,即除了主鍵之外的其他字段必須直接依靠于主鍵。比如emp表里的deptno依靠于empno,而loc依靠于empno因此不能放一張表里。七PL_SQL是Oracle里面的一個(gè)編程語(yǔ)言,比較有用,在Oracle內(nèi)部寫一些存儲(chǔ)過(guò)程,觸發(fā)器,函數(shù)。差不多上每一種數(shù)據(jù)庫(kù)都有這么一

42、個(gè)語(yǔ)言,SQL-Server叫做T_SQL,假如每個(gè)都學(xué)比較累,然而能夠取學(xué)一種然后其他實(shí)在要用時(shí)再查上手要快專門多??赡芤院笪覀兘佑|的寫存儲(chǔ)過(guò)程機(jī)會(huì)專門少,實(shí)際上我們用SQL和Java程序就能夠解決大部分問(wèn)題了,這只是讓大伙兒有個(gè)了解明白有這么回事。PL語(yǔ)言用來(lái)補(bǔ)充SQL語(yǔ)言的,因?yàn)楹笳卟粠в蟹种Ш脱h(huán),關(guān)于有些問(wèn)題求解不便,而過(guò)程語(yǔ)言能夠解決。PL_SQL寫程序特不固定,分為四塊,第一塊叫declare,聲明各種變量和游標(biāo)的地點(diǎn),可選;第二個(gè)叫begin,確實(shí)是講程序從這開(kāi)始執(zhí)行了;exception是catch到任何異常時(shí)要執(zhí)行的;end是結(jié)束,后面得有一個(gè)分號(hào)。set serverou

43、tput on;begin dbms_output.put_line(hi,pl_sql!);end;/第一句是將內(nèi)部環(huán)境變量打開(kāi),默認(rèn)的是關(guān)掉的,不然看不到任何輸出結(jié)果。dbms_output相當(dāng)于system.out而put_line相當(dāng)于println。declare v_name varchar2(20);begin v_name := huanggang; dbms_output.put_line(v_name);end;/變量名的寫法是v_+名字,聲明的時(shí)候是變量名在前,類型在后;賦值語(yǔ)句有點(diǎn)像pascal冒號(hào)等號(hào);declare v_name number := 0; begin

44、 v_name := 2/v_name; dbms_output.put_line(v_name); exception when others then dbms_output.put_line(Error!); end; /當(dāng)檢測(cè)到異常時(shí)才執(zhí)行exception,when others then 如此做就相當(dāng)于一張大網(wǎng)子,確信能把異常捕獲到。PL_SQL變量聲明規(guī)則:變量名不能夠使用保留字(Oracle里保留字專門多因此推舉使用v_+名字,如此不易沖突),如select、from等;第一個(gè)字符必須是字母;變量名最多包含30個(gè)字符;不要與數(shù)據(jù)庫(kù)的表或者列同名;每一行只能聲明一個(gè)變量。常用變量

45、類型7種:binary_integer整數(shù)要緊是計(jì)數(shù)而不是用來(lái)表示字段類型(用來(lái)for循環(huán),數(shù)組下標(biāo),效率比較高,Oracle追求的目標(biāo));number數(shù)字類型;char定長(zhǎng)字符串;date日期;long長(zhǎng)字符串可達(dá)2GB;boolean布爾可取true、false或null值,建議大伙兒布爾類型在用的時(shí)候一定要給一個(gè)初值,否則是null。declare v_temp number(1); v_count binary_integer :=0; v_sal number(7,2) := 4000.00; v_date date := sysdate; v_pi constant number

46、:= 3.14; v_valid boolean := false; v_name varchar2(20) not null :=myName; begin dbms_output.put_line(v_temp value:|v_date); end; /dbms_output.put_line不能打印處布爾類型的值。Constant相當(dāng)于Java的final ,not null對(duì)變量進(jìn)行限制。Oracle里面的變量經(jīng)常用來(lái)存儲(chǔ)某一張表的某個(gè)字段的值,使用%type屬性為了解決表里字段的變動(dòng)與聲明變量類型一致。在PL_SQL里面能夠使用 兩個(gè)短橫線注釋掉一行,注釋掉多行的時(shí)候用/* */。

47、declare v_empno number(4); v_empno2 emp.empno%type; v_empno3 v_empno2%type; begin dbms_output.put_line(Test); end;%type能夠看做變量的一個(gè)屬性,指示其類型;引用某張表某個(gè)字段方法如v_empno2 emp.empno%type;。下面接著講PL_SQL里面復(fù)雜的變量,能夠定義復(fù)合變量,有兩種:Table相當(dāng)于Java里的數(shù)組;Record相當(dāng)于Java里的類,暫且如此理解。要指定table的數(shù)據(jù)類型,比較復(fù)雜是如此來(lái)做type type_table_emp_empno is t

48、able of emp.empno%type index by binary_integer;type定義了一種新的數(shù)據(jù)類型名字叫type_table_emp_empno,然后能夠用它定義新變量如 v_empnos type_table_emp_empno;。比較有意思的是下標(biāo)能夠取負(fù)值如v_empnos(-1)。是什么促使了record類型數(shù)據(jù)的出現(xiàn)呢?我們現(xiàn)在寫的是PL_SQL,它最要緊用于操縱表,表里面有字段、記錄,假如把一條記錄放一個(gè)變量里以后用起來(lái)要方便得多。聲明這種類型的方式如:declare type type_record_dept is record( deptno dept

49、.deptno%type, dname dept.dname%type, loc dept.loc%type); v_temp type_record_dept;begin v_temp.deptno := 50; v_temp.dname := aaaa; v_temp.loc := bj; dbms_output.put_line(v_temp.deptno| | v_temp.dname);end;/如此聲明還有一個(gè)弊病,那確實(shí)是當(dāng)字段改變時(shí)操縱起來(lái)比較煩人,為此引入rowtype屬性來(lái)聲明record變量。只需:declare v_temp dept%rowtype;begin v_t

50、emp.deptno := 50; v_temp.dname := aaaa; v_temp.loc := bj; dbms_output.put_line(v_temp.deptno| | v_temp.dname);end;/PL_SQL語(yǔ)句里的select語(yǔ)句只能返回一條記錄,且select語(yǔ)句里面必須有個(gè)into或使用游標(biāo),還要保證有且僅有一條記錄被返回,這是它比較特不的地點(diǎn),不然會(huì)報(bào)錯(cuò)。在PL_SQL里面使用insert、delete、update后加上commit不然起不了作用有時(shí),只只是。同時(shí)還有這么一個(gè)需求-執(zhí)行上述語(yǔ)句以后有多少條記錄受阻礙(除select,對(duì)它來(lái)講沒(méi)多大意義

51、),如此做:dbms_output.put_line(sql%rowcount|條記錄受阻礙);sql代表剛剛執(zhí)行完的sql語(yǔ)句,而rowcount代表剛剛執(zhí)行完的sql語(yǔ)句阻礙了多少條記錄。假如在PL_SQL里創(chuàng)建一張表得如此寫:execute immediate create table T(nnn varchar2(20) default aaa); 由于不處差不多有單引號(hào)了因此里面的一個(gè)單引號(hào)得用兩個(gè)代表一個(gè)。default是給一個(gè)默認(rèn)值。PL_SQL里條件語(yǔ)句是形如if (條件) then elsif (條件) then else end if;注意最后一個(gè)else后沒(méi)有then,其

52、他條件后有,而且elsif沒(méi)有那個(gè)e,最后以end if;結(jié)束。PL_SQL里也有三種循環(huán),首先看第一種,如下:declare i binary_integer :=0;begin loopdbms_output.put_line(i);i:= i+1;exit when (i=11); end loop;end;這也類似于Java里的do -while循環(huán);第二種,如下:declare j binary_integer :=1;begin while j11 loopdbms_output.put_line(j);j := j+1; end loop;end;這也類似于Java里的while

53、循環(huán);第三種,如下:begin begin for k in 1.10 loop dbms_output.put_line(k); end loop; for k in reverse 1.10 loop dbms_output.put_line(k); end loop;end;這類似于Java里的for循環(huán),reverse表示逆序循環(huán),1.10指定循環(huán)范圍。PL_SQL里也能夠逮某種類型的錯(cuò)誤,Java里每一種exception都有相應(yīng)的類為代表,同理PL_SQL里也一樣,如no_data_found/too_many_rows,學(xué)語(yǔ)言得學(xué)會(huì)類比。下面舉個(gè)例子給大伙兒看一下,本來(lái)錯(cuò)誤處理也

54、不是我們的重點(diǎn)。declare v_temp emp.empno%type;begin select empno into v_temp from emp where deptno=10; dbms_output.put_line(v_temp);exception when too_many_rows then dbms_output.put_line(選定行數(shù)過(guò)多!); when others then dbms_output.put_line(error);end;PL_SQL的程序大概也是只有在寫計(jì)費(fèi)的時(shí)候或?qū)δ承╉?xiàng)目有專門要求的時(shí)候,比如效率。否則我們寫的差不多上跨數(shù)據(jù)庫(kù)平臺(tái)的程序。

55、下面學(xué)習(xí)一下作為dba記錄錯(cuò)誤常用的一種方法:首先創(chuàng)建一張表叫errorlog記錄錯(cuò)誤信息。creat table errorlog( id number primary key, errcode number, errmsg varchar2(1024), errdate date);然后id是自動(dòng)遞增的,采納序列:create sequence seq_errlog_id start with 1 increment by 1;在exception里捕獲:exception when others then rollback; v_errcode := SQLCODE; v_errmsg

56、:= SQLERRM; insert into errorlog values (seq_errorlog_id.nexval,v_errcode,v_errmsg,sysdate);commit;PL_SQL的重點(diǎn)-游標(biāo)。Select語(yǔ)句執(zhí)行完后會(huì)返回一個(gè)結(jié)果集,游標(biāo)確實(shí)是最頂上那個(gè)指針,指向結(jié)果集的第一條記錄,與迭代器差不多。聲明游標(biāo)的時(shí)候并可不能去數(shù)據(jù)庫(kù)里取數(shù)據(jù)只有打開(kāi)的時(shí)候,結(jié)果集才會(huì)放到內(nèi)存中,關(guān)于游標(biāo)有四個(gè)屬性:isopen用得不多,notfound最近的一條fetch沒(méi)有返回記錄時(shí)返回true,found找著了返回true,rowcount當(dāng)前差不多fetch了多少條記錄。dec

57、lare cursor c is select * from emp; v_temp c%rowtype;begin open c; loop fetch c into v_temp; exit when (c%notfound); dbms_output.put_line(v_temp.ename); end loop; close c;end;注意循環(huán)里的三條語(yǔ)句是不能顛倒位置的,比如后兩條一顛倒的話就會(huì)出現(xiàn)最后一條記錄打印兩次,而實(shí)際上最后是沒(méi)找到的,結(jié)果明顯不對(duì)。declare cursor c is select * from emp;begin for v_temp in c lo

58、op dbms_output.put_line(v_temp.ename); end loop;end;這是使用for循環(huán)和游標(biāo)使用的情形,明顯簡(jiǎn)單不用去管哪些細(xì)節(jié)比如是否found,open且不易出錯(cuò),平常常用。declare cursor c(v_deptno emp.deptno%type, v_job emp.job%type) is select ename,sal from emp where v_deptno=deptno and v_job=job;begin for v_temp in c(30,CLERK) loop dbms_output.put_line(v_temp.

59、ename); end loop;end;這是帶參數(shù)的游標(biāo)使用方法。declare cursor c is select * from emp2 for update;begin for v_temp in c loop if (v_temp.salv_b) then v_ret := v_a; else v_ret := v_b; end if; v_temp := v_temp+1;end;in 表示傳入?yún)?shù),不寫默認(rèn)為傳入?yún)?shù),out表傳出參數(shù),in out表既是傳入又是傳出參數(shù)。調(diào)用時(shí)采取這種方式:declare v_a number :=3; v_b number :=4; v_re

60、t number; v_temp number :=5;begin p(v_a, v_b, v_ret, v_temp); dbms_output.put_line(v_ret); dbms_output.put_line(v_temp);end;/注意即便是你這過(guò)程有錯(cuò)誤同樣會(huì)被創(chuàng)建,為了展現(xiàn)出錯(cuò)的地點(diǎn)能夠敲入命令:show error;。編寫函數(shù)是用得不太多的,我們能夠了解一下,原來(lái)那些函數(shù)能用在什么地點(diǎn),你寫的一樣能夠。形如:create or replace function sal_tax (v_sal number) return number is begin if (v_sal

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論