Oracle實(shí)訓(xùn)總結(jié)
Oracle數(shù)據(jù)庫(kù)管理與應(yīng)用實(shí)訓(xùn)總結(jié)
在這一周Oracle數(shù)據(jù)庫(kù)管理與應(yīng)用的實(shí)訓(xùn)的時(shí)間里,實(shí)訓(xùn)老師針對(duì)我們本學(xué)期的學(xué)習(xí),有針對(duì)性地對(duì)我們進(jìn)行了很有價(jià)值的實(shí)訓(xùn)工作,從最基礎(chǔ)的字段類型,到一般的Oracle語(yǔ)句,如創(chuàng)建數(shù)據(jù)表、視圖、存儲(chǔ)過(guò)程、觸發(fā)器等,給我們細(xì)心講解,雖然Oracle數(shù)據(jù)庫(kù)管理與應(yīng)用的課已經(jīng)學(xué)習(xí)了將近一學(xué)期,但對(duì)其簡(jiǎn)單的知識(shí)點(diǎn)運(yùn)用的都不是很熟練,沒(méi)能真正去融會(huì)貫通。
不過(guò),經(jīng)過(guò)為期一周的針對(duì)性實(shí)訓(xùn),我學(xué)到了很多知識(shí),把以前學(xué)的所有知識(shí)點(diǎn)都貫穿到一起,又溫習(xí)了一遍,讓我們能從真正意義上了解到Oracle數(shù)據(jù)庫(kù)的用處。
不論再用到什么軟件編寫(xiě)網(wǎng)站,都會(huì)用到數(shù)據(jù)庫(kù)連接,都要從那個(gè)數(shù)據(jù)庫(kù)中調(diào)用數(shù)據(jù),這說(shuō)明了數(shù)據(jù)庫(kù)的重要性,認(rèn)識(shí)到學(xué)習(xí)數(shù)據(jù)庫(kù)的必要性。Oracle數(shù)據(jù)庫(kù)是很重要的數(shù)據(jù)庫(kù)系統(tǒng)。在數(shù)據(jù)庫(kù)實(shí)訓(xùn)過(guò)程中,難免會(huì)出現(xiàn)小錯(cuò)誤,但經(jīng)過(guò)我們的討論研究,加上老師認(rèn)真的輔導(dǎo),我們會(huì)解決這些錯(cuò)誤,從而更加熟練掌握Oracle數(shù)據(jù)庫(kù)。這一周不僅學(xué)到了Oracle數(shù)據(jù)庫(kù)的知識(shí),還培養(yǎng)了我們的團(tuán)隊(duì)合作精神,互相幫助,討論研究,解決問(wèn)題。實(shí)訓(xùn)一周,收獲頗多,更是受益匪淺。
擴(kuò)展閱讀:ORACLE實(shí)訓(xùn)總結(jié)
1、Conn/assysdba:
以sysdba連接數(shù)據(jù)庫(kù),在這里可以解鎖system、hr(oracle內(nèi)建的用戶名)、scott(oracle內(nèi)建的用戶名)用戶,并修改它們的密碼。2、修改密碼:
Alteruseridentifiedby3、解鎖用戶:
Alteruseraccountunlock
4、解鎖hr、scott,并修改system、hr、scott密碼Alteruserhraccountunlock;Alteruserscottaccountunlock;Alteruserhridentifiedbyk;Alteruserscottidentifiedbyk;Alterusersystemidentifiedbyk;5、連接網(wǎng)絡(luò)數(shù)據(jù)庫(kù)
在\\product\\10.0.2\\db_1\\NETWORK\\ADMIN\\tnsname.ora文件中添加內(nèi)容:test=(
DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)))
連接數(shù)據(jù)庫(kù)時(shí),輸入:conn/@test6、創(chuàng)建用戶的語(yǔ)句以創(chuàng)建用戶名hr為例:Connsystem/assysdba;//連接到指定數(shù)據(jù)庫(kù)Dropuserhrcascade;//如果hr用戶名已存在的話刪除該用戶名
Createuserhridentifiedbyhrdefaulttablespaceuserstemporarytablespacetemp;//創(chuàng)建用戶hr
Hostimphr/hrfile=\\hr.dmplog=\\1.logfromuser=hrtouser=hrignore=y;7、hr環(huán)境搭建
connhr/k:以用戶名hr、密碼k連接數(shù)據(jù)庫(kù)createtableEMP(EMPNONUMBER(6)notnull,ENAMEVARCHAR2(25),HIREDATEDATE,JOBVARCHAR2(10),SALNUMBER(8,2),COMMNUMBER(2,2),DEPTNONUMBER(4)
);INSERTINTOEMPSELECT
EMPLOYEE_ID,LAST_NAME,HIRE_DATE,JOB_ID,SALARY,COMMISSION_PCT,DEPARTMENT_IDFROMEMPLOYEES;createtableDEPT(DEPTNONUMBER(4)notnull,DNAMEVARCHAR2(30),LOCNUMBER(4)
);INSERTINTODEPT
SELECTDEPARTMENT_ID,DEPARTMENT_NAME,LOCATION_IDFROMDEPARTMENTS;
createtableemp_jobasselectempno,jobfromempwhere1=2;
insertintoemp_job(empno,job)selectempno,jobfromempwheredeptno=30;createtablenew_emp(id,name)asselectempno,enamefromemp;createtableSALGRADES(grade_levelvarchar2(4),lowest_salaryNUMBER,highest_salaryNUMBER
);insertintosalgradesvalues("L1",1000,2999);insertintosalgradesvalues("L2",3000,5999);insertintosalgradesvalues("L3",6000,8999);insertintosalgradesvalues("L4",9000,14999);insertintosalgradesvalues("L5",15000,22999);insertintosalgradesvalues("L6",23000,30000);commit;
8、SQL語(yǔ)句的分類DQL:dataquerylanguage數(shù)據(jù)查詢語(yǔ)言:selectDML:datamanipulationlanguage數(shù)據(jù)操作語(yǔ)言insert/update/delete/mergeDDL:datedefinitionlanguage數(shù)據(jù)定義語(yǔ)言create/alter/drop/truncateDCL:datecontrollanguage數(shù)據(jù)控制語(yǔ)言grant/revokeTCL:transitoncontrollanguage事務(wù)控制語(yǔ)言commit/rollback/savepoint9、NULL:它不等于零或空格,任意的類型都可以支持nulla)包含null的任何算術(shù)表達(dá)式的結(jié)果都為nullb)包含null的連接表達(dá)式等于與””(空字符串)連接10、列別明的兩種書(shū)寫(xiě)形式a)列名列別名b)列名as列別名
11、列別名必須加””的情況a)列別名中包含有空格b)列別名中要求區(qū)分大小寫(xiě)c)列別名中包含有特殊字符12、使用||連接符代替,實(shí)例:Selectfirst_name||||last_name||sphonenumberis||phone_number“employeePhonenumber”fromemployees;
其中first_name、last_name、phone_number位列變量,表示輸出空格,中前兩個(gè)表示輸出,sphonenumberis表示輸出sphonenumber,”employeePhonenumber”表示輸出列的別名。
13、SQL*PLUS/ISQL*PLUS命令a)desc:顯示表結(jié)構(gòu),其中desc是describe的縮寫(xiě),可以寫(xiě)全。b)set[系統(tǒng)變量]on|off,例如:setheadingon|off:控制是否顯示列標(biāo)題。setescapeon|off:控制是否打開(kāi)轉(zhuǎn)義符,showescape:顯示轉(zhuǎn)義字符setautocommiton|off:空值是否打開(kāi)自動(dòng)提交,showautocommit:顯示當(dāng)前提交方式14、ISQL*PLUS的默認(rèn)顯示格式Date和Character型左對(duì)齊,Numeric型右對(duì)齊、列標(biāo)題居中大寫(xiě)字符函數(shù):其中字符串可以代表列名或字符表達(dá)式
a)lower(字符串)將所有大寫(xiě)字符轉(zhuǎn)換為小寫(xiě)字符b)upper(字符串)將所有小寫(xiě)字符轉(zhuǎn)換為大寫(xiě)字符
c)iniicap(字符串)所有單詞的首字母大寫(xiě),其它的小寫(xiě)d)concat(字符串1,字符串2)將字符串1與字符串2連接
e)substr(字符串,m,n)從字符串中第m位開(kāi)始截取n位,字符串從1開(kāi)始計(jì)數(shù)f)length(字符串)返回字符串的長(zhǎng)度
g)instr(字符串1,字符串2,m,n)返回字符串2在字符串1中,從第m位開(kāi)始,第n次出
現(xiàn)的位置。
h)lpad(字符串1,n,字符串2)用字符串2在字符串1的左邊進(jìn)行填充,使字符串1達(dá)到
n位
i)rpad(字符串1,n,字符串2)用字符串2在字符串1的右邊進(jìn)行填充,使字符串1達(dá)到
n位
j)trim(leading|trailing|both字符from字符串)將字符串中開(kāi)頭(leading)和結(jié)尾(trailing)
的指定字符(只能是字符)去掉。
k)replace(字符串1,字符串2,字符串3)將字符串1中的字符串2用字符串3替換。數(shù)字函數(shù)
a)round(數(shù)字,n)將數(shù)字四舍五入到小數(shù)點(diǎn)后n位,n為負(fù)數(shù)表示小數(shù)點(diǎn)前|n|位。b)trunc(數(shù)字,n)將數(shù)字截取到小數(shù)點(diǎn)后n位,其他同上。c)mod(m,n)取m除以n的余數(shù)日期函數(shù)
a)sysdate返回當(dāng)前系統(tǒng)日期,不能寫(xiě)成sysdate()
b)months_between(date1,date2)返回date1與date2之間的月數(shù)c)add_months(date,n)在date的基礎(chǔ)上增加n個(gè)月d)next_day(date,d)返回date之后的第一個(gè)指定d,例如:next_day(16-8月-11,星期一),
返回11年8月16日之后的第一個(gè)星期一是:22-8月-11
e)last_day(date)返回date所在月的最后一天,例如:last_day(16-8月-11)返回:31-8
月-11
f)round(date,fmt)將date按fmt格式四舍五入,fmt可選默認(rèn)為DD
g)trunc(date,fmt)將date按fmt格式四舍五入,fmt可選默認(rèn)為DD,時(shí)間提前h)extract(XXfromdate)從date中提取出XX(month、day、year)數(shù)據(jù)類型之間的轉(zhuǎn)換
a)to_char(date|number,fmt)將date或number轉(zhuǎn)換為指定格式fmt的字符串,fmt可省
略b)to_number(char,fmt)將char轉(zhuǎn)換為指定格式fmt數(shù)字,fmt可省略c)to_date(char,fmt)將char轉(zhuǎn)換為指定格式fmtdate,fmt可省略常用的日期格式
a)yyyy:四位數(shù)字的年份b)yy:兩位數(shù)字的年份c)year:年份的英文拼寫(xiě)d)mm:兩位數(shù)字的月份e)month:月份的英文拼寫(xiě)f)dy:星期英文的前三位g)day:星期英文的全拼h)d:星期的第幾天,星期日為第一天i)dd:一個(gè)月中的第幾天j)ddd:一年中的第幾天k)am或pm:上下午
l)hh或hh12或hh24:表示小時(shí)12小時(shí)制24小時(shí)制m)mi:表示分鐘n)ss:表示秒數(shù)字格式a)9:一位數(shù)字b)0:一位數(shù)字或前導(dǎo)零c)$:美元符號(hào)d)L:按照地區(qū)顯示貨幣符號(hào)e).:小數(shù)點(diǎn)f),千位分隔符其它函數(shù)
a)nvl(表達(dá)式1,表達(dá)式2):如果表達(dá)式1的值不為null,返回表達(dá)式1的值,否則返回
表達(dá)式2的值,數(shù)據(jù)格式可以是日期、字符、數(shù)字,但表達(dá)式1和表達(dá)式2的數(shù)據(jù)類型必須一致。
b)nvl2(表達(dá)式1,表達(dá)式2,表達(dá)式3):如果表達(dá)式1的值不為空,返回表達(dá)式2的值,
否則返回表達(dá)式3的值。表達(dá)式2和表達(dá)式3的數(shù)據(jù)類型必須相同。
c)nullif(表達(dá)式1,表達(dá)式2):如果兩個(gè)參數(shù)不相等,返回表達(dá)式1的值;相等,則返回
空值。
d)coalesce(x1,x2……xn):返回第一個(gè)非空的參數(shù)。
e)(case表達(dá)式1when條件1then結(jié)果1when條件2then結(jié)果2……else結(jié)果nend):如
果表達(dá)式為條件1匹配就返回結(jié)果1……最后默認(rèn)返回else后的結(jié)果n。
f)Decode(表達(dá)式,條件1,結(jié)果1,條件2,結(jié)果2……缺省值):如果表達(dá)式與條件1
匹配則返回結(jié)果1,缺省返回缺省值。
表別名如果定義了表別名,那么之后只能使用表別名而不能使用原表名。連接語(yǔ)法
Select……fromtable1[crossjointable2]|[naturaljointable2]|
[jointable2using(column_name)]|
[jointable2on(table1.column_name=table2.column_name)]|
[left|right|fullouterjointable2on(table1.column_name=table2.column_name)]a)crossjointable2:生成笛卡爾積b)nutualjointable2:自然連接
c)jointable2using(column_name):使用指定列連接,兩列同名
d)jointable2on(table1.column_name=table2.column_name):使用指定列連接,兩列可以
不同名
e)left|right|fullouterjointable2on(table1.column_name=table2.column_name):外連接union和unionall
a)union和unionall連接的兩個(gè)結(jié)果集所包含的字段要相等。b)union的結(jié)果去掉重復(fù)的記錄,unionall不去掉重復(fù)的記錄。Groupby的特點(diǎn)
a)在groupby子句的列可以不在select語(yǔ)句中出現(xiàn),但在select字句中出現(xiàn)的非分組
列必須在groupby字句中出現(xiàn)b)Groupby后面可以有多列
Select語(yǔ)句的執(zhí)行過(guò)程:順序?yàn)閒rom-where-groupby-having-select-orderby
a)from:從from子句中找到需要查詢的表b)where:進(jìn)行非分組函數(shù)的篩選判斷c)groupby:完成分組操作
d)having:完成分組函數(shù)的篩選判斷
e)select:選擇要顯示的列或表達(dá)式或組函數(shù)f)orderby:對(duì)得到的結(jié)果集進(jìn)行排序組函數(shù)的嵌套:最多為兩級(jí),例如:Selectmax(count(employee_id))fromemployeesgroupbydepartment_id;子查詢
特點(diǎn):a)子查詢只能在括號(hào)中
b)子查詢需要寫(xiě)在運(yùn)算符右邊
c)子查詢可以寫(xiě)在where、having、from中。
分類:a)單行子查詢:用=、>=、=等連接,子查詢返回結(jié)果只有一條
b)多行子查詢:用any、all、in等連接,子查詢的返回結(jié)果只有一條c)多列子查詢:子查詢的返回結(jié)果中含有多列。例如:
selecte.last_namee.salary,e.job_id,j.avgsalfromemployeese,(selectjob_id,avg(salary)avgsalfromemployeesgroupbyjob_id)jwheree.job_id=j.job_idande.salary>j.avgsal
子查詢中的空值問(wèn)題
示例:selecta.last_name,a.salaryfromemployeesawherea.employee_idnotin(selectb.manager_idfromemployeesb)的返回結(jié)果為空
原因:在employees表中有manager_id為null的記錄,而null&&true=trueExists和notexists
a)子查詢中如果找到符合條件的記錄,子查詢語(yǔ)句不會(huì)繼續(xù)執(zhí)行,返回trueb)子查詢中如果到表的末尾也沒(méi)有找到符合條件的記錄,返回falseInsert插入空值插入空值時(shí),可以寫(xiě)null或使用默認(rèn)值修改示例:updatedossiersetcountry_code=defaultwhereid=2創(chuàng)建表的語(yǔ)法
Createtabletable_name[(column,column……)]asselect……:對(duì)于select中的表達(dá)式(比如:salary*12)必須給定列別名,否則報(bào)錯(cuò)。引用另一個(gè)用戶的表用戶名.表名Oracle中表的分類
a)用戶表:有用戶創(chuàng)建和維護(hù)的表的集合,它包括用戶所使用的數(shù)據(jù)
b)數(shù)據(jù)字典:由Oracle服務(wù)器創(chuàng)建和維護(hù)的表的集合,它包括數(shù)據(jù)庫(kù)信息,比如表的
定義、數(shù)據(jù)庫(kù)結(jié)構(gòu)信息等。
Oracle數(shù)據(jù)庫(kù)的偽列和偽表
偽表:dual用于查詢不涉及具體表時(shí)偽列:rowin由系統(tǒng)自動(dòng)產(chǎn)生,表示行地址添加、修改、刪除列
a)添加:altertabletable_nameadd(columnname,datatypenotnulldefault……)b)修改:altertabletable_namemodify(columnname,datatypenotnulldefault……)c)刪除:altertabletable_namedrop(columnname1,columnname2)重命名表名
語(yǔ)法:renameoldnametonewname
友情提示:本文中關(guān)于《Oracle實(shí)訓(xùn)總結(jié)》給出的范例僅供您參考拓展思維使用,Oracle實(shí)訓(xùn)總結(jié):該篇文章建議您自主創(chuàng)作。
來(lái)源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問(wèn)題,請(qǐng)聯(lián)系我們及時(shí)刪除。