【正文】
11g是甲骨文公司30年來(lái)發(fā)布的最重要的數(shù)據(jù)庫(kù)版本根據(jù)用戶(hù)的需求實(shí)現(xiàn)了信息生命周期管(Information sLifecycle Management)等多項(xiàng)創(chuàng)新。2) 在開(kāi)始菜單中找“轉(zhuǎn)至數(shù)據(jù)庫(kù)主頁(yè)”,啟動(dòng)oracle的企業(yè)管理器 3) 執(zhí)行命令:select table_name from user_tables。菜單tools224。OCI224。首先要用system或sys用戶(hù)登錄,得到:224。224。2)對(duì)已經(jīng)創(chuàng)建的用戶(hù)還可以刪除。 本章知識(shí)點(diǎn)總結(jié)數(shù)據(jù)管理技術(shù)發(fā)展的幾個(gè)階段:人工管理階段、文件管理階段、數(shù)據(jù)庫(kù)管理階段、分布式數(shù)據(jù)庫(kù)管理、面向?qū)ο蟮臄?shù)據(jù)庫(kù)管理。數(shù)據(jù)庫(kù)系統(tǒng)的模式:外模式、模式(概念模式)、內(nèi)模式,它們構(gòu)成了“外模式/模式”和“模式/內(nèi)模式”兩個(gè)映射。關(guān)系模式的表示方法:關(guān)系名(屬性名1,屬性名2,……,屬性名n)關(guān)系數(shù)據(jù)庫(kù),建立在關(guān)系模型基礎(chǔ)上,而形成的數(shù)據(jù)庫(kù)。224。224。224。第2章 Oracle 10g數(shù)據(jù)庫(kù)的SQL語(yǔ)言與查詢(xún) SQL語(yǔ)言概述 SQL(Structured Query Language)是一種結(jié)構(gòu)化查詢(xún)語(yǔ)言,簡(jiǎn)稱(chēng)為SQL。我們的重點(diǎn)是CRUD(create、research、update、delete)即增刪改查。 Oracle 10g數(shù)據(jù)庫(kù)的數(shù)據(jù)類(lèi)型、運(yùn)算符和表達(dá)式 簡(jiǎn)單數(shù)據(jù)類(lèi)型number(p, s) ,p是數(shù)字的整個(gè)位數(shù),是小數(shù)點(diǎn)后的位數(shù)varchar2(n),表示可變長(zhǎng)度的字符串且其最大長(zhǎng)度為n,n不能超過(guò)4000。date,表示日期,包括年份、月份。nchar,用Uicode字符集存儲(chǔ)定長(zhǎng)的字符數(shù)據(jù)。(別用來(lái)存中文) BLOB:用來(lái)存儲(chǔ)4GB無(wú)結(jié)構(gòu)的二進(jìn)制數(shù)據(jù)。關(guān)系表達(dá)式:用比較運(yùn)算符連接的表達(dá)式。 Oracle 10g的SELECT查詢(xún)語(yǔ)句1)查什么;2)從哪里查;3)需要什么條件查看表結(jié)構(gòu)的命令:describe tablename。 簡(jiǎn)單查詢(xún)(select…from結(jié)構(gòu))基本格式如下 SELECT {*|字段名列表} FROM 表名。 //查詢(xún)所有行所有列 2)查詢(xún)指定的某些列 3)查詢(xún)結(jié)果顯示時(shí),有它們的默認(rèn)顯示規(guī)則,如日期型和字符型的左對(duì)齊,數(shù)值型的右對(duì)齊。select studentid,studentname,studentage+1 from student。 或者select studentid as 學(xué)號(hào),studentname as 姓名,studentsex as 性別 from student。具體實(shí)例 1)單條件的查詢(xún) 查詢(xún)工資高于3000元的教工信息 select * from teacher where salary3000 2)組合條件的查詢(xún) 查詢(xún)工資不低于3000元的女教工信息 select * from teacher where salary=3000 and sex=39。 單表查詢(xún)的應(yīng)用關(guān)鍵字DISTINCT的使用查詢(xún)教師表看看有幾個(gè)教研室 關(guān)鍵字BETWEEN…AND…的使用查詢(xún)總工資在[4000,7000]之間的教工信息select teachername,salary+bonus as 總工資 from teacher where salary+bonus between 4000 and 7000。 like 39。 escape 39。 :這里用到了轉(zhuǎn)義字符,表示的意思是以“s_”開(kāi)頭的字符串,而s_% 等價(jià)于 s%select * from sc where studentid like 39。 escape 39。 ?!泵顏?lái)設(shè)置當(dāng)行顯示字符的數(shù)量。(2)如果別名中含有特殊字符(如:空格)和特殊的要求(如:所有字母大寫(xiě)顯示等)要用雙引號(hào)“”把別名引起來(lái)。 查詢(xún)“李尋歡”所在部門(mén)的地址?;蛘遱elect departmenttel from department where departmentid in (select departmentid from teacher where teachername=39。)。 2)in的用法分析總結(jié): 1)注意給表起別名。如果沒(méi)有這種現(xiàn)象,那么只用字段名即可。 子查詢(xún)?nèi)绻粋€(gè)select命令(查詢(xún)1)出現(xiàn)在另一個(gè)select命令(查詢(xún)2)的一個(gè)子句中,則稱(chēng)查詢(xún)1是查詢(xún)2的子查詢(xún),又稱(chēng)為“嵌套查詢(xún)”。子查詢(xún)可以嵌套多層,子查詢(xún)操作的數(shù)據(jù)表可以是父查詢(xún)不操作的數(shù)據(jù)表。select * from teacher where salary(select salary from teacher where teachername=39。)。練習(xí): 查詢(xún)與李尋歡在同一個(gè)教研室工作的教師的姓名。軟件39。2)子查詢(xún)的結(jié)果多于一行(多個(gè))記錄,這時(shí)要用in、some、any、all等。檢索已經(jīng)開(kāi)設(shè)課程的部門(mén)信息檢索有教工工資大于等于網(wǎng)絡(luò)教研室教工工資的非網(wǎng)絡(luò)教研室的名稱(chēng)。DBS包括:DBMS、DB、DBA等。數(shù)據(jù)模型:層次模型、網(wǎng)狀模型、關(guān)系模型。幾個(gè)概念:關(guān)系223。二維表;元組223。記錄;屬性223。字段常用的數(shù)據(jù)庫(kù)管理系統(tǒng):Oracle、 MySQL、SQL Server、DBSybase 、FoxPro、ACCESS等等。即: SELECT 排重 * 字段名 別名 FROM 表名列表 WHERE 查詢(xún)條件: BETWEEN...AND... 、IN 、IS NULL、 NOT、 AND、 OR 、子查詢(xún) ORDER BY 字段1, 字段2[ ASC|DESC]第二天 Oracle 10g單行函數(shù)和聚合函數(shù) 函數(shù)是一種有0個(gè)或多個(gè)參數(shù)并且有一個(gè)返回值的程序,Oracle的函數(shù)主要分為兩大類(lèi):?jiǎn)涡泻瘮?shù)和聚合函數(shù)(組函數(shù))。當(dāng)需要對(duì)查詢(xún)結(jié)果的數(shù)據(jù)行的同類(lèi)信息合并在一起操作時(shí),就需要用聚合函數(shù)來(lái)匯總這些數(shù)據(jù)行;oracle提供了基于組的多行函數(shù),它們可以在select或select的having子句中使用。單行函數(shù)也可以使用在update的set子句中、insert的values子句中、delete的where子句中等,但重點(diǎn)是用在select子句。 NVL函數(shù)因?yàn)樵谖覀兊谋碇薪?jīng)常會(huì)有null值出現(xiàn),而null無(wú)法參與其它的運(yùn)算,如salary+null是非法的,為了解決這個(gè)問(wèn)題,系統(tǒng)提供了NVL函數(shù)專(zhuān)門(mén)處理null。2)舉例,找出問(wèn)題所在先看上述語(yǔ)句會(huì)出現(xiàn)什么問(wèn)題,解決辦法如下:注意:xx2的數(shù)據(jù)類(lèi)型要相匹配。2) CHR(i):返回整數(shù)i對(duì)應(yīng)的字符。注意一個(gè)字符串的連接運(yùn)算符:||,如:select 39。||teachername from teacher4) INITCAP(C):返回字符串C,并將C中的每個(gè)單詞的第一個(gè)字母大寫(xiě),其它字母小寫(xiě)。C1是被搜索的字符串,C2是搜索的字符串,i是搜索的開(kāi)始位置(默認(rèn)為1),j是出現(xiàn)的次數(shù)(默認(rèn)為1)例如:求“oracle traing”中從第1個(gè)字符開(kāi)始‘tr’第2次出現(xiàn)的位置。6) LENGTH(C):返回字符串C的長(zhǎng)度,注意一個(gè)漢字和一個(gè)字母的長(zhǎng)度都是17) LOWER(C):返回字符串C的所有字符為小寫(xiě)。9) LPAD(C1, i[, C2]):CC2均為字符串,i為整數(shù)。例如:在字符串‘幸福’的右邊用‘*’補(bǔ)足到10個(gè)字符,然后在結(jié)果的左邊用‘a(chǎn)mp。SQL select LPAD(Rpad(39。,10,39。),17,39。39。說(shuō)明:lpad是左填充,rpad是右填充。11) TRIM(C):既刪除C的前導(dǎo)空格又刪除C尾部的空格。13) Replace(string,s1,s2):用s2替換出現(xiàn)在string中的s1字符串。aabbccddeeaaa39。aa39。AA39。14) TRANSLATE(C1,C2,C3):它是分級(jí)替換的,具體做法如下:a) 若在C1中能找到與C2全部相同的,就用C3把相應(yīng)的字符全部代替??煞秩缦氯N情況:I) 若C2長(zhǎng)度等于C3的長(zhǎng)度,做對(duì)應(yīng)位置字符替換。結(jié)果:Iii)若C2長(zhǎng)度小于C3的,相當(dāng)于只保留C3前面的與C2長(zhǎng)度的字符串,然后再做對(duì)應(yīng)位置字符替換。結(jié)果: 數(shù)值函數(shù)1)ABS(a):求指定數(shù)a的絕對(duì)值。3)MOD(m,n):返回m除以n的余數(shù)。5)SIGN(n):若n為負(fù)數(shù)返回1;n為整數(shù)返回1;n為0,返回0。7)TRUNC(n1,n2):nn2同ROUND函數(shù),只是這個(gè)是按截尾法處理。 2)LAST_DAY(D):返回包含日期D的月份的最后一天。select months_between(sysdate+20,sysdate) FROM DUAL。例如:select next_day(sysdate,39。) from dual。5) ROUND(D[,FMT]):返回FMT指定格式的日期D。year39。6)TRUNC(D[,FMT]):返回FMT指定格式的日期D,用法同round函數(shù)。year39。應(yīng)用:如果給教師根據(jù)年滿(mǎn)某個(gè)工齡而漲工資,則可以用months_between(sysdate,workday)工齡*12作為條件。 to_char(number/date,’formatmodel’):按照f(shuō)ormatmodel的格式把數(shù)值number或日期date轉(zhuǎn)換為相應(yīng)的字符串。yyyymmdd39。2)有關(guān)formatmodel的說(shuō)明:(1)日期的顯示格式:YYYY:4位年份YY:兩位年份Year:年的英文全名 如nineteen nityeightMM:月的兩位數(shù)字Month:月的英文全名 如MAYMON:英文月的前三位簡(jiǎn)寫(xiě) 如OCTDAY:星期幾的英文全名 如MondayDD:2位日期(2)數(shù)字的顯示格式:9:代表一個(gè)數(shù)字位0:代表數(shù)字前面補(bǔ)0,如to_char(1200,’’)的結(jié)果:.:小數(shù)點(diǎn)的位置,:標(biāo)記數(shù)字位置的逗號(hào)L:根據(jù)數(shù)據(jù)庫(kù)字符集加貨幣符號(hào) 如to_char(1200,’’)。:c表示字符串,formatmodel表示一種特殊格式的字符串。其實(shí)該函數(shù)將字符串c轉(zhuǎn)換為date數(shù)據(jù)類(lèi)型。返回formatmodel格式的數(shù)字。 聚合函數(shù)(組函數(shù)) 聚合函數(shù)的應(yīng)用MAX(x):返回某個(gè)字段的所有值中的最大值。 例如:查詢(xún)教工中工資最高和最低的員工AVG(x):返回指定字段中的平均值。 COUNT(*):返回查詢(xún)中行的數(shù)目,*表示返回所有的行,用來(lái)統(tǒng)計(jì)一個(gè)表中有多少條記錄(包含有空值的記錄)。 GROUP BY子句的應(yīng)用聚合函數(shù)一般是處理那些已經(jīng)分好組的數(shù)據(jù),分組可以用group by子句來(lái)完成。注意,聚合函數(shù)不能出現(xiàn)where子句中。 ORDER BY子句的使用使用order by子句可以對(duì)查詢(xún)結(jié)果進(jìn)行排序,其中包括升序(asc,缺省值)和降序(desc)。 Union 并例如:結(jié)果是兩個(gè)查詢(xún)結(jié)果的并集,若有重復(fù)的記錄,則只取它們中的一條。AB=AA∩B 統(tǒng)計(jì)每個(gè)班的學(xué)生數(shù) 統(tǒng)計(jì)每個(gè)專(zhuān)業(yè)的學(xué)生數(shù) 查詢(xún)每個(gè)教研室中的最低或最高總工資,并按總工資降序排列。 查詢(xún)至少有3人的教研室的名稱(chēng)及人數(shù)。第二天總結(jié) 單行函數(shù) 聚合函數(shù):min()、max()、sum()、avg()、count()等 Select查詢(xún)語(yǔ)句擴(kuò)充 SELECT [DISTINCT]{*,column [alias],...} FROM table1,table2[WHERE condition(s)][GROUP BY column [HAVING condition(s)]] [ORDER BY {column,expr,alias}[ASC|DESC]]。舉例 select * from student,score等值連接