




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、目錄第1章Oracle數據庫安裝配置31.1 配置監聽程序31.2 配置網絡服務名4第2章管理用戶訪問42.1表空間、用戶及方案概述42.2用戶訪問52.3創建用戶62.4修改用戶62.5 鎖定用戶賬戶72.6 解鎖用戶賬戶72.7 默認角色72.8 授予用戶訪問權72.9撤消用戶92.10廢除用戶訪問92.11創建角色92.12 新建的用戶怎樣才能成功創建一個表10第3章建立和管理表113.1簡介123.2建表133.3修改表143.4截斷和刪除表143.5顯示表信息15第4章 Oracle操作符16第5章 基本查詢195.1簡單查詢語句195.2排序數據21第6章 復雜查詢226.1數據分
2、組226.2連接查詢236.3相等連接(包括SQL:1999標準內連接、自然連接)246.4不等連接246.5自連接246.6內連接和外連接24內連接25左外連接25右外連接25完全外連接256.7子查詢25單行子查詢(單列)25多行子查詢(單列)25多列子查詢26其他子查詢266.8使用集合操作符27第7章 常用SQL函數27第8章 操縱數據418.1插入數據418.2更新數據438.3刪除數據44第9章 使用事務459.1概述469.2事務分類469.3回復修改479.4回復部分事務489.5事務和鎖49第10章 使用約束4910.1約束簡介4910.2定義約束5010.3維護約束5110
3、.5顯示約束信息52第11章 使用視圖5311.1視圖簡介5311.2建立視圖5411.3維護視圖5511.4顯示視圖信息55第12章 使用其它對象(索引序列同義詞)5612.1使用索引56建立索引57維護索引57顯示索引信息5811.2使用序列5811.21建立序列58使用序列58維護序列59顯示序列信息5911.3使用同義詞59建立同義詞59刪除同義詞59第13章 PL/SQL語句6013.1 PL/SQL簡介6013.2 PL/SQL塊62定義并使用變量63異常64游標6713.3過程函數包71第14章 過程函數包及觸發器7114.1過程71建立過程71顯示過程代碼7214.2函數72建
4、立函數72刪除函數73顯示函數代碼7314.3包73建立包規范73建立包體74刪除包75顯示包代碼7514.4觸發器75語句觸發器75行觸發器76使用觸發器的注意事項77編譯觸發器77刪除觸發器77顯示觸發器代碼77第十五章 使用EXP和IMP7715.1使用EXP78導出表78導出方案78導出數據庫7815.2使用IMP78導入表79導入方案79導入數據庫79第1章Oracle數據庫安裝配置當安裝Oracle Database時,如果沒有建立數據庫,在安裝完成之后可以使用DBCA工具建立數據庫。數據庫配置助手(Database Configuration Assistant)用于建立數據庫、
5、配置數據庫選項、刪除數據庫和管理模板。當建立了Oracle數據庫之后,為了使得服務器端可以監聽該Oracle數據庫,必須配置監聽程序。為了使得客戶端可以訪問該數據庫,必須在客戶端配置網絡服務名。只有合理地配置了監聽程序和網絡服務名之后,客戶應用才能訪問該數據庫。配置監聽程序和網絡服務名可以使用網絡管理工具Net Manager完成。(源碼網整理:)1.1 配置監聽程序監聽程序用于接收客戶端的連接請求。當客戶應用訪問Oracle Server時,監聽程序會接收并檢查連接請求,以確定是否可以為該客戶應用提供數據服務。在建立了Oracle數據庫之后,為了使得客戶應用可以訪問Oracle數據庫,必須在
6、監聽程序中追加該數據庫。一個監聽程序可以監聽多個Oracle數據庫,多個監聽程序也可以監聽同一個Oracle數據庫。當安裝數據庫產品時,會自動建立默認監聽程序LISTENER。配置監聽程序的具體步驟如下:l 展開監聽程序,并選中LISTENER節點,此時在NET MANAGER窗口右端會顯示默認監聽位置,其中“協議”用于指定監聽程序要使用的網絡協議(默認為TCP/IP);“主機”用于指定服務器所在機器的主機名或IP地址;“端口”用于指定監聽程序要使用的TCP/IP端口號(默認1521)。l 在Net Manager窗口上端的下拉列表中選擇數據庫服務,此時會顯示默認的數據庫配置,“全局數據庫名”
7、用于指定數據庫的全局數據庫名;“Oracle主目錄”用于指定Oracle數據庫軟件的安裝路徑;“SID”用于指數據庫例程名。為了監聽新建的數據庫(如DEMO),必須追加該數據庫。l 單擊“添加數據庫”按鈕,然后進行相應配置,在“全局數據庫名”處輸入DEMO數據庫的初始化參數SERVICEHOME所對應的值,在SID處輸入DEMO數據庫的例程名。配置了監聽程序之后,保存網絡配置信息。l 保存了監聽程序配置之后,為了使得其網絡配置生效,必須重新啟動監聽程序。(通過服務器管理器重新啟動監聽程序)1.2 配置網絡服務名l 選中“服務命名”,然后單擊+按鈕,此時會顯示“Net 服務名”界面,建議使用數據
8、庫名作網絡服務名。l 選取與監聽程序一致的網絡協議“TCP/IP”。l 指定數據庫所在主機名及其監聽端口號。l 指定監聽程序所配置的全局數據庫名或者SID。l 測試網絡服務名配置是否成功,如果成功則表示網絡服務名配置正確。l 完成網絡服務名配置之后,保存網絡配置信息。第2章管理用戶訪問本章主要內容:l 表空間、用戶及方案概述l 用戶訪問l 創建用戶l 修改用戶l 授予用戶訪問權l 撤消用戶l 廢除用戶訪問l 創建角色2.1 表空間、用戶及方案概述表空間是數據庫的邏輯組成部分。從物理上說,數據庫數據存放在數據文件中;從邏輯上說,數據庫數據存放在表空間(tablespace)中,并且表空間是由一個
9、或多個數據文件組成的。一個表空間是由一個或多個數據文件組成的。用戶(也稱為帳戶)是定義在數據庫中的一個名稱,它是Oracle數據庫的基本訪問控制機制。當連接到Oracle數據庫時,默認情況下必須要提供用戶名和口令。只有在輸入了正確的用戶名和口令之后,才能夠連接到數據庫,并執行各種管理操作和數據訪問操作。方案(Schema)是用戶所擁有數據庫對象的集合。在Oracle數據庫中對象是以用戶來組織的,用戶與方案是一一對應的關系,并且二者名稱相同。例SCOTT用戶所擁有的所有對象都屬于SCOTT方案,而SYSTEM用戶所擁有的所有對象都屬于SYSTEM方案。當訪問數據庫對象時,有一些注意事項:l 在同
10、一個方案中不能存在同名對象,但不同方案可以具有同名對象。l 用戶可以直接訪問其方案對象,但如果要訪問其他方案對象,則必須具有對象權限。如用戶SCOTT可以直接查詢其方案表EMP,但如果用戶SMITH要檢索SCOTT方案的表EMP,則必須在EMP表上具有SELECT對象權限。l 當用戶訪問其他方案對象時,必須加方案名為前綴。例,如用戶SMITH要訪問SCOTT方案的EMP表,則必須使用SCOTT.EMP。2.2 用戶訪問在多用戶環境里,一個數據庫可能有多個用戶同時在訪問。當有不同的用戶同時訪問數據庫時,保護數據庫安全,防范非授權訪問非常重要。因此,必須在數據庫里創建用戶,并為用戶指定用戶名和密碼
11、,這樣可以保證只有經過授權的,即有正確用戶名和密碼的用戶才能訪問數據庫。數據庫管理員(DBA)是最高級別的用戶,他可以創建其他用戶。在創建了用戶后,DBA需要按用戶的需求為用戶分配權限。權限指用戶執行特定語句的許可,這意味并非所有用戶都被允許修改重要數據。例如,某個用戶可能只需要有連接數據庫和查詢某些表的記錄的權限。類似地,另一個用戶可能要求有創建和修改表的權限。DBA有訪問數據庫的一切權限,并有權為其他用戶分配權限。下表列出了部分DBA權限:DBA權限有權執行CREATE USER創建新用戶DROP USER撤消用戶DROP ANY TABLE撤消表BACKUP ANY TABLE為表制作備
12、份SELECT ANY TABLE查詢數據庫對象,如表和視圖CREATE ANY TABLE創建表為了維護存儲在數據庫中數據的安全,Oracle提供了以下數據庫安全措施:l 管理和控制數據庫訪問l 用Oracle數據字典驗證權限l 為指定用戶提供對數據庫特定對象(表、視圖和序列等)的訪問l 為數據庫對象提供同義詞可被數據庫操作采用的數據庫的安全策略包括:l 系統安全:系統安全涉及系統級的訪問,如允許用戶通過指出用戶名和密碼連接Oracle,為用戶分配磁盤空間,限定用戶所能執行的操作。用戶能執行的操作包括:查詢數據庫對象的內容、創建數據庫對象和更改數據庫對象。l 數據安全:數據安全涉及對數據庫對
13、象的訪問和使用,以及用戶在數據庫對象上所擁有的權限的程度。2.3 創建用戶CREATE USER語句用于創建新用戶。在創建新用戶時,必須為新用戶指定用戶名和密碼。為了使新用戶能登錄服務器和訪問數據庫,DBA必須顯式地為用戶分配權限。只有擁有CREATE USER權限的用戶才能創建新用戶。例如,DBA創建了新用戶Susan,但Susan無權創建其他新用戶。只有當Susan有了CREATE USER這個權限后,她才能創建別的新用戶。創建用戶的語法示例:CREATE USER user IDENTIFIED BY passwordDEFAULT TABLESPACE data01TEMPORARY
14、TABLESPACE tempQUOTA 3M ON data01PASSWORD EXPIRE;其中IDENTIFIED BY用于指定用戶口令;DEFAULT TABLESPACE用于指定用戶的默認表空間,當建立表或者索引時,如果不指定TABLESPACE子句,那么Oracle會自動在默認表空間上為這些對象分配空間;TEMPORARY TABLESPACE用于指定用戶的臨時表空間,當用戶執行排序操作時,或臨時數據超過PGA工作區,則會在該表空間上建立臨時段;QUOTA用于指定表空間配額,即用戶對象在表空間上可占用的最大空間;PASSWORD EXPIRE用于指定終止口令,最終強制用戶在登錄時
15、改變口令。當建立了新用戶之后,需要注意以下問題:l 初始創建的數據庫用戶沒有任何權限,不能執行任何數據庫操作。l 如果在建立用戶時不指定DEFAULT TABLESPACE子句,那么Oracle會將數據庫默認表空間作為用戶的默認表空間。在Oracle Database 10g之前,如果不指定DEFAULT TABLESPACE子句,那么Oracle會將SYSTEM表空間作為用戶的默認表空間。l 如果在建立用戶時不指定TEMPORARY TABLESPACE子句,那么Oracle會將數據庫默認臨時表空間作為用戶的臨時表空間。l 如果在建立用戶時沒有為特定表空間指定QUOTA子句,那么用戶在特定表
16、空間上的配額為0,這樣用戶將不能在相應表空間上建立數據對象。2.4 修改用戶修改用戶信息是使用ALTER USER命令完成的。一般情況下,該命令是由DBA來執行的,如果以其他用戶身份修改用戶信息,必須要具有ALTER USER系統權限。1修改口令創建用戶時為每個用戶指定一個初始密碼。之后可修改密碼,修改密碼的方法有兩種:l 管理員修改:ALTER USER user IDENTIFIED BY password;(password為用戶的新密碼)l 用戶自己修改:用戶登錄后輸入命令:PASSWORD;修改表空間配額表空間配額用于限制用戶對象在表空間上可占用的最大空間。如果用戶對象己經占滿了表空
17、間配額所允許的最大空間,那么該用戶將不能在該表空間上分配新的空間。此時如果執行了涉及到空間分配的SQL操作(如INSERT、UPDATE、CREATE TABLE等),則會顯示錯誤,修改表空間語法:ALTER USER user QUOTA 10M ON data01;2.5 鎖定用戶賬戶為了禁止特定數據庫用戶用戶訪問數據庫,DBA可以鎖定用戶賬戶,ALTER USER user ACCOUNT LOCK;2.6 解鎖用戶賬戶為了使得數據庫用戶可以訪問數據庫,DBA可以解鎖用戶賬戶。ALTER USER user ACCOUNT UNLOCK;2.7 默認角色當將多個角色授予數據庫用戶之后,通
18、過使用ALTER USER 命令可以設置用戶的默認角色。(當為用戶指定了默認角色后,以該用戶身份登錄時會自動激活其默認角色,并不激活非默認角色)ALTER USER user DEFAULT ROLE select_role;補充: 默認角色和非默認角色的區別是什么? 這個理解有多種,第一種:默認角色可以是我們創建數據庫就可以見的connect/dba等,非默認角色需要我們自己創建;第二種:一個用戶可以有多個角色,默認的角色登錄即生效,非默認的需要激活才能使用。 默認角色和權限集是Oracle安裝過程中預先定義的。每個版本的默認角色都有所變化。CREATE USER SMIS IDENTIFI
19、ED BY SMIS;grant dba,connect to SMIS;create role r_px; grant r_px to SMIS;select * from dba_role_privs where grantee='SMIS'alter user SMIS default role all except r_px;select * from dba_role_privs where grantee='SMIS'2.8 授予用戶訪問權用戶創建后,數據庫管理員需要為他分配權限。權限關系到數據庫的安全,它決定了用戶在數據庫上所能執行的操作。GRAN
20、T語句用于為用戶分配權限。語法如下:GRANT privilege TO user; 注釋:授予所有系統權限GRANT ALL PRIVILEGES to test_2;注釋:授予所有對象權限 GRANT ALL PRIVILEGES ON DEMO.DEPT TO TEST_1;可分配給用戶的權限有:l 系統權限:允許用戶訪問數據庫的權限稱為系統權限。l 對象權限:允許用戶在數據庫對象上執行查詢、更新、刪除或添加數據等操作的權限,此稱為對象權限。常用的系統權限有:系統權限有權執行CREATE SESSION連接數據庫CREATE TABLE創建表CREATE VIEW創建視圖CREATE P
21、UBLIC SYNONYM建立同義詞CREATE SEQUENCE創建序列CREATE PROCEDURE建立過程、函數和包CREATE TRIGGER建立觸發器CREATE CLUSTER建立簇CREATE TYPE建立對象類型CREATE DATABASE LINK建立數據庫鏈另外,Oracle還提供了一類ANY系統權限,當用戶具有該類系統權限時,可以在任何方案中執行相應操作。例如,如果用戶具有SELECT ANY TABLE系統權限,那么用戶可以查詢任何方案的表(除數據字典基表和數據字典視圖DBA_XXX-DBA和特權用戶專訪)。如:GRANT CREATE SESSION,CREATE
22、 SEQUENCE,CREATE VIEW TO john;上述命令執行后,用戶john將擁有創建會話、視圖和序列的系統權限。*Oracle提供了100多種系統權限(ALTER TABLE,ALTER VIEW,ALTER PROCEDURE,DROP TABLE,DROP VIEW,DROP PROCEDURE等)。一般情況下,授予系統權限是由DBA來完成的;如果要以其他用戶身份授予系統權限,則要求該用戶必須具有GRANT ANY PRIVILEGE系統權限,或者具有相應系統權限及其轉授系統權限選項(WITH ADMIN OPTION),授予系統權限是使用GRANT命令來完成的,其語法如下:
23、GRANT system_priv,system_priv,TO user | role | public,user | role | public.WITH ADMIN OPTION; 注:user也可以是用戶組PUBLIC;UNLIMITED TABLESPACE權限不能被授予角色下表列出了所有對象權限。對象權限適用于ALTER表、序列DELETE表、視圖EXECUTE過程INDEX表INSERT表、視圖REFERENCES表(基于表建立從表)SELECT表、視圖、序列UPDATE表、視圖如果用戶在某個同義詞上擁有權限,而這個同義詞又需要引用其他基表,那么用戶在同義詞上擁有的權限會轉換為在
24、基表上的權限。缺省地,用戶對他所創建的對象擁有完全的權限。如用戶在用戶模式上創建了一個表,那么缺省地,他在用戶模式上擁有所創建的這個表的所有權限。授予對象權限一般情況下是由對象所有者或者DBA用戶來完成的;如果以其他用戶身份授予對象權限,則要求用戶必須具有該對象權限及轉授對象權限選項(WITH GRANT OPTION),語法如下:GRANT object_priv (columns) ,object_priv(columns) | ALL PRIVILEGES ON schema.objectTO user | role | PUBLIC , user | role | PUBLIC WIT
25、H GRANT OPTION ;例:grant update on scott.emp to blake;Grant update(sal) on emp to blake;(只能在insert、update和references上授予列權限2.9 撤消用戶DROP USER語句用于刪除用戶。語法:DROP USER username;撤消用戶時,用戶創建的對象并沒有被撤消。為了撤消創建對象的用戶語法:DROP USER username CASCADE;(不指定CASCADE不能撤消創建對象的用戶)2.10 廢除用戶訪問一般情況下,收回系統權限是由DBA來完成的;如果以其他用戶身份收回系統權
26、限,則要求該用戶必須具有相應系統權限及其轉授系統權限選項(WITH ADMIN OPTION)。收回系統權限是使用REVOKE命令來完成的。語法如下:REVOKE system_priv,system_privFROM user | role | PUBLIC ,user | role | PUBLIC 用戶的權限可使用REVOKE語句廢除。一旦某個用戶的權限被撤消,由他創建的所有用戶和從他那獲得權限的所有用戶也都被撤消。如,Jim把CREATE TABLE權限授給John。當Jim的權限被撤消時,同時自動撤消John的權限。如:GRANT CREATE TABLE TO John; REVO
27、KE CREATE TABLE FROM John;(不能撤消自己的權限)一般情況下,收回對象權限是由對象所有者或者DBA用戶來完成的;如果以其他用戶身份收回對象權限,則要求用戶必須具有該對象權限及轉授對象權限選項(WITH GRANT OPTION)。語法如下:REVOKE object_priv , object_priv | ALL PRIVILEGES ON schema. objectFROM user | role | PUBLIC , user | role | PUBLIC CASCADE CONSTRAINTS; CASCADE CONSTRAINTS 用于刪除任何與該對象相
28、關的約束和對象,例如索引、觸發器、權限、完整性約束等。2.11 創建角色角色是相關權限的命名集合,使用角色的主要目的是為了簡化權限管理。角色可以是權限的組合,也可以是角色的組合。角色包括預定義角色和自定義角色兩類。常用的預定義角色有:(oracle 10g)l CONNECT Role:分配給臨時用戶的角色。通常,為只需要查詢材料而無須創建表的用戶分配這個角色。l RESOURCE Role:這個角色分配給常規用戶l DBA Role:這個角色擁有一切系統權限,包括不加限制的表空間配額以及WITH ADMIN OPTION選項。默認的DBA用戶為SYS和SYSTEM,他們可以將任何系統權限授予
29、其他用戶。讀者需要注意,DBA角色不具備SYSDBA和SYSOPER特權。創建角色的語法:CREATE ROLE role NOT IDENTIFIED ; 不驗證用于公用角色或用戶默認角色或CREATE ROLE roleIDENTIFIED BY password; 數據庫驗證為角色分配密碼或修改角色密碼:ALTER ROLE roleIDENTIFIED BY password;(password為要設置的新密碼)如:CREATE ROLE Acadre;ALTER ROLE Acadre IDENTIFIED BY success;為角色授予權限GRANT privilege TO r
30、ole;例:只授予CONNECT權限給角色Acadre,這樣他們不可能操作數據庫。GRANT connect TO Acadre;將角色指派給用戶一個角色可指派給多個用戶。類似的,一個用戶也可具有多個角色。當把角色指派給用戶時,賦予該角色的權限也自動分配給用戶。為用戶分配角色的語法:GRANT role TO user;也可以使用ALTER USER語句授權用戶。ALTER USER John Default ROLE Student;授予用戶John以缺省角色student。2.12 新建的用戶怎樣才能成功創建一個表當一個用戶剛被創建時是不具備任何權限的,因此要在該用戶模式下創建表,需授予C
31、REATE SESSION、CREATE TABLE、以及UNLIMITED TABLESPACE(或分配配額)權限,因為:當用戶要連接到數據庫時必須擁有CREATE SESSION權限當用戶要創建表時必須擁有CREATE TABLE權限,同時用戶還需要在表空間中擁有配額或者被授予UNLIMITED TABLESPACE。現在我們來做一個測試:1)、創建用戶TEST,密碼為passwd_1:SQL> CREATE USER testIDENTIFIED BY passwd_I1用戶已創建2)當用TEST連接數據庫時:SQL> conn test/passwd_1ERROR:ORA-
32、01045: user TEST lacks CREATE SESSION privilege; logon denied警告: 您不再連接到 ORACLE。/因為缺少CREATE SESSION的權限,登陸失敗。3)利用SYS給TEST授予CREATE SESSION權限:SQL> grant create session to test;授權成功。4)SQL> conn test/passwd_1已連接。5)在test的方案中創建表exam1:SQL> create table exam1 (student_id int,paper_id int);create tabl
33、e exam1ERROR 位于第 1 行:ORA-01031: 權限不足/因為未給TEST用戶授予create table 權限,因此不能夠創建表exam1.6) 給TEST用戶授予CRETE TABLE 權限SQL> grant create table to test;授權成功。7)SQL> create table exam1(student_id int,paper_id int);create table exam1ERROR 位于第 1 行:ORA-01950: 表空間'SYSTEM'中無權限/因為在創建用戶時沒有指定表空間,因此默認的表空間是SYSTE
34、M表空間,而TEST用戶還需要在表空間SYSTEM中既沒有擁有配額又沒有被授予UNLIMITED TABLESPACE權限,因此對于這種情況有兩種解決辦法:第一種方法:SQL> alter user testquota 15m on system;用戶已更改。/在SYSTEM表空間中,給用戶TEST分配15M的使用空間SQL> create table exam1(student_id int,paper_id int);表已創建第二種方法:SQL> grant unlimited tablespace to test授權成功。SQL> create table exa
35、m2(student_id int,paper_id int);第3章建立和管理表本章主要內容:l 表簡介l 創建表l 修改表l 截斷和刪除表l 顯示表的信息3.1 簡介 表是Oracle數據庫最基本的對象,它用于存儲用戶數據。l 設計表當設計表時,需要考慮以下因素:ü 當規劃表和列時,應該使用有意義的名稱。當定義表名和列名時,只能使用字符(AZ,a-z)、數字(09)、_、$和#,名稱必須以字符開始,并且長度不能超過30個字符。ü 當規劃表名和列名時,要使用一致的縮寫格式、單數或復數格式。ü 為了給用戶和其他人員提供有意義的幫助信息,應該使用COMMENT命令描
36、述表、列的作用ü 當設計表時,應該使用第一范式(1NF)、第二范式(2NF)和第三范式(3NF)規范化每張數據庫表。ü 當定義表列時,應該選擇合適的數據類型和長度。ü 當定義表列時,為了節省存儲空間,應該將NULL列放在后面。l 常用數據類型當建立表時,不僅需要指定表名、列名,而且要根據情況為列選擇合適的數據類型和長度。下面是常用數據類型。ü CHAR(N)或CHAR(N BYTE):定義固定長度的字符串(以字節為單位),最大長度為2000字節。如果CHAR(100)或CHAR(100 BYTE),表示可存儲100個字節的字符串,并且占用空間是固定的(1
37、00個字節)ü CHAR(N CHAR):定義固定長度的字符串(以字符個數為單位)。如果CHAR(100 CHAR),表示該列最多可以存儲100個字符(單字節或多字節)。如果該列存放的全是漢字,則占用空間最多為200個字節;如果存放的全部是英文字符,則占用空間最多為100個字節。ü VARCHAR2(N)或VARCHAR2(N BYTE):用于定義變長字符串(以字節為單位),其最大長度為4000字節。ü VARCHAR2(N CHAR):用于定義變長字符串(以字符為單位)。ü NUMBER(P,S):定義數據類型的數據,P表示數字的總位數(最大字節個數,
38、而S表示小數點后面的位數。當定義整數類型時,可以直接使用NUMBER的子類型INT。ü DATE :定義日期時間數據,其長度為7個字節。當查詢DATE類型列時,其數據的默認顯示格式為(DDMONYY),如“294月05”。ü TIMESTAMP:是DATE的擴展,在該數據類型上執行DML操作與DATE類型完全相同。但當查詢時,數據的顯示格式為(DDMONYY HH.MI.SS AM),如“294月03 04.02.03.000000 下午”。ü RAW(N):定義二進制數據,N的上限值為2000。ü 大對象數據類型:早期版本(6,7)中,存儲大批量字符數
39、據采用數據類型LONG,存儲大批量二進制數據采用LONG RAW類型。從8版本開始,建議使用CLOB存儲大批量字符,建議使用BLOB類型存儲大批量二進制數據。下表列出了這些數據類型之間的區別:LONG、LONG RAWLOB(CLOG、BLOB)表只能有一個LONG或LONG RAW列表可以有多個LOB列最大長度:2GB最大長度:4GB不支持對象類型支持對象類型存放在表段中小于4000:存放在表段中大于4000:存放到LOB段SELECT:直接返回數據SELECT:返回定位符列數據順序訪問列數據可以隨機訪問ü 偽列ROWID和ROWNUMØ ROWID用于惟一地標識表行,它
40、間接給出了表行的物理位置,并且ROWID是定位表行最快的方式。如果某表包含了完全相同的行數據,為了刪除重復行,那么可以考慮使用ROWID作為條件。當使用INSERT語句插入數據時,Oracle會自動生成ROWID,并將其值與表數據一起存放到表行。ROWID與表列一樣可以直接查詢,如SELECT dname,rowid FROM dept;Ø ROWNUM用于返回標識行數據順序的數字值。當執行SELECT語句返回數據時,第1行的ROWNUM為1,第2行的ROWNUM為2,以此類推3.2 建表語法:CREATE TABLE schema.table_name( Column_name d
41、atatype DEFAULT expr, );其中:schema用于指定方案名(與用戶名完全相同),table_name用于指定表名,column_name用于指定列名,datatype用于指定列的數據類型,DEFAULT子句用于指定列的默認值。(每張表最多可定義1000列)注釋:查詢表結構:DESCü 在當前方案中建表CREATE TABLE dept01( dno NUMBER(2),name VARCHAR2(10),loc VARCHAR2(20);ü 在其他方案中建表CREATE TABLE scott.dept02( dno NUMBER(2),name VA
42、RCHAR2(10),loc VARCHAR2(20);ü 在建表時為列指定默認值CREATE TABLE scott.dept03( dno NUMBER(2),name VARCHAR2(10),loc VARCHAR2(20) DEFAULT 呼和浩特);ü 使用子查詢建表CREATE TABLE emp04(name,salary,job,dno) ASSELECT ename,sal,job,deptno FROM emp WHERE deptno=30;ü 建立臨時表臨時表用于存放會話或事務的私有數據。臨時表包括事務臨時表和會話臨時表兩種類型,其中事務
43、臨時表是指數據只在當時事務內有效的臨時表,會話臨時表是指數據只在當前會話內有效的臨時表。當建立臨時表時,需要使用CREATE GLOBAL TEMPORARY TABLE命令。通過使用ON COMMIT DELETE ROWS選項可以指定事務臨時表,通過使用ON COMMIT PRESERVE ROWS選項可以指定會話臨時表,例:CREATE GLOBAL TEMPORARY TABLE temp1(cola INT)ON COMMIT DELETE ROWS說明:當執行了以上語句之后,會建立事務臨時表TEMP1。因為事務臨時表的數據只在當前事務內有效,所以在事務結束之后會自動清除其數據。3.
44、3 修改表如果表結構不符合實際情況,建表之后,可用ALTER TABLE改變表結構。l 增加列語法:ALTER TABLE table_name ADD(column datatype DEFAULT expr,column datatype; 如ALTER TABLE emp01 ADD eno NUMBER(4);l 修改列定義語法:ALTER TABLE table_name MODIFY(column datatype DEFAULT expr,column datatype; 如ALTER TABLE emp01 MODIFY job VARCHAR2(15);l 刪除列語法:ALT
45、ER TABLE table_name DROP(column);如:ALTER TABLE emp01 DROP COLUMN dno;l 修改列名語法:ALTER TABLE table_name RENAME COLUMN column_name TO new_column_name;如:ALTER TABLE emp01 RENAME COLUMN eno TO empno;l 修改表名語法:RENAME object_name TO new_object_name;如:RENAME emp01 TO employee;l 增加注釋語法:COMMENT ON TABLE table_n
46、ame IS text; COMMENT ON COLUMN table_name.column IS text;如:COMMENT ON TABLE employee IS 存放雇員信息; COMMENT ON COLUMN IS 描述雇員姓名;3.4 截斷和刪除表l 截斷表當表結構必須保留,而表數據不再需要時,可以使用TRUNCATE TABLE命令截斷表。執行此命令時,會刪除表的所有數據,并釋放表所占用的空間,但會保留表的結構。語法:TRUNCATE TABLE table_name;說明:當刪除表的所有數據時,既可以使用DELETE語句,也可以使用TRUNC
47、ATE TABLE命令。注意的是,DELETE(DML)操作可以回退,但TRUNCATE TABLE(DDL)操作不能回退。如:TRUNCATE TABLE employee;l 刪除表當表不再需要時,可以使用DROP TABLE命令刪除表。用此命令,不僅會刪除表的所有數據,而且會刪除表結構。語法:DROP TABLE table_name CASCADE CONSTRAINTS PURGE;CASCADE CONSTRAINTS用于指定級聯刪除從表的外鍵約束,PURGE用于指定徹底刪除表(這個選項是10g的新特征)如:DROP TABLE employee;l 恢復被刪除表當執行DROP T
48、ABLE語句刪除表時,Oracle會將被刪除表存放到數據庫回收站。從Oracle Database 10g開始,使用FLASHBACK TABLE命令可以恢復被刪除表。語法:FLASHBACK TABLE table_name TO BEFORE DROP;3.5 顯示表信息l USER_TABLES當建立表時,Oracle會將表信息存放到數據字典。通過查詢數據字典視圖USER_TABLES,可以顯示當前用戶的所有表信息。如:conn scott/tigerSELECT table_name FROM user_tables;l USER_OBJECTS當建立數據庫對象(表、視圖、索引等)時,
49、Oracle會將對象信息存放到數據字典中。通過查詢數據字典視圖USER_OBJECTS,可顯示所有數據庫對象。如:SELECT object_name FROM user_objects WHERE object_type=TABLE;l USER_TAB_COMMENTS當執行COMMENT命令為表、視圖增加注釋信息時,Oracle會將注釋存放到數據字典中。通過查詢數據字典視圖USER_TAB_COMMENTS,可以顯示當前用戶所有表的注釋。如:SELECT comments FROM user_tab_comments WHERE table_name=EMPLOYEE;l USER_CO
50、L_COMMENTS當執行COMMENT命令為列增加注釋信息時,Oracle會將注釋存放到數據字典中。通過查詢數據字典視圖USER_COL_COMMENTS,可以顯示當前用戶所有表的列注釋。如:SELECT comments FROM user_col_comments WHERE table_name=EMPLOYEE AND column_name=NAME;注釋:表名及列名均大寫,因為Oracle中是以大寫字母存儲對象名及列名第4章 Oracle操作符Oracle中有很多的操作符,每種操作符都有自己的含義,在使用時需要很好的理解其中的內涵。這些操作符與平時大家見到的一些操作符幾乎是一樣的
51、,含義也差不多。需要注意一點的是,oracle中的賦值語句用:=的方式,而不是=。第5章 基本查詢l 簡單查詢語句l 限制數據l 排序數據5.1 簡單查詢語句查詢所有列:select * from dept;查詢指定列:desc emp(顯示表結構) select empno,ename,sal from emp;查詢日期列:日期列是指date類型列,默認顯示格式為dd-mon-yy,不同語言和地區的日期顯示結果有所不同。如果想以自己習慣的日期格式顯示日期值,必須要用to_char函數進行轉換。當日期語言為SIMPLIFIEDCHINESE時,格式:17-12月-80 Select ename
52、,to_char(hiredate,YYYY-MM-DD from emp; 上述語句顯示格式:1980-12-17取消重復行:默認會顯示所有行,但完全相同的查詢結果沒有實際意義,因此有時需要取消重復結果 Select distinct deptno,job from emp;(顯示三列都不相同的記錄集) Select distinct deptno;(只顯示deptno不同的記錄集)使用算術表達式:當招行查詢操作時,可在數字列上用算術表達式(+,-,*,/) Select ename,sal,sal*12 from emp;使用列別名:默認情況下,列標題是大寫格式的列名或表達式,如果使用列別
53、名,列別名可跟在列名后,并且在二者之間可以加AS關鍵字,若列別名區分大小寫、包含特殊字符或空格,必須用雙引號引住 Select ename as name,sal*12 “Annual Salary” from emp;處理NULL:NULL表示未知值,既不是空格也不是0。若沒為列提供數據且該列無默認值,則其數據為NULL。當算術表達式包含NULL時,其結果也是NULL。 Select ename,sal,comm,sal+comm from emp; Select ename,sal,comm,sal+nvl(comm,0) from emp; Nvl(comm,0)說明:如果comm存在數
54、值,則函數返回其原有數值;如果comm列為NULL,則函數返回0。 連接字符串:連接字符串是使用|操作符完成的。如果在字符串中要加入數字值,那么在|后可以直接指定數字;如果在字符串中加入字符和日期值,則必須用單引號引住。 Select ename|的崗位是|job “Employee” from emp; 或Select ename|的崗位是|job AS Employee from emp;注釋:dual是一個虛擬表,用來查那些不屬于實際表里的內容,如:select sysdate from dual; select 3+3 from dual;1 限制數據(條件查詢)條件查詢中條件表達式中需要使用各種比較操作符,如(=,<>(!=),>=,<=,>,<,BETWEENAND,IN(list),LIKE,IS NULL)使用數字值:select ename,sal from emp where sal>2000;使用字符值:select ename,sal from emp where
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江海洋大學《女性文學》2023-2024學年第二學期期末試卷
- 江蘇理工學院《醫學信息學2》2023-2024學年第一學期期末試卷
- 嘉興南洋職業技術學院《生物藥劑與藥動學》2023-2024學年第二學期期末試卷
- 上海電影藝術職業學院《營銷模型與數據分析》2023-2024學年第二學期期末試卷
- 《團隊建設經驗分享》課件
- 單位內控提升方案范本
- 無縫式科研橋臺施工方案
- 2025南海郵輪旅游專用合同
- 2025合作合同簽訂邀請函模板
- 煙臺降噪圍擋施工方案
- 森林防火安全責任書(施工隊用)
- Duncans 新復極差檢驗SSR值表
- 自卸車液壓系統安裝手冊
- 商務部商業保理企業管理辦法
- (完整word版)建筑工程公司員工證書管理辦法
- 機械加工工藝過程卡片及工序卡(共3頁)
- 初中英語語法-介詞、連詞.ppt
- 【精選】配電室安全管理制度精選
- (施敏)半導體器件物理(詳盡版)
- 淺析小學數學教學中草稿本的有效使用
- 旅行社掛靠協議
評論
0/150
提交評論