oracle實(shí)訓(xùn)總結(jié)
Oracle實(shí)訓(xùn)
總結(jié)
系別:班級(jí):姓名:學(xué)號(hào):
日期:
實(shí)訓(xùn)總結(jié):
由于感到oracle實(shí)訓(xùn)擔(dān)子很重,而自己的學(xué)識(shí)、能力和閱歷與其任職都有一定的距離,所以總不敢掉以輕心,總在學(xué)習(xí),向書(shū)本學(xué)習(xí)、向周圍的領(lǐng)導(dǎo)學(xué)習(xí),向同事學(xué)習(xí),這樣下來(lái)感覺(jué)自己半年來(lái)還是有了一定的進(jìn)步。
顛末一個(gè)星期的oracle數(shù)據(jù)庫(kù)實(shí)訓(xùn),讓我體會(huì)到了日常仄凡是很多講堂上所還出有啟受的內(nèi)容,很讓人支獲頗豐,明白若何往應(yīng)用,而停止的一次剖析設(shè)計(jì)綜開(kāi)的練習(xí)。而本次數(shù)據(jù)庫(kù)時(shí)真訓(xùn)的目標(biāo)是讓我們把握數(shù)據(jù)庫(kù)系統(tǒng)的道理、手藝。將理論與現(xiàn)真聯(lián)開(kāi),利用現(xiàn)有的數(shù)據(jù)庫(kù)辦理系統(tǒng)硬件、范例、科學(xué)地完成一個(gè)設(shè)計(jì)與真現(xiàn)。
這個(gè)星期是我們oracle數(shù)據(jù)庫(kù)管理課的實(shí)訓(xùn),經(jīng)過(guò)一個(gè)星期的實(shí)訓(xùn),讓我領(lǐng)會(huì)到了許多平時(shí)課堂上所沒(méi)有接受的課外知識(shí),很讓人受益匪淺,懂得如何去運(yùn)用,而進(jìn)行的一次分析設(shè)計(jì)綜合的訓(xùn)練。而本次實(shí)訓(xùn)的目的是讓我們掌握數(shù)據(jù)庫(kù)系統(tǒng)的原理、技術(shù)。將理論與實(shí)際相結(jié)合,應(yīng)用現(xiàn)有的數(shù)據(jù)庫(kù)管理系統(tǒng)軟件,規(guī)范、科學(xué)地完成一個(gè)設(shè)計(jì)與實(shí)現(xiàn)。這次我們實(shí)訓(xùn)的內(nèi)容是從數(shù)據(jù)庫(kù)、數(shù)據(jù)表的創(chuàng)建和修改開(kāi)始的,表是建立關(guān)系數(shù)據(jù)庫(kù)的基本結(jié)構(gòu),用來(lái)存儲(chǔ)數(shù)據(jù)具有已定義的屬性,在表的操作過(guò)程中,有查看表信息、查看表屬性、修改表中的數(shù)據(jù)、刪除表中的數(shù)據(jù)及修改表和刪除表的操作。從實(shí)訓(xùn)中讓我更明白一些知識(shí),表是數(shù)據(jù)最重要的一個(gè)數(shù)據(jù)對(duì)象,表的創(chuàng)建好壞直接關(guān)系到數(shù)數(shù)據(jù)庫(kù)的成敗,表的內(nèi)容是越具體越好,但是也不能太繁瑣,以后在實(shí)際應(yīng)用中多使用表,對(duì)表的規(guī)劃和理解就會(huì)越深刻。我們實(shí)訓(xùn)的另一個(gè)內(nèi)容是數(shù)據(jù)庫(kù)的約束、視圖、查詢。從中我們了解到查詢語(yǔ)句的基本結(jié)構(gòu),和簡(jiǎn)單SELECT語(yǔ)句的使用,多表連接查詢。而在視圖的操作中,也了解到了視圖是常見(jiàn)的數(shù)據(jù)庫(kù)對(duì)象,是提供查看和存取數(shù)據(jù)的另一種途徑,對(duì)查詢執(zhí)行的大部分操作,使用視圖一樣可以完成。使用視圖不僅可以簡(jiǎn)化數(shù)據(jù)操作,還可以提高數(shù)據(jù)庫(kù)的安全性,不僅可以檢索數(shù)據(jù),也可以通過(guò)視圖向基表中添加、修改和刪除數(shù)據(jù)。存儲(chǔ)過(guò)程、觸發(fā)器也是我們實(shí)訓(xùn)的內(nèi)容之一,在操作中有建立存儲(chǔ)過(guò)程,執(zhí)行存儲(chǔ)過(guò)程,及查看和修改存儲(chǔ)過(guò)程,這些都是非;A(chǔ)的東西,但對(duì)用戶卻是非常重要的呢,只有熟悉了T_SQL語(yǔ)言,才能更好的掌握更多的東西。我們還學(xué)習(xí)了,數(shù)據(jù)庫(kù)的管理、數(shù)據(jù)的導(dǎo)入、導(dǎo)出、備份和還原。有oracle安全訪問(wèn)控制;登錄賬戶的管理;數(shù)據(jù)庫(kù)角色的管理;用戶權(quán)限管理。維護(hù)數(shù)據(jù)庫(kù)的安全是確保數(shù)據(jù)庫(kù)正常運(yùn)行的重要工作。數(shù)據(jù)的備份是對(duì)oracle數(shù)據(jù)事務(wù)日志進(jìn)行拷貝,數(shù)據(jù)庫(kù)備份記錄了在進(jìn)行備份操作的數(shù)據(jù)庫(kù)中所有數(shù)據(jù)的狀態(tài)。而數(shù)據(jù)的備份還分為數(shù)據(jù)庫(kù)完整備份、差異備份、事務(wù)日志備份、文件及文件組備份。做數(shù)據(jù)備份就是為了以后的數(shù)據(jù)庫(kù)恢復(fù)用。在實(shí)訓(xùn)內(nèi)容上我們還做了圖書(shū)管理數(shù)據(jù)庫(kù),其中的要求包含了許多數(shù)據(jù)庫(kù)的對(duì)象,綜合了我們所學(xué)的許多知識(shí),讓我們更努力的把所學(xué)到的東西運(yùn)用上去。
實(shí)訓(xùn)課是在學(xué)習(xí)與探索中度過(guò)的,短暫的一星期實(shí)訓(xùn)是結(jié)束了,但其中讓我們學(xué)到了許多知識(shí),出現(xiàn)許多未知的為什么,如倉(cāng)庫(kù)管理數(shù)據(jù)庫(kù)的初步設(shè)置、數(shù)據(jù)備份與還原的步驟,如何建立視圖、觸發(fā)器等一系列的問(wèn)題,正是在老師和同學(xué)的共同努力之下,我們才一步步把問(wèn)題解決了,最終完成了不可能完成的任務(wù)。
日期:201*
年12月25日
擴(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ū)寫形式a)列名列別名b)列名as列別名
11、列別名必須加””的情況a)列別名中包含有空格b)列別名中要求區(qū)分大小寫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的縮寫,可以寫全。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)題居中大寫字符函數(shù):其中字符串可以代表列名或字符表達(dá)式
a)lower(字符串)將所有大寫字符轉(zhuǎn)換為小寫字符b)upper(字符串)將所有小寫字符轉(zhuǎn)換為大寫字符
c)iniicap(字符串)所有單詞的首字母大寫,其它的小寫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)日期,不能寫成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:年份的英文拼寫d)mm:兩位數(shù)字的月份e)month:月份的英文拼寫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)子查詢需要寫在運(yùn)算符右邊
c)子查詢可以寫在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í),可以寫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í)刪除。