Oracle實訓總結
Oracle數(shù)據(jù)庫管理與應用實訓總結
在這一周Oracle數(shù)據(jù)庫管理與應用的實訓的時間里,實訓老師針對我們本學期的學習,有針對性地對我們進行了很有價值的實訓工作,從最基礎的字段類型,到一般的Oracle語句,如創(chuàng)建數(shù)據(jù)表、視圖、存儲過程、觸發(fā)器等,給我們細心講解,雖然Oracle數(shù)據(jù)庫管理與應用的課已經(jīng)學習了將近一學期,但對其簡單的知識點運用的都不是很熟練,沒能真正去融會貫通。
不過,經(jīng)過為期一周的針對性實訓,我學到了很多知識,把以前學的所有知識點都貫穿到一起,又溫習了一遍,讓我們能從真正意義上了解到Oracle數(shù)據(jù)庫的用處。
不論再用到什么軟件編寫網(wǎng)站,都會用到數(shù)據(jù)庫連接,都要從那個數(shù)據(jù)庫中調(diào)用數(shù)據(jù),這說明了數(shù)據(jù)庫的重要性,認識到學習數(shù)據(jù)庫的必要性。Oracle數(shù)據(jù)庫是很重要的數(shù)據(jù)庫系統(tǒng)。在數(shù)據(jù)庫實訓過程中,難免會出現(xiàn)小錯誤,但經(jīng)過我們的討論研究,加上老師認真的輔導,我們會解決這些錯誤,從而更加熟練掌握Oracle數(shù)據(jù)庫。這一周不僅學到了Oracle數(shù)據(jù)庫的知識,還培養(yǎng)了我們的團隊合作精神,互相幫助,討論研究,解決問題。實訓一周,收獲頗多,更是受益匪淺。
擴展閱讀:ORACLE實訓總結
1、Conn/assysdba:
以sysdba連接數(shù)據(jù)庫,在這里可以解鎖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)絡數(shù)據(jù)庫
在\\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ù)庫時,輸入:conn/@test6、創(chuàng)建用戶的語句以創(chuàng)建用戶名hr為例:Connsystem/assysdba;//連接到指定數(shù)據(jù)庫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ù)庫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語句的分類DQL:dataquerylanguage數(shù)據(jù)查詢語言:selectDML:datamanipulationlanguage數(shù)據(jù)操作語言insert/update/delete/mergeDDL:datedefinitionlanguage數(shù)據(jù)定義語言create/alter/drop/truncateDCL:datecontrollanguage數(shù)據(jù)控制語言grant/revokeTCL:transitoncontrollanguage事務控制語言commit/rollback/savepoint9、NULL:它不等于零或空格,任意的類型都可以支持nulla)包含null的任何算術表達式的結果都為nullb)包含null的連接表達式等于與””(空字符串)連接10、列別明的兩種書寫形式a)列名列別名b)列名as列別名
11、列別名必須加””的情況a)列別名中包含有空格b)列別名中要求區(qū)分大小寫c)列別名中包含有特殊字符12、使用||連接符代替,實例:Selectfirst_name||||last_name||sphonenumberis||phone_number“employeePhonenumber”fromemployees;
其中first_name、last_name、phone_number位列變量,表示輸出空格,中前兩個表示輸出,sphonenumberis表示輸出sphonenumber,”employeePhonenumber”表示輸出列的別名。
13、SQL*PLUS/ISQL*PLUS命令a)desc:顯示表結構,其中desc是describe的縮寫,可以寫全。b)set[系統(tǒng)變量]on|off,例如:setheadingon|off:控制是否顯示列標題。setescapeon|off:控制是否打開轉(zhuǎn)義符,showescape:顯示轉(zhuǎn)義字符setautocommiton|off:空值是否打開自動提交,showautocommit:顯示當前提交方式14、ISQL*PLUS的默認顯示格式Date和Character型左對齊,Numeric型右對齊、列標題居中大寫字符函數(shù):其中字符串可以代表列名或字符表達式
a)lower(字符串)將所有大寫字符轉(zhuǎn)換為小寫字符b)upper(字符串)將所有小寫字符轉(zhuǎn)換為大寫字符
c)iniicap(字符串)所有單詞的首字母大寫,其它的小寫d)concat(字符串1,字符串2)將字符串1與字符串2連接
e)substr(字符串,m,n)從字符串中第m位開始截取n位,字符串從1開始計數(shù)f)length(字符串)返回字符串的長度
g)instr(字符串1,字符串2,m,n)返回字符串2在字符串1中,從第m位開始,第n次出
現(xiàn)的位置。
h)lpad(字符串1,n,字符串2)用字符串2在字符串1的左邊進行填充,使字符串1達到
n位
i)rpad(字符串1,n,字符串2)用字符串2在字符串1的右邊進行填充,使字符串1達到
n位
j)trim(leading|trailing|both字符from字符串)將字符串中開頭(leading)和結尾(trailing)
的指定字符(只能是字符)去掉。
k)replace(字符串1,字符串2,字符串3)將字符串1中的字符串2用字符串3替換。數(shù)字函數(shù)
a)round(數(shù)字,n)將數(shù)字四舍五入到小數(shù)點后n位,n為負數(shù)表示小數(shù)點前|n|位。b)trunc(數(shù)字,n)將數(shù)字截取到小數(shù)點后n位,其他同上。c)mod(m,n)取m除以n的余數(shù)日期函數(shù)
a)sysdate返回當前系統(tǒng)日期,不能寫成sysdate()
b)months_between(date1,date2)返回date1與date2之間的月數(shù)c)add_months(date,n)在date的基礎上增加n個月d)next_day(date,d)返回date之后的第一個指定d,例如:next_day(16-8月-11,星期一),
返回11年8月16日之后的第一個星期一是:22-8月-11
e)last_day(date)返回date所在月的最后一天,例如:last_day(16-8月-11)返回:31-8
月-11
f)round(date,fmt)將date按fmt格式四舍五入,fmt可選默認為DD
g)trunc(date,fmt)將date按fmt格式四舍五入,fmt可選默認為DD,時間提前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:一個月中的第幾天j)ddd:一年中的第幾天k)am或pm:上下午
l)hh或hh12或hh24:表示小時12小時制24小時制m)mi:表示分鐘n)ss:表示秒數(shù)字格式a)9:一位數(shù)字b)0:一位數(shù)字或前導零c)$:美元符號d)L:按照地區(qū)顯示貨幣符號e).:小數(shù)點f),千位分隔符其它函數(shù)
a)nvl(表達式1,表達式2):如果表達式1的值不為null,返回表達式1的值,否則返回
表達式2的值,數(shù)據(jù)格式可以是日期、字符、數(shù)字,但表達式1和表達式2的數(shù)據(jù)類型必須一致。
b)nvl2(表達式1,表達式2,表達式3):如果表達式1的值不為空,返回表達式2的值,
否則返回表達式3的值。表達式2和表達式3的數(shù)據(jù)類型必須相同。
c)nullif(表達式1,表達式2):如果兩個參數(shù)不相等,返回表達式1的值;相等,則返回
空值。
d)coalesce(x1,x2……xn):返回第一個非空的參數(shù)。
e)(case表達式1when條件1then結果1when條件2then結果2……else結果nend):如
果表達式為條件1匹配就返回結果1……最后默認返回else后的結果n。
f)Decode(表達式,條件1,結果1,條件2,結果2……缺省值):如果表達式與條件1
匹配則返回結果1,缺省返回缺省值。
表別名如果定義了表別名,那么之后只能使用表別名而不能使用原表名。連接語法
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連接的兩個結果集所包含的字段要相等。b)union的結果去掉重復的記錄,unionall不去掉重復的記錄。Groupby的特點
a)在groupby子句的列可以不在select語句中出現(xiàn),但在select字句中出現(xiàn)的非分組
列必須在groupby字句中出現(xiàn)b)Groupby后面可以有多列
Select語句的執(zhí)行過程:順序為from-where-groupby-having-select-orderby
a)from:從from子句中找到需要查詢的表b)where:進行非分組函數(shù)的篩選判斷c)groupby:完成分組操作
d)having:完成分組函數(shù)的篩選判斷
e)select:選擇要顯示的列或表達式或組函數(shù)f)orderby:對得到的結果集進行排序組函數(shù)的嵌套:最多為兩級,例如:Selectmax(count(employee_id))fromemployeesgroupbydepartment_id;子查詢
特點:a)子查詢只能在括號中
b)子查詢需要寫在運算符右邊
c)子查詢可以寫在where、having、from中。
分類:a)單行子查詢:用=、>=、=等連接,子查詢返回結果只有一條
b)多行子查詢:用any、all、in等連接,子查詢的返回結果只有一條c)多列子查詢:子查詢的返回結果中含有多列。例如:
selecte.last_namee.salary,e.job_id,j.avgsalfromemployeese,(selectjob_id,avg(salary)avgsalfromemployeesgroupbyjob_id)jwheree.job_id=j.job_idande.salary>j.avgsal
子查詢中的空值問題
示例:selecta.last_name,a.salaryfromemployeesawherea.employee_idnotin(selectb.manager_idfromemployeesb)的返回結果為空
原因:在employees表中有manager_id為null的記錄,而null&&true=trueExists和notexists
a)子查詢中如果找到符合條件的記錄,子查詢語句不會繼續(xù)執(zhí)行,返回trueb)子查詢中如果到表的末尾也沒有找到符合條件的記錄,返回falseInsert插入空值插入空值時,可以寫null或使用默認值修改示例:updatedossiersetcountry_code=defaultwhereid=2創(chuàng)建表的語法
Createtabletable_name[(column,column……)]asselect……:對于select中的表達式(比如:salary*12)必須給定列別名,否則報錯。引用另一個用戶的表用戶名.表名Oracle中表的分類
a)用戶表:有用戶創(chuàng)建和維護的表的集合,它包括用戶所使用的數(shù)據(jù)
b)數(shù)據(jù)字典:由Oracle服務器創(chuàng)建和維護的表的集合,它包括數(shù)據(jù)庫信息,比如表的
定義、數(shù)據(jù)庫結構信息等。
Oracle數(shù)據(jù)庫的偽列和偽表
偽表:dual用于查詢不涉及具體表時偽列:rowin由系統(tǒng)自動產(chǎn)生,表示行地址添加、修改、刪除列
a)添加:altertabletable_nameadd(columnname,datatypenotnulldefault……)b)修改:altertabletable_namemodify(columnname,datatypenotnulldefault……)c)刪除:altertabletable_namedrop(columnname1,columnname2)重命名表名
語法:renameoldnametonewname
友情提示:本文中關于《Oracle實訓總結》給出的范例僅供您參考拓展思維使用,Oracle實訓總結:該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡整理 免責聲明:本文僅限學習分享,如產(chǎn)生版權問題,請聯(lián)系我們及時刪除。