




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
ORACLE學(xué)習(xí)筆記
目錄
第一部分oracle管理配置4
1.oracle安裝配置4
1.1oracle簡介4
1.2SQLPlus和PL/SQL4
第二部分oracle數(shù)據(jù)庫5
2.oracle數(shù)據(jù)庫5
2.1創(chuàng)建。racle數(shù)據(jù)庫5
2.2oracle數(shù)據(jù)庫的相關(guān)術(shù)語5
2.3oracle數(shù)據(jù)庫的備份與恢復(fù)6
3.oracle數(shù)據(jù)表對象8
3.1oracle表空間8
3.2創(chuàng)建oracle數(shù)據(jù)表10
3.3修改oracle數(shù)據(jù)表結(jié)構(gòu)10
3.4刪除數(shù)據(jù)表10
3.5備份/恢復(fù)數(shù)據(jù)表11
3.G臨時(shí)表11
3.7特殊的表dual12
4.約束13
4.1主鍵約束13
4.2外鍵約束15
4.3唯一性約束16
4.4檢查約束17
4.5默認(rèn)值約束18
5.視圖19
5.1關(guān)系視圖19
5.2內(nèi)嵌視圖22
5.3對象視圖23
5.4物化視圖24
6.函數(shù)與存儲過程25
6.1函數(shù)25
6.2存儲過程27
6.3程序包31
7.游標(biāo)32
7.1游標(biāo)簡介32
7.2顯式游標(biāo)32
73隱式游標(biāo)34
7.4游標(biāo)屬性35
7.5動態(tài)游標(biāo)36
8.觸發(fā)器37
8.1觸發(fā)器簡介37
8.2創(chuàng)建和使用觸發(fā)器37
8.3語句觸發(fā)器39
8.4行觸發(fā)器41
8.5insteadof觸發(fā)器43
8.6系統(tǒng)事件與用戶事件觸發(fā)器44
8.7啟用和禁用觸發(fā)器45
9.序列46
9.1創(chuàng)建和使用序列46
9.2修改序列屬性47
10.用戶角色與權(quán)限控制48
10.1用戶48
10.2權(quán)限49
10.3角色50
第三部分oracle中的SQL51
11.oracle數(shù)據(jù)類型51
11.1oracle中的數(shù)據(jù)類型51
11.2oracle中的特殊數(shù)據(jù)52
12.oracle中的函數(shù)與表達(dá)式53
12.1oracle中的字符串函數(shù)53
12.2oracle中的數(shù)學(xué)函數(shù)5G
12.3oracle中的日期函數(shù)57
12.4oracle中的聚合函數(shù)58
12.5oracle中的其他函數(shù)59
12.6oracle中的運(yùn)算表達(dá)式60
12.7oracle中的特殊判式61
12.8oracle高級函數(shù)一一分析函數(shù)與窗口函數(shù)62
13.oracle中的控制語句66
13.1oracle中的條件語句66
13.2oracle中的循環(huán)語句67
14.SQL查詢69
14.1基本查詢69
14.2子查詢70
14.3聯(lián)合查詢70
14.4聯(lián)接72
14.5層次化查詢73
15.SQL更新數(shù)據(jù)75
15.1插入數(shù)據(jù)75
15.2修改數(shù)據(jù)-update75
15.3刪除數(shù)據(jù)76
15.4數(shù)據(jù)提交與回滾76
第四部分oracle編程高級應(yīng)用77
16.數(shù)據(jù)庫速度優(yōu)化與數(shù)據(jù)完整性77
16.1利用索引加快數(shù)據(jù)引用77
16.2利用約束保持?jǐn)?shù)據(jù)完整性77
17.數(shù)據(jù)一致性與事務(wù)管理78
17.1什么是數(shù)據(jù)一致性和事務(wù)78
17.2oracle中的事務(wù)處理78
17.3事務(wù)處理原則81
18.并發(fā)控制82
18.1并發(fā)與鎖定82
18.2數(shù)據(jù)鎖定83
18.3并發(fā)控制的其他方法84
19.oracle中的正則表達(dá)式85
19.1正則表達(dá)式簡介85
19.2正則表達(dá)式基礎(chǔ)知識85
19.3正則表達(dá)式在oracle中的應(yīng)用86
第五部分oracle與編程語言綜合使用實(shí)例87
20.oracle在Java開發(fā)中的應(yīng)用87
20.1通過jdbc使用oracle87
文檔名稱版本號說明
21天學(xué)通Oracle.pdfV1.0文檔新增
第一部分oracle管理配置
1.oracle安裝配置
1.1oracle簡介
數(shù)據(jù)庫:是數(shù)據(jù)存儲倉庫的簡稱,是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫。
數(shù)據(jù):是數(shù)據(jù)庫的最基本的存儲對象。
數(shù)據(jù)庫管理系統(tǒng):|是用于管理數(shù)據(jù)庫的工具。
關(guān)系型數(shù)據(jù)庫一種數(shù)據(jù)庫模型,將某些相關(guān)數(shù)據(jù)存儲于同一個表,表與表之間利用相互關(guān)系
進(jìn)行關(guān)聯(lián)。
數(shù)據(jù)庫對象:是數(shù)據(jù)庫中用于劃分各種數(shù)據(jù)和實(shí)現(xiàn)各種功能的單元。
用戶:用戶是創(chuàng)建在數(shù)據(jù)庫中的賬號;
表:是最常見的數(shù)據(jù)庫對象;
索引:是根據(jù)指定的數(shù)據(jù)庫表列建立起來的順序,對于每一行數(shù)據(jù)都會建立在快速訪問的
路徑,因此,可以大大提高數(shù)據(jù)訪問的效率;
視圖:可以看成虛擬的表。視圖并不存儲數(shù)據(jù),而是作為數(shù)據(jù)的鏡像:
函數(shù):與其他編程語言中的函數(shù)類似,都是用來按照規(guī)則提供返回值的流程代碼;
存儲過程:數(shù)據(jù)庫中的存儲過程類似于其他編程語言中的過程;
觸發(fā)器:類似于監(jiān)視器。觸發(fā)器的本質(zhì)也是執(zhí)行特定任務(wù)的代碼塊;
1.2SQLPlus和PL/SQL
1.指定行的長度(SQLPlus輸出行的默認(rèn)長度為80]:
SQL>showlinesize;
linesize80
SQL>setlinesize100;-
2.指定分頁的尺寸
SQL>showpagesize;
pagesize14
SQL>setpagesize20;7£、/
注意:pagesize是從輸入的第一行開始計(jì)數(shù)的
3.輸出暫停
SQL>setpauseon;
SQL>select*fromuser_objects;
[enter]
【顯示下一屏幕信息,即查詢的結(jié)果(退出)】
Ctrl+c
SQL>setpauseoff;
4.feedback
SQL>showfeedback;
FEEDBACKONfor6ormorerows
說明:FEEOMCKON表示提示信息處F打開狀態(tài):for6ormorerows我示,僅僅當(dāng)查詢結(jié)果集中包含6條或6條以上記錄時(shí),該提
示信息才會出觀
SQL>setfeedback5;/feedback<
SQL>setfeedbackoff;/feedbacke
第二部分oracle數(shù)據(jù)庫
2.oracle數(shù)據(jù)庫
2.1創(chuàng)建oracle數(shù)據(jù)庫
使用可視化界面【DatabaseConfigurationAssistant】操作
2.2oracle數(shù)據(jù)庫的相關(guān)術(shù)語
數(shù)據(jù)庫:是指真實(shí)的數(shù)據(jù)倉庫,它包含了數(shù)據(jù)文件、控制文件和日志的等,是實(shí)實(shí)在在存儲在
磁盤的文件;
數(shù)據(jù)庫實(shí)例:是數(shù)據(jù)庫運(yùn)行時(shí),在內(nèi)存中的副本,oracle數(shù)據(jù)庫與外界環(huán)境進(jìn)行交互,必須通
過數(shù)據(jù)庫實(shí)例;
ORACLE_SID:是?個系統(tǒng)環(huán)境變量;
2.2.1數(shù)據(jù)庫
數(shù)據(jù)庫創(chuàng)建后,一般會存在文件夾oradata目錄下;
一個數(shù)據(jù)庫文件,大致包含:數(shù)據(jù)文件(DBF)、控制文件(CTL)和口志文件(LOG)
2.2.2數(shù)據(jù)庫實(shí)例和SID
每個oracle數(shù)據(jù)庫都會有一個數(shù)據(jù)庫實(shí)例與之對應(yīng);
數(shù)據(jù)庫為TEST,則對應(yīng)的Windows服務(wù)名為OracleServiceTEST,一般是自動啟動的,若
提升開機(jī)速度,可以改為手動,使用時(shí)再啟動:
數(shù)據(jù)庫實(shí)例的唯一標(biāo)識及SID;
2.2.3ORACLE_SID
oracle_sid是指操作系統(tǒng)環(huán)境變量,oracle環(huán)境的初始化與該變量有關(guān)
sqlplus/assysdbaj、拈定的SID時(shí).SQLPIUS默認(rèn)登錄到數(shù)據(jù)庫ORCL即orade安裝時(shí)自帶的數(shù)據(jù)庫,后化系
統(tǒng)變量中添加ORACLE_SID,并注銷使其生效,再次使用該命令連接。rade,發(fā)現(xiàn)數(shù)據(jù)庫為新更改后的數(shù)據(jù)庫
2.3oracle數(shù)據(jù)庫的備份與恢復(fù)
Oracle備份分為:邏輯備份和物理備份;物理備份又分:冷備份和熱備份
2.3.1邏輯備份/恢復(fù)
邏輯備份是指利用exp命令進(jìn)行備份
1.必備參數(shù)[dos環(huán)境下]:
>expsystem/abcl23file=d:/b.dmp-system/abci23為登錄數(shù)據(jù)庫的用戶名和密仙::沒仃指定哪個數(shù)據(jù)庫實(shí)例,那么
使用的則是系統(tǒng)訃境變余ORACLE_SID所指定的數(shù)據(jù)庫實(shí)例:file=d:/b.dmp指定數(shù)據(jù)導(dǎo)出所存放的文件充壑路徑
2.owner參數(shù)
owner參數(shù),可以指定一個用戶名列表
>expsystem/abcl23owner=(test,oracle)file=d:/b.dmp-owner=(test,oracie)表示導(dǎo)出test和。麗后兩個用戶多擁
有的對象,若用戶不存在,則會相應(yīng)警告,但不影響存在的用戶導(dǎo)出:
3.tables參數(shù)
>expsystem/abcl23tables=(people,employees)file=d:/b.dmp-tabies=(peopie,empiovees)指定j’要導(dǎo)出的數(shù)
據(jù)列表,這里表示僅導(dǎo)出用戶system的people和employees&
4.inctype參數(shù)
利用inctype參數(shù)指定導(dǎo)出的增量類型,但是Oracle9i后版本后不再使用了
>expsystem/abcl23inctype=completefile=d:/b.dmp
5.恢復(fù)
exp備份,相應(yīng)的恢復(fù)命令為imp
>impsystem/abcl23file=d:/b.dmp
>impsystem/abcl23file=d:/b.dmptables=(people,employees)
2.3.2物理備份/恢復(fù)
物理備份:是指直接備份數(shù)據(jù)庫的文件
1.冷備份/恢復(fù)
冷備份是指在數(shù)據(jù)庫關(guān)閉的情況下,備份所有的數(shù)據(jù)庫文件。這些文件包括:所有數(shù)據(jù)文件、
所有控制文件、所有聯(lián)機(jī)REDOLOG文件和Init.ora文件
【范例】:
(1)>sqlplus/assysdba一以管理員笠錄數(shù)據(jù)庫,并將數(shù)據(jù)庫關(guān)團(tuán)
>shutdownnormal;一關(guān)閉數(shù)據(jù)陳
(2)關(guān)閉數(shù)據(jù)庫后,對物理文件進(jìn)行備份,這些物理文件位于
(ORACLE_HOME}\product\10.1.0\oradata\test?其中test為數(shù)據(jù)庫名;
SQL>hostcopyD:\oracle\product\10.1.0\oradata\testf:\backup\一發(fā)制文件
(3)恢復(fù):
數(shù)據(jù)庫處于關(guān)閉狀態(tài),并將備份的文件復(fù)制到原來的位置即可;
2.熱備份/恢復(fù)
熱備份是指對處于啟動狀態(tài)下的數(shù)據(jù)庫進(jìn)行備份。熱備份一個數(shù)據(jù)庫,首先要保證數(shù)據(jù)庫運(yùn)行
于歸檔模式,然后備份表空間的數(shù)據(jù)文件,最后備份控制文件;
<1)在進(jìn)行口志模式切換之前,必須將運(yùn)行的數(shù)據(jù)庫正常關(guān)閉。
>sqlplus/assysdba
SQL>shutdownimmediate;
(2)重新啟動數(shù)據(jù)庫實(shí)例,但并不打開數(shù)據(jù)庫
SQL>startupmount;
(3)利用alter命令將數(shù)據(jù)庫切換到歸檔模式
SQL>alterdatabasearchivelog;
(4)打開數(shù)據(jù)庫,以便對數(shù)據(jù)庫進(jìn)行操作
SQL>alterdatabaseopen;
(5)利用archiveloglist命令確認(rèn)當(dāng)前數(shù)據(jù)庫處于歸檔模式
SQL>archiveloglist;
DatabaselogmodeArchiveMode
說明:ArchiveMode表明當(dāng)前的數(shù)據(jù)庫處歸檔模式。Oracle數(shù)據(jù)庫有聯(lián)機(jī)揖做日志,該日志用于記錄用戶的數(shù)據(jù)庫操作,如插入、
刪除或更新數(shù)據(jù)。一般情況下,每個。racle數(shù)據(jù)庫至少含有兩個聯(lián)機(jī)重做日志組。當(dāng)一個聯(lián)機(jī)重做口志級被寫滿的時(shí)候,就會發(fā)生
日志切換.另?個聯(lián)機(jī)日志組成為當(dāng)前使用的日志,繼續(xù)記錄用戶操作。當(dāng)前歐機(jī)H志組寫滿后,會切換到第?個聯(lián)機(jī)日志組,并
置寫其中的數(shù)據(jù)。
如果數(shù)據(jù)席處于非歸檔模式,聯(lián)機(jī)日志在切換時(shí)就會丟棄已有信息。而在歸檔模式葭當(dāng)發(fā)生日志切換時(shí),被切換的日志會
首先進(jìn)行歸檔并將信息復(fù)制到其他目錄。這樣,不會造成聯(lián)機(jī)日志信息的丟失。
(6)將數(shù)據(jù)庫中的表空間users設(shè)置為備份模式
SQL>altertablespaceusersbeginbackup;
(7)復(fù)制實(shí)際的表空間的數(shù)據(jù)文件到備份目錄下
SQL>hostcopyD:\oracle\product\10.1.0\oradata\test\users01.dbfd:\back;
關(guān)閉表空間的備份模式
SQL>altertablespaceusersendbackup;
(8)以同樣的方式備份數(shù)據(jù)庫中的其他表空間的數(shù)據(jù)文件
(9)備份控制文件
SQL>alterdatabasebackupcontrolfiletoT:\backup\TEST_BACKUP/reuse;
(10)備份控制文件的創(chuàng)建腳本
SQL)alterdatabasebackupcontrolfiletotrace;
此時(shí),會在{ORACLE_HOME}\admin\{INSTANCE_NAME}\udump【如本例中:
D:\oracle\product\10.1.0\admin\test\udump]目錄下生成新的控制文件的跟蹤文件,該文件記
錄了數(shù)據(jù)庫控制文件的創(chuàng)建腳本。
復(fù)制該文件,并將該文件復(fù)制到備份目錄下,至此,熱備份的過程結(jié)束。
備份成功后,一旦出現(xiàn)數(shù)據(jù)庫故障,即可以利用備份文件進(jìn)行恢復(fù)工作。
【示例:】
如啟動數(shù)據(jù)庫錯誤如下:
SQL>startupmount;
SQL>alterdatabaseopen;
alterdatabaseopen
*
ERRORatline1:
ORA-01157:cannotidentity/lockdatafile4-seeDBWRtracefile
ORA-01110:datafile4:'D:\ORACLE\PR0DUCT\10.1.0\ORADATA\TEST\USERS01.dbf,
由于無法找到數(shù)據(jù)文件USERS01.DBF,數(shù)據(jù)庫啟動失敗,需要恢復(fù)
(1)復(fù)制以前備份的數(shù)據(jù)到原目錄中
SQL>hostcopyf:\backup\users01,dbfD:\ORACLE\PRODUC7\10,1.0\ORADATA\TEST\USERS01.dbf;
(2)重新啟動數(shù)據(jù)庫
SQL>alterdatabaseopen;
alterdatabaseopen
ERRORatline1:
ORA-01113:file4needsmediarecovery
ORA-01110:datafile4:'D:\ORACLE\PR0DUCT\10.1.0\ORADATA\TEST\USERS01.dbf,
(3)SQL>recoverdatafileD:\ORACLE\PRODUCT\10.1.0\ORADATA\TEST\USERS01.dbf
或:
SQL>recoverdatafile4;
(4)
歸檔日志默認(rèn)存儲在{ORACLE_HOME}\flash_recovery_area\DATABASE_NAME}\ARCHIVELOG\下,
選擇最新的歸檔日志進(jìn)行恢復(fù)
(5)啟動數(shù)據(jù)庫
SQL>alterdatabaseopen;
2.3.3利用PL/SQLDeveloper備份數(shù)據(jù)庫
備份:ToolsFKJExportUserObjects
3.oracle數(shù)據(jù)表對象
3.1oracle表空間
3.1.1oracle表空間簡介
Oracle表空間是一個邏輯而象,而非物理對象。所謂邏輯對象,是指數(shù)據(jù)庫的組成部分,如表、
索引、視圖等。我們使用SQL語句對數(shù)據(jù)庫進(jìn)行操作時(shí),操作的都是邏輯對象,而非直接操作
物理文件。
一個數(shù)據(jù)庫可以有多個表空間,而一個表空間也可以有多個數(shù)據(jù)表
使用表空間管理數(shù)據(jù)優(yōu)點(diǎn):
1.避免磁盤空間突然耗竭的風(fēng)險(xiǎn)-創(chuàng)建表汽間預(yù)先指定最大也就空間
2.規(guī)劃數(shù)據(jù)更靈活-數(shù)據(jù)量大,可以自定義劃分.將個數(shù)據(jù)表劃分到不同的表空間中
3.提?島數(shù)據(jù)庫性能-訪M頻繁的數(shù)據(jù)表,可以將其放入通獨(dú)的表空間中,并存儲于高性能娥盤上
4.提高數(shù)據(jù)庫安全性??其中一個表空間的物理文件損壞時(shí),不會影響其他表空間的使用
3.1.2創(chuàng)建oracle表空間
Oracle表空間是一個邏輯概念,創(chuàng)建時(shí)需要指定物理文件,即為實(shí)際數(shù)據(jù)分配磁盤空間。表空
間的物理文件被稱為數(shù)據(jù)文件(datafile)
1.創(chuàng)建一個簡單的表空間
【范例:】創(chuàng)建一個名為USER01的表空間:
createtablespaceuserOldatafile'f:\database\oracle\user01.dbfsize20M;
createtablespace:創(chuàng)建表空間命令
userOl:新建表空間的名稱
,f:\database\orade\user01.dbf,:我空間對應(yīng)的數(shù)據(jù)文件的完整路徑;
20M:數(shù)據(jù)文件的初始化大小
2.指定數(shù)據(jù)文件的可擴(kuò)展性
當(dāng)存儲在某個數(shù)據(jù)文件中的數(shù)據(jù)量超過了其初始大小時(shí),數(shù)據(jù)文件可以進(jìn)行自動擴(kuò)展。
【范例:】指定數(shù)據(jù)文件可以自動擴(kuò)展-autoextendon,表示表空間的數(shù)據(jù)文件是可以自動擴(kuò)展的,。ff表示關(guān)閉自
動擴(kuò)展
createtablespaceuser02datafilel:\database\oracle\user02,dbfsize20Mautoextendon;
3.指定數(shù)據(jù)文件的增長幅度--默認(rèn)增長64K,HJnext選項(xiàng)
createtablespaceuserO3datafile'f:\database\oracle\user03.dbf'size20Mautoextendonnext5M;
-設(shè)置每次增長幅度為5M
4.指定數(shù)據(jù)文件的最大尺寸-maxsize
createtablespaceuser04datafile'f:\database\orade\user04.dbf'size20Mautoextendonnext5M
maxsize500M;-若不限制數(shù)據(jù)文件的扇光度第,應(yīng)該使用unlimited來代普實(shí)際值,即createtablespaceuserO^datafile
'f:\database\oracle\userO4.dbrsize20Mautoextendonnext5Mmaxsizeunlimited;
5.查看表空間是否創(chuàng)建成功
selectfile_name,tablespace_namefromdba_data_filesorderbyfile_name;-dba_data_fiies存儲「數(shù)據(jù)庫
中所有表空間的數(shù)據(jù)文件信息〃其中.ShlawacjnamP代表表空間的名稱.filjnam。存儲了對應(yīng)表空間的數(shù)指:文件的完駐路件
6.為一個表空間創(chuàng)建多個數(shù)據(jù)文件
createtablespacemultiple_data_filedatafile'f:\datzbase\tmp\data_l.dbf'sizeIM;
f:\database\tmp\data_2.dbfsize5M;--創(chuàng)建r一個multiple_data_file々'G響,包含兩個數(shù)一;文件data_l.dbf和data_2.dbf
3.1.3查看表空間
dba_tablespaces查看所有表空間的基本信息
dba_data_files查看相關(guān)數(shù)據(jù)文件的信息
【示例:】查看所有表空間信息:
selecttablespace_name,status,allocation_typefromdba_tablespaces;
-SYSTEM.SYSAUX、UNDOTBS1.TEMP、USERS這5個衣空同是oracle數(shù)據(jù)庫自動創(chuàng)建的.
SYSTEM是最重要的表空間,其中存儲「數(shù)據(jù)庫運(yùn)行的最基本信息
SYSAUX是oradelOg的新特性,用于分擔(dān)在早期版本中SYSTEM表空間的部分工作
UNDOTBS1是系統(tǒng)回滾段表空間,用「回滾操作時(shí)的數(shù)據(jù)存儲
TEMP表空間為數(shù)據(jù)庫進(jìn)行排序運(yùn)算、索引管理、查看視圖等操作提供臨時(shí)運(yùn)算空間
USERS表空間則是整個數(shù)據(jù)庫的默認(rèn)表空間,也就是說,如果某個普通用戶創(chuàng)建時(shí)沒有為其分配表空間,則使用users這個表空間
3.1.4修改數(shù)據(jù)庫默認(rèn)表空間
【示例:】查詢每個用戶的默認(rèn)表空間
selectuserjd,username,default_tablespacefromdba_users;?初始默認(rèn)是users
【示例】修改數(shù)據(jù)庫默認(rèn)表空間
alterdatabasedefaulttablespaceuserO;
3.1.5修改表空間名稱
【示例】修改表空間名userOl為userlO
altertablespaceuserOlrenametouserlO;
查看更新后的表空間信息
altertablespace_name,status,allocation_typefromdba_tablespaces;
再次查看數(shù)據(jù)文件是否進(jìn)行了相應(yīng)的更名操作
selectfile_name,tablespace_namefromdba_data_filesorderbyfile_name;
PS:不能對數(shù)據(jù)的系統(tǒng)表空間進(jìn)行重命名
3.1.6刪除表空間
【示例】刪除表空間,此命令僅刪除數(shù)據(jù)庫中的記錄
droptablespaceuserlO;
【示例】刪除表空間及其數(shù)據(jù)文件的SQL語句
droptablespaceuserlOincludingcontentsanddatafiles;
3.2創(chuàng)建oracle數(shù)據(jù)表
3.2.1利用工具創(chuàng)建數(shù)據(jù)表
Tables>右鍵new(或新建)
3.2.2利用命令創(chuàng)建數(shù)據(jù)表
【示例】創(chuàng)建表
createtablet_user(user_idnumbernotnull,user_namevarchar2(20)notnull,user_email
varchar2(30));
323利用命令查看表垢構(gòu)
-視圖userjables,用來查看所有用戶表的基本信息
selecttable_name,tablespace_namefromuser_tableswheretable_name=upper('t_user,);
或者commandWindowF查看數(shù)據(jù)表信息:
SQL>describet_user;
或者SQL>desct_user;
33修改oracle數(shù)據(jù)表結(jié)構(gòu)
3.3.1利用工具修改數(shù)據(jù)表結(jié)構(gòu)
右擊[7LUSER]表,選擇Edit
3.3.2利用命令修改數(shù)據(jù)表結(jié)構(gòu)
【示例】修改列名USER_EMAIL為EMAIL-rename
altertablet_userrenamecoumnuser_emailtoemail;
【示例】修改列屬性USER_NAME長度,由20修改為15
altertablet_usermodify(user_namevarchar(15));-針對無數(shù)據(jù)可修改成功,若有數(shù)據(jù)且USER.NAME長度值為19.
則修改失敗
【示例】oracle一次性修改多個列-用逗號隔開
altertablet_usermodify(user_namevarchar2(15),emailvarchar2(30));
【示例】添加列-remark
altertablet_useradd(remarksvarchar2(50));
【示例】刪除列-drop
altertablet_userdropcolumnremarks;
【示例】修改表名-rename
altertablet_userrenametot_users;
3.4刪除數(shù)據(jù)表
3.4.1利用工具刪除數(shù)據(jù)表
右擊憶USER]表,選擇drop
3.4.2利用SQL語句刪除數(shù)據(jù)表
【示例】刪除數(shù)據(jù)表?普通表
droptablet_drop;
【示例】刪除數(shù)據(jù)表-含約束
droptablet_dropcascadeconstraints;
3.5備份/恢復(fù)數(shù)據(jù)表
3.5.1利用工具備份/恢復(fù)數(shù)據(jù)表
1.oracle導(dǎo)出/導(dǎo)入方式
導(dǎo)出:ToolsfExportTables—>選擇要導(dǎo)出的表一>設(shè)置oracleExport,并設(shè)置導(dǎo)出選項(xiàng)一>點(diǎn)擊
Export
導(dǎo)入:Tools->importTables—>oracleimport
2.SQL導(dǎo)出/導(dǎo)入方式
導(dǎo)出:Tools->ExportTables—>選擇要導(dǎo)出的表一>設(shè)置SQLinserts,并設(shè)置導(dǎo)出選項(xiàng)一點(diǎn)擊
Export
導(dǎo)入:Tools->importTables—>SQLinserts
3.PL/SQL導(dǎo)出/導(dǎo)入方式
導(dǎo)出:Tools->ExportTables—>選擇要導(dǎo)出的表一>設(shè)置PL/SQLDeveloper,并設(shè)置導(dǎo)出選項(xiàng)一>
點(diǎn)擊Export
導(dǎo)入:Tools->importTables—>PL/SQLDeveloper
3.5.2利用命令備份/恢復(fù)數(shù)據(jù)表
以在DOS命令行下運(yùn)行:
導(dǎo)出:expsystem/abcl23@testtables=(T_USERS)file=D:\teTip\command\T_USERS.dmp
導(dǎo)入:impsystem/abcl23@testfile=D:\temp\command\T_USERS.dmptables=T_USERS
3.6臨時(shí)表
3.6.1臨時(shí)表簡介
臨時(shí)表,存在性上,和普通表沒有任何區(qū)別。臨時(shí)性,指的是所存儲數(shù)據(jù)的臨時(shí)性。也就是說,
臨時(shí)表雖然一直存在,但其中的數(shù)據(jù)會在某種條件下被oracle數(shù)據(jù)庫自動清空。
臨時(shí)表數(shù)據(jù)清空的條件有兩種:事務(wù)提交或回滾、會話結(jié)束
Oracle是以事務(wù)為單位將數(shù)據(jù)修改提交到數(shù)據(jù)庫。每個事務(wù)以commit命令結(jié)束。事務(wù)回
滾使用rollback命令實(shí)現(xiàn)。即被commit或rollback包圍的所有數(shù)據(jù)庫操作就是一個事務(wù)。
臨時(shí)表分為兩類:事務(wù)級臨時(shí)表和會話級臨時(shí)表
事務(wù)級臨時(shí)表:當(dāng)事務(wù)提交或事務(wù)回滾時(shí),表中數(shù)據(jù)將被清空;
會話級臨時(shí)表:當(dāng)會話結(jié)束時(shí),表中數(shù)據(jù)將被清空,而且同一時(shí)刻,兩個不同會話無法訪
問彼此的數(shù)據(jù)。
3.6,2會話級臨時(shí)表
命令:createglobaltemporarytable結(jié)尾:oncommitpreserverows
【示例】創(chuàng)建名為tmp_users_session的會話級臨時(shí)表
createglobaltemporarytabletmp_users_session(user_idint,user_namevarchar2(20),user_email
varchar2(30))oncommitpreserverows;
說明:oncommitpreserverows表示當(dāng)事務(wù)提交時(shí),保留數(shù)據(jù)。即今整個會話中,數(shù)據(jù)庫不會自動清理表中數(shù)
據(jù)
(1)插入數(shù)據(jù)--insertinto命令
(2)查詢數(shù)據(jù)一數(shù)據(jù)存在
(3)commit提交
(4)再次查詢數(shù)據(jù)一數(shù)據(jù)存在
(5)重新打開SQLWindow窗口
(6)在新的窗口查詢數(shù)據(jù)一結(jié)果為空
(7)關(guān)閉并重新打開PL/SQL,查詢表數(shù)據(jù)一結(jié)果為空
3.6.3事務(wù)級臨時(shí)表
命令:createglobaltemporarytable結(jié)尾oncommitdeleterows
【示例】創(chuàng)建事務(wù)級臨時(shí)表:tmp_users_transaction
createglobaltemporarytabletmp_users_transaction(user_idint,user_name
varchar2(20),user_emailvarchar2(30))oncommitdeleterows;
說明:oncommitdeleterows表示提交時(shí)刪除表中記錄:
(1)插入數(shù)據(jù)-insertinto命令
(2)查詢數(shù)據(jù)一數(shù)據(jù)存在
(3)commit提交
<4)再次查詢數(shù)據(jù)數(shù)據(jù)為空
(5)再次執(zhí)行插入數(shù)據(jù)一inserrinto命令
(6)查詢數(shù)據(jù)一數(shù)據(jù)存在
(7)rollback;后查詢數(shù)據(jù)一結(jié)果為空
3.6.4查看臨時(shí)表在數(shù)據(jù)庫中的信息
selecttable_name,tablespace_namefromuser_tableswheretable_name=*T_USERS'or
table_name='TMP_USERS_SESSION'or='TMP_USERS_TRANSACTION,;
TABLENAME?TABLESPACENAME
[TMP_USERS_SESSION
TMP_USERS_TRANSACTION
TUSERSTBS_DATA
可以看出,臨時(shí)表表空間為空
【示例】通過SQL查詢兩個臨時(shí)表的不同(duration用來區(qū)分臨時(shí)表的具體類型):
selecttable_name,temporary,durationfromuser_tableswheretable_name='T_USERS'or
table_name='TMP_USERS_SESSION'ortable_name='TMP_USERS_TRANSACTION,;
TABLENAME(TEMPORARYDURATIONI
?I|TMP_USERS_SESSION二7SYSS|SESSION
2TMP_USERS_TRANSACTIONYSYSSTRANSACTION
3T_USERS--N
3.6.5臨時(shí)表的應(yīng)用場景
1.大表分割
2.解決并行問題
3.作為數(shù)據(jù)緩存
3.7特殊的表dual
3.7.1分析dual表
SQL>descdual;
--dual僅有一列dummy
SQL>select*fromdual;
一結(jié)果為一列:X
3.7.2dual表的應(yīng)用場景
dual表實(shí)際上是作為?個虛表的概念存在的。select語句中from指向的表示必需的,所以即使某些數(shù)據(jù)不屬于任何友,也必須有
個強(qiáng)制的表名,dual可用作這個強(qiáng)制的虛表。
【示例】使用dual表獲得當(dāng)前日期
selectsysdatefromdual;
-2020/11/1218:36X)7
【示例】使用dual進(jìn)行數(shù)學(xué)運(yùn)算
select3*4+17fromdual;
-29
【示例】使用dual表實(shí)現(xiàn)序列的運(yùn)算
selectt_user_sql.nextvalfromdual;
3.73修改dual表對查詢結(jié)果的影響
-10g后版本,無論dual表做了哪些修改,使用效果仍和單條記錄一樣
Wh
insertintodualvalues('Y');-SYS用戶下插入條數(shù)據(jù)
select*fromdual;-杳詢結(jié)果為2美:X、Y
selectsysdatefromdual;一返回當(dāng)前時(shí)間,證明新增對油火無影響
deletefromdual;?加除dual表中數(shù)據(jù)
select*fromdual;“查詢?yōu)榭?/p>
selectsysdatefromdual;一返回"1期時(shí)間,證明刪除對結(jié)果無影響
4.約束
約束的根本目的在于保持?jǐn)?shù)據(jù)的完整性。數(shù)據(jù)完整性是指數(shù)據(jù)的精確性和可靠性。即數(shù)據(jù)庫中
的數(shù)據(jù)都符合某種預(yù)定義規(guī)則。
4.1主鍵約束
主鍵約束可以保證數(shù)據(jù)完整性,即防止數(shù)據(jù)表中的兩條記錄完全相同,通過將主鍵納入查詢條
件,可以達(dá)到查詢結(jié)果最多返回一條記錄的目的。
4.1.1主鍵簡介
主鍵被創(chuàng)建在一個或多個列上,通過這些列的值或者值的組合,唯一的標(biāo)識一條記錄。
對于主鍵,有以下幾點(diǎn)需要注意:
主鍵列的數(shù)據(jù)類型并不一定是數(shù)值型
主鍵列不一定只有一列
主鍵是規(guī)則制定者的意志體現(xiàn),不要將其與現(xiàn)實(shí)世界混淆
4.1.2創(chuàng)建主鍵約束
主健約束可以在創(chuàng)建表的同時(shí)進(jìn)行創(chuàng)建,也可.以在表存在時(shí)進(jìn)行添加。
1.創(chuàng)建主鍵約束
創(chuàng)建主鍵約束使用關(guān)鍵字primarykey
【示例】只有一列的主鍵
createtablestudent(student_idnumberprimarykey,studen:_namevarchar2(2O),student_birthday
date,student_addressvarchcr2(50),student_phonevarchar2(20));
2.查看主鍵約束
所有用戶創(chuàng)建的主鍵的基本信息都存儲在表user_constraint表中。所有的約束都是依附于表存在的,所以每
個約束肯定隸屬于唯一確定的表
【示例】查看表student的約束
selecttable_name,constraint_name,constraint_typezstatusfromuser_constraintswhere
table_name='STUDENT';
table_name:存儲「衣明信息
constraint_name:存儲了約束名信息
constraint_type:存儲了約束類型(P表示primarykey)
status約*的當(dāng)前狀態(tài)(enabled表示約束可用)
還可以通過查看視圖userconscolumns來獲得土鍵被建立在哪些列之上
【示例】獲得主鍵的作用列
selectconstraint」ame,table_name,column_namefromuser_cons_columnswhere
constraint_name='SYS_C0011156,;
constraint_name:約束名
columnname:該約束被建M在哪些列上
3.測試主鍵約束
studentjd不能重復(fù)
4.顯示命名主鍵約束
默認(rèn)主鍵約束名稱為SYS開頭,這樣不利于識別
createtablestudent2(student_idnumberconstraintpk_studentprimarykey,student_name
varchar2(20));
constraint:創(chuàng)建約束
pk_student:指定約束名
primarykey:指定約束的類型為主鍵
5.創(chuàng)建主鍵的另一種寫法-和其他列的描述是并列關(guān)系,用逗號進(jìn)行分隔
createtablestudent(studentjdnumber,student_namevarchar2(20),constraintpk_studentprimary
key(studentjd));
6.創(chuàng)建多列主鍵-多個列名,用逗號隔開
createtablestudent(studentjdnumber,student_namevarchar2(20),constraintpk_studentprimary
key(student_id,student_name));
4.1.3修改表的主鍵約束
1.【示例】為表添加主鍵一實(shí)際就是修改列
altertablestudentmodify(studentjdnumberprimarykey);
2.【示例】要添加的上鍵作用于多個列
altertablestudentaddconstraintpk_studentprimarykey(student_namezstudent_birthday);
3.【示例】刪除主鍵
altertablestudentdropprimarykey;.這口是因?yàn)閭€表的主鍵是咱的,所以無需指定主鍵名
【示例】刪除約束的語法刪除主鍵
altertablestudentdropconstraintpk_student;
4.【示例】禁用主鍵
altertablestudentdisableprimarykey;
【示例】啟用主鍵
altertablestudentenableprimarykey;--,F(xiàn),斯A;用刑氓先校驗(yàn)教捌是叩-的
5.【示例】重命名主鍵
altertablestudentrenameconstraintSYS_C005145topk_stLdent;
4.1.4主鍵應(yīng)用場景
1.對于完整性要求比較高的數(shù)據(jù)表都應(yīng)該建立主鍵
2.對于經(jīng)常按照某列進(jìn)行杳詢的數(shù)據(jù)表,應(yīng)該考慮建立主鍵
3.考慮是否對外鍵有利
4.2外鍵約束
4.2.1外鍵簡介
外鍵實(shí)際是一種關(guān)聯(lián),描述了表之間的父子關(guān)系。即子表中的某條數(shù)據(jù)與父表中的某條數(shù)據(jù)有
著依附關(guān)系。當(dāng)父表中的某條數(shù)據(jù)被刪除或進(jìn)行更改時(shí),會影響子表中的相應(yīng)數(shù)據(jù)。
4.2.2創(chuàng)建外鍵約束
創(chuàng)建外鍵,首先在父表中創(chuàng)建主鍵,因?yàn)楫?dāng)使用外鍵尋找主鍵時(shí),必須要找到唯一一條,所以
必須在父表中使用主鍵來標(biāo)識記錄的唯一性。
1.建立外鍵
(1)創(chuàng)建兩張表
createtablecustomers(customerjdnumberprimarykey,customer_namevarchar2(50),
customer_addressvarchar2(50),customer_phonevarchar2(20),emailvarchar2(20));
createtableorders(orderjcnumberprimarykey,customer_idnumber,goods_namevarchar2(2O));
(2)【示例】建立orders表到customers表的外鍵關(guān)聯(lián)
altertableordersaddconstraintfk_orders_customersforeignkey(customerjd)references
customers(customerjd);
fk_orders_customers:新建外鍵名稱
foreignkey指定創(chuàng)基的約束是一個外攝
customer.id:[指定了在本表,即orders發(fā)中使用的列
referencescustomers指定f要關(guān)聯(lián)到的表
customerid:制定了在customers表口被關(guān)聯(lián)的列
2.查看外鍵信息
【示例】查看。rders表的外鍵信息
selecttable_name,constraint_name,constraint_type,r_constraint_namefromuser_constraints
wheretable_name=upperforders');
TABLKNAh4E々CONSTRAINT一NAME」CONSTRAINTJYPETR_CON$CRAINTNAM.能一算該折回去我的再鋪為柬:名)
-TORDERSSYS_C0011184P
?JJORDERSFK.ORDERS.CUSTOMERS艮R:戒型束<SYS.C0011183
-查看關(guān)聯(lián)信息
select*fromuser_constraintswhereconstraint_name='SYS_C0011183’
說明:orders的外鍵FK_ORDERS_CUSTOMERS關(guān)聯(lián)到表CUSTOMERS的主鍵上
3.驗(yàn)證外鍵約束的有效性
前提:兩個表數(shù)據(jù)均為空:
insertintoordersvalues。,L'AAA');-插入失敗.提?。哼`反完整約束條件
insertintocustomersvalues(l/CUSAA7CUSAA地址','123456','CUSAA@');-插入父表數(shù)據(jù)
重新執(zhí)行插入數(shù)據(jù)到orders;-插入數(shù)據(jù)成功
4.修改子表數(shù)據(jù),驗(yàn)證外健有效性
單獨(dú)修改子表和父表customer_id會提示失敗:違反完整性約束條件
刪除父表數(shù)據(jù)或刪除父表customers,也會提示失?。哼`反完整性約束條件
423級聯(lián)更新與級聯(lián)刪除
級聯(lián)更新:是指當(dāng)父表中的主鍵列進(jìn)行修改時(shí),子表的外鍵列也應(yīng)該進(jìn)行相應(yīng)的修改。
級聯(lián)刪除:當(dāng)父表中的記錄刪除時(shí),子表中與之相關(guān)的子記錄也應(yīng)該同時(shí)刪除。
外鍵約束之所以會限制父表與子表的更新,是以為數(shù)據(jù)完整性校驗(yàn)無法通過。該校驗(yàn)有兩種類
型:即時(shí)校驗(yàn)(immediate)和延遲校驗(yàn)(deferred)o默認(rèn)為即時(shí)校驗(yàn)
1.級聯(lián)更新-先設(shè)置外鍵延遲校驗(yàn),然后分別修改匕表和廣衣的外鍵列值
【示例】創(chuàng)建延遲校驗(yàn)的外鍵約束
altertableordersaddconstraintfk_orders_customersforeignkey(customerjd)references
customers(customer_id)deferrableinitiallydeferred;
說明:deferrable用于控制約束校驗(yàn)是否可以執(zhí)行延遲校驗(yàn),默認(rèn)是notdeferrable
Initially用于指定在什么時(shí)刻進(jìn)行校驗(yàn),有兩個值:immediate表示在每條語句力結(jié)尾)檢查約束:deferred表示在事務(wù)結(jié)尾檢ft約
束:
驗(yàn)鬲-可以更新成功
updatecustomerssetcustomerjd=3wherecustomer_id=1;
updateorderssetcustomerjd=3wherecustomerjd=1;
commit;
2.級聯(lián)刪除
ondeletecascade指定創(chuàng)建的外鍵實(shí)現(xiàn)級聯(lián)刪除,即刪除主表的記錄時(shí),子表中的子記錄可以
被自動刪除
【示例】創(chuàng)建級聯(lián)刪除的外鍵約束
altertableordersaddconstraintfk_orders_customersforeignkey(customerjd)references
customers(customerjd)ondeletecascade;
演示:deletefromcustomerswherecu;tomer_id=3-刪除成功
4.2.4修改外鍵屬性
1.【示例】重命名外鍵
altertableordersrenameconstraintfk_orders_customerstofk_orders;
2.禁用和啟用外鍵約束
altertableordersmodifyconstraintfk_ordersdisable;--禁用約束
selectconstraint_name,statusfromuser_constraintswhereconstraint_name='FK_ORDERS';--jVi外
鍵是否可用
altertableordersmodifyconstraintfk_ordersenable;--啟用約束
3.是否對已有數(shù)據(jù)進(jìn)行校驗(yàn)-novalidate/validate
altertableordersmodifyconstraintfk_ordersenablenovalidate;—用novaiidate,使oracle不對已有數(shù)據(jù)進(jìn)行校
噲
4.2.5外鍵使用
需要注意:
1.嚴(yán)格遵守父子關(guān)系的數(shù)據(jù)表應(yīng)該使用外鍵;
2.將應(yīng)用程序中的父子關(guān)系轉(zhuǎn)移到外鍵約束;
3.不要過分使用外鍵;
43唯一性約束
使用唯一性約束的列或列的組合,其值或值的組合必須是唯一的。
4.3.1唯一性約束簡介
主鍵是記錄唯一性的保證,但是一個表只有一個主鍵,但是很多時(shí)候,對于其他列同樣要求列
值唯一。
可以理解為:主鍵設(shè)計(jì)為標(biāo)識唯一一條記錄,而唯一性約束則設(shè)計(jì)為保證列自身值的唯一性。
4.3.2創(chuàng)建唯一性約束
1.創(chuàng)建唯一性約束-unique
【示例】創(chuàng)建表時(shí)添加唯一性約束
createtableusers(useridnumberprimarykey,user_namevarchar2(50),user_address
varchar2(50),user_phonevarchar2(20)unique)
2.查看唯一性約束
selecttable_name,constraint_name,constraint_type,statusfromuser_constraintswhere
table_name=upper('users');
TABLENAME(CONSTRAINTNAME?CONSTRAINTTYPE(STATUSI
f
1USERSw10011154…pENABLED
p-『SYS_CO(il1255
2USERSuJENABLED
查看該約束所作用的列
selectconstraint_name,column_namefromuser_cons_columnswhereconstraint_name=
'SYS_COO11255';--看到作用的列是:user_phone
3.驗(yàn)證唯一性約束
表中插入兩條記錄,usejphone值一樣,會提示錯誤:違反唯一性約束
4.3.3修改唯一性約束
1.【示例】添加唯一性約束
altertableusersaddconstraintuq_phoneunique(user_phone);
2.【示例】刪除唯一性約束
altertableusersdropconstraintuq_phone;
3.【示例】重命名唯一性約束
altertableusersrenameconstraintSYS_C0011255touq_phone;-SYS_COOII255原始Z稱.uqphons目標(biāo)名
稱
4.禁用/啟用唯一性約束
altertableusersdisableconstraintuq_phone;
或者.altertableusersmodifyconstraintuq_phoneenable;
4.3.4唯一性約束的使用
唯一性約束可以在列或者列的組合上,可以作為主鍵約束的補(bǔ)充。
4.4檢查約束
4.4.1檢查約束簡介
檢查約束對列值進(jìn)行限制,將表中的一列或多列限制在某個范圍內(nèi)。
4.4.2創(chuàng)建檢查約束
使用選項(xiàng)check
【示例】創(chuàng)建單科成績不超過100分的檢管約束
createtablestudents(student_idnumberprimarykey,student_namevarchar2(20),subject
varchar2(20),scorenumberconstraintchk_scorecheck(scorebetween0and100));
insertintostudentsvalues(l「AA','數(shù)學(xué)',100);-插入成功
insertintostudentsvalues(2/BB','語文',101);--插入失敗,違反檢查約束條件
【示例】檢查約束也可以是立在多列之上:限制職位薪資
createtableemployees
(employeejdnumberprimarykey,
employee_namevarchar2(20),
gradevarchar2(10),
salarynumber,
constraintchk_salarychecklgradein('MANAGER'/LEADER',STAFF')and(grade='MANAGER'and
salary<=8000orgrade="LEADER'andsalary<=5000orgrade='STAFF'andsalary<=4000)));
限制:?.grade值必須為WANAGER'「LEADER;STAFF中一個,②.salary不同職位的薪資上限
insertintoemployeesvalues'MANAGER','7800');-插入成功
insertintoemployeesvalues(2,'BB','CEO'/7800’);.失敗,違反①
insertintoemployeesvalues(3「CC','MANAGER','8800');-失敗,違反②
4.4.3修改檢查約束
1.【示例】添加約束
avertableemployeesaddconstraintchk_namecheck(length(employee_name)<=4);-empioyee_name
長度不超過4
2.【示例】刪除檢查約束
altertableemployeesdropconstraintchk_name;
3.【示例】重命名檢查約束
altertableemployeesrenameconstraintchk_salarytochk_grade_salary;
4.【示例】禁用/啟用檢查約束
altertableemployeesdisableconstraintchk_grade_salary;
或者altertableemployeesmodifyconstraintchk_grade_salarydisable;
--啟用時(shí),將disable換成enable
4.4.4檢查約束的使用
4.5默認(rèn)值約束
為列指定默認(rèn)值的操作即為設(shè)置默認(rèn)值約束。
4.5.1默認(rèn)值約束簡介
?旦設(shè)定默認(rèn)值約束,該列將使用默認(rèn)值賦值作為空值的替代值。
452創(chuàng)建默認(rèn)值約束
1.【示例】創(chuàng)建默認(rèn)值約束
createtablepurchase_order(purchase_order_idnumber,goods_namevarchar2(30),quantity
number,pricenumber;statusvarchar2(3)default'ACT');
2.【示例】查看默認(rèn)值約束的信息
selecttable_name/column_namezdata_type/data_lengthzdata_defaultfromuser_tab_columns
wheretablename=upper('purchaseorder')andcolumnname='STATUS'
3.【示例】默認(rèn)值的使用
insertintopurchase_order(purchase_order_idzgoods_name/quantity,price)values(2/'BB'/55/44);
結(jié)果:
斗8Ff”9上??小
PURCHASEORDERJDlGOODS_NAMEIQUANTITYIPRICE[STATUSI
T|___1AA-100S2
>2][2BB-E44ACT:
4.【示例】使用函數(shù)作為默認(rèn)值-如:sysdate
altertablepurchase_orderadd(purchase_datedatedefaultsysdate);??插入列purchase_date.默認(rèn)為之前時(shí)
間
,
insertintopurchase_order(purchase_order_id,goods_name,quantity,price)values(3/CC'/33,33);-Mi
入數(shù)據(jù)
檢查:select*frompurchase_order;
PUfUHASE.OAOOtjDIGOOOS.NAMSQUANTITYlRK((STATlAIPUtCHAU.OATl
?ll:AA100MX120/11/141933X12?
dl-撫,T蓊算。就;制痂i
4.5.3修改默認(rèn)值約束
1.添加默認(rèn)值約束
默認(rèn)值約束實(shí)際是列級約束,所以只能在修改列的同時(shí),為列添加默認(rèn)值
【示例】為己有表添加默認(rèn)值約束
altertablesalesmodifyquantitynumberdefault1;
2.刪除默認(rèn)值約束
altertablesalesmodifyquantitynumberdefaultnull;
3.修改默認(rèn)值
altertablesalesmodifysales_datedefaulttrunc(sysdate/DDz);-defaulttruncfsysdate/DD^w;甫設(shè)默認(rèn)他.新的
默認(rèn)值將截?cái)嗳掌?即時(shí)間都使用日:00
5.視圖
視圖是數(shù)據(jù)庫中特有的對象。視圖用于存儲查詢,但不會存儲對象(物化視圖除外)。
5.1關(guān)系視圖
是四種視圖中最簡單、同時(shí)也最常用的視圖。它的輸出可以看做是一個虛擬的表,該表的數(shù)據(jù)
是由其他基礎(chǔ)數(shù)據(jù)表提供的。
5.1.1建立關(guān)系視圖
1.創(chuàng)建關(guān)系視圖
1>>創(chuàng)建表
createtableemployees(employeejdnumberprimarykeyzfirst_namevarchar2(4)Jast_name
varchar2{4),provincevarchar2(10),cityvarchar2(10)zsalarynumber);
insertintoemployeesvalues。,'張','軍':廣東深圳',3000);
EMPLOYEEID1FIRSTNAME-(LASTNAMEIPROVINCEICITYISALARY
>11張軍Eaura3000
2劉M廣樂廣然4000
3王fra建M3600
4冏tt4000
一5$后OM屯2900
2>>創(chuàng)建員工視圖,直接查詢員工姓名與所在地
createviewvm_empolyeesas
selectt.employee_id,t.first_name11t.last_nameasemploYee_name,vince||||t.cityas
locationfromemployeest;-create&示創(chuàng)建視圖,as關(guān)鍵字入示其后的ff沏治句為視圖定義
2.查看視圖定義-usejviews可用于查詢所有用戶創(chuàng)建的視圖定義
selecttextfromuser_viewswhereview_name=upper('vm_empolyees');
3.查看視圖內(nèi)容
select*fromvm_empolyees;
IEMPLOYEENAMEllOCADON
112F座耶
22劉朝F?廣州
33王f
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中學(xué)安全教育考試題及答案
- 新疆昌吉回族自治州木壘縣中2024-2025學(xué)年高二下生物期末質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 天津市薊州區(qū)2024-2025學(xué)年數(shù)學(xué)高二下期末調(diào)研試題含解析
- 城市更新項(xiàng)目廠房土地購置及開發(fā)合作合同
- 休閑農(nóng)業(yè)場地外包租賃合同范本
- 農(nóng)業(yè)銀行信用的借款合同(6篇)
- 愛崗敬業(yè)個人先進(jìn)事跡(3篇)
- 員工配車公司管理制度
- 公路實(shí)施方案的試題及答案
- 公路工程定額分析試題及答案
- 華興報(bào)告生物育種:前沿生物技術(shù)改造下的新農(nóng)業(yè)
- 四川玖誼源粒子科技有限公司回旋加速器生產(chǎn)及同位素應(yīng)用研發(fā)基地環(huán)境影響報(bào)告表
- 樓頂發(fā)光字制作安裝合同
- 中德材料中英文對照
- 個人租房合同協(xié)議書電子版免費(fèi)下載7篇
- 帶電流互感器三相四線有功電表的接線演示文稿
- 2023年高考全國甲卷數(shù)學(xué)(理)試卷【含答案】
- 市政道路工程重大危險(xiǎn)源清單
- 年新增30000噸精制棉改擴(kuò)建項(xiàng)目環(huán)境影響報(bào)告書
- 水質(zhì)總氮測定圖片集
- 2023年安徽ACM省賽試題
評論
0/150
提交評論