當前位置:首頁 » 編程語言 » oraclesql編寫規范
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

oraclesql編寫規范

發布時間: 2022-09-05 16:14:32

⑴ oracle是用什麼語言是sql語言嗎

不一樣的。

Oracle資料庫內核是用c編寫的,但是,大部分代碼是在資料庫中執行的,使用PL/SQL和Java(使用嵌入在內核中的jvm)開發。外圍工具(SQLDeveloper,grid控制項)主要使用Java。

MySQL是用C和c++編寫的。它的SQL解析器是用yacc編寫的,但是它使用一個定製的詞法分析器。MySQL可以在很多系統平台上工作。

(1)oraclesql編寫規范擴展閱讀:

Oracle文件結構:

資料庫的物理存儲結構由多種物理文件組成,主要包括數據文件、控制文件、重做日誌文件、歸檔日誌文件、參數文件、密碼文件、警告文件等。

1.控制文件:存儲諸如實例、數據文件和日誌文件等信息的二進制文件。改變系統設置control_files='path'。VCONTROLFILE美元。

2.數據文件:存儲數據。DBF後綴。一個語句:一個表空間用於多個數據文件,一個數據文件用於一個表空間。Dba_data_files/v$丟失。

3.日誌文件:重做日誌文件和Archivelog文件。記錄資料庫修改信息。ALTER系統切換日誌文件;。V$日誌。

4.參數文件:記錄基本參數。Spfilepfile。

5.警告文件:顯示參數background_mp_dest——使用共享伺服器連接。

6.跟蹤文件:顯示參數user_mp_dest——使用專用伺服器連接。

⑵ 關於oracle PLSQL

PL/SQL是ORACLE對標准資料庫語言的擴展,ORACLE公司已經將PL/SQL整合到ORACLE 伺服器和其他工具中了,近幾年中更多的開發人員和DBA開始使用PL/SQL,本文將講述PL/SQL基礎語法,結構和組件、以及如何設計並執行一個PL/SQL程序。

PL/SQL的優點

從版本6開始PL/SQL就被可靠的整合到ORACLE中了,一旦掌握PL/SQL的優點以及其獨有的數據管理的便利性,那麼你很難想像ORACLE缺了PL/SQL的情形。PL/SQL 不是一個獨立的產品,他是一個整合到ORACLE伺服器和ORACLE工具中的技術,可以把PL/SQL看作ORACLE伺服器內的一個引擎,sql語句執行者處理單個的sql語句,PL/SQL引擎處理PL/SQL程序塊。當PL/SQL程序塊在PL/SQL引擎處理時,ORACLE伺服器中的SQL語句執行器處理pl/sql程序塊中的SQL語句。

PL/SQL的優點如下:

. PL/SQL是一種高性能的基於事務處理的語言,能運行在任何ORACLE環境中,支持所有數據處理命令。通過使用PL/SQL程序單元處理SQL的數據定義和數據控制元素。

. PL/SQL支持所有SQL數據類型和所有SQL函數,同時支持所有ORACLE對象類型

. PL/SQL塊可以被命名和存儲在ORACLE伺服器中,同時也能被其他的PL/SQL程序或SQL命令調用,任何客戶/伺服器工具都能訪問PL/SQL程序,具有很好的可重用性。

. 可以使用ORACLE數據工具管理存儲在伺服器中的PL/SQL程序的安全性。可以授權或撤銷資料庫其他用戶訪問PL/SQL程序的能力。

. PL/SQL代碼可以使用任何ASCII文本編輯器編寫,所以對任何ORACLE能夠運行的操作系統都是非常便利的

. 對於SQL,ORACLE必須在同一時間處理每一條SQL語句,在網路環境下這就意味作每一個獨立的調用都必須被oracle伺服器處理,這就佔用大量的伺服器時間,同時導致網路擁擠。而PL/SQL是以整個語句塊發給伺服器,這就降低了網路擁擠。

PL/SQL塊結構

PL/SQL是一種塊結構的語言,組成PL/SQL程序的單元是邏輯塊,一個PL/SQL 程序包含了一個或多個邏輯塊,每個塊都可以劃分為三個部分。與其他語言相同,變數在使用之前必須聲明,PL/SQL提供了獨立的專門用於處理異常的部分,下面描述了PL/SQL塊的不同部分:

聲明部分(Declaration section)

聲明部分包含了變數和常量的數據類型和初始值。這個部分是由關鍵字DECLARE開始,如果不需要聲明變數或常量,那麼可以忽略這一部分;需要說明的是游標的聲明也在這一部分。

執行部分(Executable section)

執行部分是PL/SQL塊中的指令部分,由關鍵字BEGIN開始,所有的可執行語句都放在這一部分,其他的PL/SQL塊也可以放在這一部分。

異常處理部分(Exception section)

這一部分是可選的,在這一部分中處理異常或錯誤,對異常處理的詳細討論我們在後面進行。

PL/SQL塊語法

[DECLARE]
---declaration statements
BEGIN
---executable statements
[EXCEPTION]
---exception statements
END

PL/SQL塊中的每一條語句都必須以分號結束,SQL語句可以使多行的,但分號表示該語句的結束。一行中可以有多條SQL語句,他們之間以分號分隔。每一個PL/SQL塊由BEGIN或DECLARE開始,以END結束。注釋由--標示。

PL/SQL塊的命名和匿名

PL/SQL程序塊可以是一個命名的程序塊也可以是一個匿名程序塊。匿名程序塊可以用在伺服器端也可以用在客戶端。

命名程序塊可以出現在其他PL/SQL程序塊的聲明部分,這方面比較明顯的是子程序,子程序可以在執行部分引用,也可以在異常處理部分引用。

PL/SQL程序塊可背獨立編譯並存儲在資料庫中,任何與資料庫相連接的應用程序都可以訪問這些存儲的PL/SQL程序塊。ORACLE提供了四種類型的可存儲的程序:

. 函數

. 過程

. 包

. 觸發器

函數

函數是命名了的、存儲在資料庫中的PL/SQL程序塊。函數接受零個或多個輸入參數,有一個返回值,返回值的數據類型在創建函數時定義。定義函數的語法如下:

FUNCTION name [{parameter[,parameter,...])] RETURN datatypes IS
[local declarations]
BEGIN
execute statements
[EXCEPTION
exception handlers]
END [name]

過程

存儲過程是一個PL/SQL程序塊,接受零個或多個參數作為輸入(INPUT)或輸出(OUTPUT)、或既作輸入又作輸出(INOUT),與函數不同,存儲過程沒有返回值,存儲過程不能由SQL語句直接使用,只能通過EXECUT命令或PL/SQL程序塊內部調用,定義存儲過程的語法如下:

PROCEDURE name [(parameter[,parameter,...])] IS
[local declarations]
BEGIN
execute statements
[EXCEPTION
exception handlers ]
END [name]

包(package)

包其實就是被組合在一起的相關對象的集合,當包中任何函數或存儲過程被調用,包就被載入入內存中,包中的任何函數或存儲過程的子程序訪問速度將大大加快。
包由兩個部分組成:規范和包主體(body),規范描述變數、常量、游標、和子程序,包體完全定義子程序和游標。

觸發器(trigger)

觸發器與一個表或資料庫事件聯系在一起的,當一個觸發器事件發生時,定義在表上的觸發器被觸發。

變數和常量

變數存放在內存中以獲得值,能被PL/SQL塊引用。你可以把變數想像成一個可儲藏東西的容器,容器內的東西是可以改變的。

聲明變數

變數一般都在PL/SQL塊的聲明部分聲明,PL/SQL是一種強壯的類型語言,這就是說在引用變數前必須首先聲明,要在執行或異常處理部分使用變數,那麼變數必須首先在聲明部分進行聲明。

聲明變數的語法如下:

Variable_name [CONSTANT] databyte [NOT NULL][:=|DEFAULT expression]

注意:可以在聲明變數的同時給變數強制性的加上NOT NULL約束條件,此時變數在初始化時必須賦值。

給變數賦值

給變數賦值有兩種方式:

. 直接給變數賦值

X:=200;
Y=Y+(X*20);

. 通過SQL SELECT INTO 或FETCH INTO給變數賦值

SELECT SUM(SALARY),SUM(SALARY*0.1)
INTO TOTAL_SALARY,TATAL_COMMISSION
FROM EMPLOYEE
WHERE DEPT=10;

常量

常量與變數相似,但常量的值在程序內部不能改變,常量的值在定義時賦予,,他的聲明方式與變數相似,但必須包括關鍵字CONSTANT。常量和變數都可被定義為SQL和用戶定義的數據類型。

ZERO_VALUE CONSTANT NUMBER:=0;

這個語句定了一個名叫ZERO_VALUE、數據類型是NUMBER、值為0的常量。

標量(scalar)數據類型

標量(scalar)數據類型沒有內部組件,他們大致可分為以下四類:

. number
. character
. date/time
. boolean

表1顯示了數字數據類型;表2顯示了字元數據類型;表3顯示了日期和布爾數據類型。

表1 Scalar Types:Numeric

Datatype
Range
Subtypes
description

BINARY_INTEGER
-214748-2147483647
NATURAL
NATURAL
NPOSITIVE
POSITIVEN
SIGNTYPE
用於存儲單位元組整數。
要求存儲長度低於NUMBER值。
用於限制范圍的子類型(SUBTYPE):
NATURAL:用於非負數
POSITIVE:只用於正數
NATURALN:只用於非負數和非NULL值
POSITIVEN:只用於正數,不能用於NULL值
SIGNTYPE:只有值:-1、0或1.

NUMBER
1.0E-130-9.99E125
DEC
DECIMAL
DOUBLE
PRECISION
FLOAT
INTEGERIC
INT
NUMERIC
REAL
SMALLINT
存儲數字值,包括整數和浮點數。可以選擇精度和刻度方式,語法:
number[([,])]。
預設的精度是38,scale是0.

PLS_INTEGER
-2147483647-2147483647

與BINARY_INTEGER基本相同,但採用機器運算時,PLS_INTEGER提供更好的性能 。

表2 字元數據類型

datatype
rang
subtype
description

CHAR
最大長度32767位元組
CHARACTER
存儲定長字元串,如果長度沒有確定,預設是1

LONG
最大長度2147483647位元組

存儲可變長度字元串

RAW
最大長度32767位元組

用於存儲二進制數據和位元組字元串,當在兩個資料庫之間進行傳遞時,RAW數據不在字元集之間進行轉換。

LONGRAW
最大長度2147483647

與LONG數據類型相似,同樣他也不能在字元集之間進行轉換。

ROWID
18個位元組

與資料庫ROWID偽列類型相同,能夠存儲一個行標示符,可以將行標示符看作資料庫中每一行的唯一鍵值。

VARCHAR2
最大長度32767位元組
STRINGVARCHAR
與VARCHAR數據類型相似,存儲可變長度的字元串。聲明方法與VARCHAR相同

表3 DATE和BOOLEAN

datatype
range
description

BOOLEAN
TRUE/FALSE
存儲邏輯值TRUE或FALSE,無參數

DATE
01/01/4712 BC
存儲固定長的日期和時間值,日期值中包含時間

⑶ SQLServer 和 Oracle 有什麼區別

ORACLE與SQL SERVER的區別

體系結構
ORACLE的文件體系結構為:
數據文件 .DBF (真實數據)
日誌文件 .RDO
控制文件 .CTL
參數文件 .ORA

SQL SERVER的文件體系結構為:
.MDF (數據字典)
.NDF (數據文件)
.LDF (日誌文件)

ORACLE存儲結構:
在ORACLE里有兩個塊參數PCTFREE(填充因子)和PCTUSED(復用因子),可控制塊確定塊本身何時有,何時沒有足夠的空間接受新信息(對塊的存儲情況的分析機制)
這樣可降低數據行連接與行遷移的可能性。塊的大小可設置(OLTP塊和DSS塊)
在ORACLE中,將連續的塊組成區,可動態分配區(區的分配可以是等額的也可以是自增長的)可減少空間分配次數
在ORACLEl里表可以分為多個段,段由多個區組成,每個段可指定分配在哪個表空間里(段的類型分為:數據段、索引段、回滾段、臨時段、CASH段。ORACLE里還可對表進行分區,可按照用戶定義的業務規則、條件或規范,物理的分開磁碟上的數據。
這樣大大降低了磁碟爭用的可能性。

ORACLE有七個基本表空間:
SYSTEM表空間(存放數據字典和數據管理自身所需的信息)
RBS回滾表空間
TEMP臨時表空間
TOOLS互動式表空間
USERS用戶默認表空間
INDX索引表空間
DBSYS福數據表空間
不同的數據分別放在不同的表空間(數據字典與真實數據分開存放),在ORACLE里基表(存儲系統參數信息)是加密存儲,任何人都無法訪問。只能通過用戶可視視圖查看。

SQL SERVER 存儲結構
以頁為最小分配單位,每個頁為8K(不可控制,缺乏對頁的存儲情況的分析機制),
可將8個連續的頁的組成一個『擴展』,以進一步減少分配時所耗用的資源。(分配缺乏靈活性),在SQL SERVER里數據以表的方式存放,而表是存放在資料庫里。
SQL SERVER有五個基本資料庫:
master(數據字典)
mode(存放樣版)
tempdb(臨時資料庫)
msdb(存放調度信息和日誌信息)
pubs(示例資料庫)
真實數據與數據字典存放在一起。對系統參數信息無安全機制。

ORACLE登入管理:
SYSTEM/MANAGER (初始帳戶)
SYS/CHANGE_ON_NSTALL
INSTALL/ORACLE(安裝帳戶)
SCOTT/TIGER(示例資料庫,測試用)
在ORACLE里默認只有三個系統用戶,ORACLE是通過用戶登入。

SQL SERVER登入管理:
SQL SERVER身份驗證
WINDOWS 身份驗證
在SQL SERVER里是通過WINDOWS用戶帳戶或是用SQL SERVER身份驗證連接資料庫的。
SQL不是一種語言,而是對ORACLE資料庫傳輸指令的一種方式。
SQL中NULL既不是字元也不是數字,它是預設數據。ORACLE提供了NVL函數來解決。

ORACLE中的字元串連接為 string1‖string2 ,SQL中為string1+string2.
集合操作:在SQL中只有UNION(並操作),ORACLE中包含MINUS(差操作)、
INTERECT(交操作)、UNION(並操作)。

索引:SQL的索引分為聚集索引和非聚集索引,還包括全文索引;
ORACLE的索引包括:B+樹索引,Bitmap點陣圖索引,函數索引,反序索引,
主鍵索引,散列索引,本地索引。
ORACLE的數據類型比較復雜,有基本數據類型,衍生型,列對象型,表對象型,結構體型;SQL中的數據比較簡單,只有一些簡單的基本數據類型無法提供事務操作。
在SQL中如果一個事務從開始執行到結束時了錯了,它就會回滾到開始之前;
在ORACLE中它採用的是定點回滾,就是該事務函數化和精確錯誤定位,用savepoint標記保存點,用Rollback標記回滾錯誤的保存點。
在SQL中循環只有WHILE一種這用起來不靈活,在ORACLE中有多種循環(LOOP循環、WHILE循環、FOR循環)。
在SQL中游標的使用比較復雜,不能同時打開一個以上的游標,因為它只有一個全局變數@@Fast_statues而且聲明游標也麻煩,關閉游標時也不清除內存的;ORACLE中游標是以提高速度全部統一的單項游標,可以允許多用戶非同步讀取,而且聲明比較簡單,就一句declare cursor游標名 is select 語句就可以了。
容錯機制:SQL中的錯誤機制比較復雜,沒有提供錯誤描述;ORACLE中容錯類型有三種,一個是預定義錯誤,一個是非預定義錯誤,一個是用戶自定義,其中在自定義錯誤中它有兩個是在SQL中不有的,那就是SQLCODE 錯誤號、SQLERRM錯誤描述。
文件體系結構:SQL中有.MDF(主要數據文件)、.NDF(擴展文件,可以有多個)、
.LDF(日誌文件,可以有多個,存放在聯機重做日誌數據,這里的日誌文件有一個缺點就是如果日誌文件已填小巧玲瓏的話,SQL將自動停止運行並等待人工干預,所以要經常監控日誌的情況保證系統的穩定運行)。ORACLE中有.DBF(主要數據文件)、.RDO(日誌文件,用來做災難性的數據備份)、.CTL(控制文件,將資料庫的物理文件映射到了數據字典中的邏輯表空間和連機重做日誌文件上去,確保數據的一致性)、.ORA(參數文件)。
. SQL只能是本機備份本機的資料庫,無法聯機備份,而且備份壓縮很低,佔用了大量空間;ORACLE提供了7種備份機制,具有聯機備份功能,有志門的備份機子。
Oracle的日誌默認有3個,先寫入1號日誌,滿了後再寫入2號日誌,2號滿了再寫入3號日誌,3號滿了後Oracle將自動備分1號日誌的內容,然後清空後寫入新的日誌信息,且Oracle的日誌有多路復用功能,我們可以為日誌創建多個鏡像,把相同的日誌信息同時寫入多個日誌文件中,這樣可以防止磁碟損壞造成的數據丟失。
SQL Server對每個資料庫只能分配一個日誌文件。且當日誌填滿後,日誌將停止工作,等待人工干預,而無法自動重用。
Oracle的控制文件記錄了資料庫文件的物理位置和有效性,在每次打開Oracle系統都將自動對數據進行驗證,查看其有效性,防止數據的丟失,這體現了Oracle對數據管理的嚴密性。
SQL Server無此安全機制,只用在使用到了資料庫的信息後,系統才去查找數據是否存在。
Oracle的參數文件init.ora是可調的,既我們可以根據資料庫的規模調整Oracle對系統資源的使用情況,以達到最合理的資源分配,讓Oracle達到最佳的性能。
SQL Server的配置參數是內定的不可調整,它對系統資源的分配是固定的,不受擁護控制,因此無法同時處理大量用戶的需求,這限制了它只能作為中,小型資料庫。
Oracle以塊為最小存儲單位,以區為單位分配空間,用戶可以根據需要自己定義塊的大小,且區可以按等額或遞增進行分配,這可以大大減少系統的I/O操作提高資料庫的性能。
SQL Server中以頁為單位或使用擴展類型以8頁為一單位進行空間分配而無法人工干預,當遇到頻繁存儲或大數據量存儲時,系統將頻繁進行I/O操作使工作效率低下。
Oracle中的SQL語句書寫規范且提供了完整的函數和數據類型。Oracle提供了健全的錯誤機制,用戶可以輕松的獲得錯誤位置和錯誤原因而加以修改。用戶還可以自己定義所須的錯誤類型,用以檢查邏輯錯誤。Oracle中對數據類型的轉換和游標的定義也十分方便。因此,我們對代碼的書寫和維護也比SQL Server方便許多。
SQL Server使用類C語言,不易維護和查看代碼。SQL Server包含的數據類型太少,無法定義結構體,數組,對象。SQL Server無法定義流程機制,類型轉換也極不方便,SQL Server中對游標定義十分復雜,且當用戶定義的多個游標同時打開時系統卻只有一個游標變數,這是SQL SERVER中一個嚴重的缺陷。
ORACLE中用戶可以根據數據需要在創建塊時定義填充因子(空閑空間的百分比)和復用因子(當塊的存儲數據所佔的空間下降到這個百分比之下時,塊才重新標記為可用)。用戶可以根據記錄變化頻率和數據量的大小設置合適的填充因子和空閑因子。
SQL SERVER只有填充因子,而它的定義與ORACLE剛好相反,它定義的是剩餘可用空間的百分比。而SQL SERVER中沒有復用因子,當頁中數據低於填充因子,但剩餘的空間已經不可能再插入新的數據,但頁還是標記為可用的,當系統要寫入新數據都要訪問這個頁而浪費時間,這種頁稱為廢頁,將使系統插入新數據時浪費大量時間查找可用的頁。
ORACLE在創建表時用戶可以精確定義數據存放的表空間,甚至可以把一張表分開存放在多個表空間中,這樣可以將數據量龐大的表按某些欄位分開存放,這將給查詢帶來極高的效率。

⑷ Oracle管理員用戶是什麼

Oracle管理員用戶是資料庫管理員,是從事管理和維護資料庫管理系統(DBMS)的相關工作人員的統稱;

DBA的核心目標是保證資料庫管理系統的穩定性、安全性、完整性和高性能。

在國外,也有公司把DBA稱作資料庫工程師(Database Engineer),兩者的工作內容基本相同,都是保證資料庫服務7*24小時的穩定高效運轉,但是需要區分一下DBA和資料庫開發工程師(Database Developer):

1) 資料庫開發工程師的主要職責是設計和開發資料庫管理系統和資料庫應用軟體系統,側重於軟體研發;

2) DBA的主要職責是運維和管理資料庫管理系統,側重於運維管理。

(4)oraclesql編寫規范擴展閱讀:

DBA負責了業務資料庫從設計、測試到部署交付的全生命周期管理,各個階段的職責包括:

1. 產品發布前

這個階段DBA的職責是資料庫准入,主要包括:

1)產品的業務熟悉;

2)產品資料庫設計評審:包括架構的合理性評估,存儲容量和性能是否滿足需求,是否需要緩存,是否需要冗餘備份等,同時需要提供資料庫schema設計的合理性建議以使產品能夠滿足上線發布並穩定運行的基本要求;

3)資源評估,包括所需的伺服器資源、網路資源以及資源的分布等,同時把關產品對資源預算申請的合理性,控制服務成本;

4)資源就位,將申請的伺服器及基礎環境/域名准備就位。

⑸ 如何寫SQL語句,對於日期欄位賦值,如我要在GXSJ欄位是賦上2011-02-11

sql server :update tb set GXSJ='2011-02-11'; MYSQL也可以這樣
理由是因為'2011-02-11'是規范的日期格式

oracle 有點特別,一般保險寫法是這樣的:
update tb set GXSJ=to_date('2011-02-11','YYYY-mm-dd');

⑹ oracle一行數據根據固定規則求多行,如下例,如何寫SQL

創建數據表,數據

createtabletest
(idint,
namevarchar2(10),
ageint,
begin_timedate,
end_timedate);

insertintotestvalues(1,'明',10,to_date('2018-05-01','yyyy-mm-dd'),to_date('2018-05-03','yyyy-mm-dd'));
insertintotestvalues(2,'剛',15,to_date('2018-05-01','yyyy-mm-dd'),to_date('2018-05-05','yyyy-mm-dd'));
insertintotestvalues(3,'強',20,to_date('2018-05-01','yyyy-mm-dd'),to_date('2018-05-10','yyyy-mm-dd'));
commit;

執行:

withtas
((SelectTO_DATE('2018-05-0100:00:00','YYYY-MM-DDHH24:MI:SS')+rownum-1As日期
FromDual
ConnectByRownum<TO_DATE('2018-05-3023:59:59','YYYY-MM-DDHH24:MI:SS')-TO_DATE('2018-05-0100:00:00','YYYY-MM-DDHH24:MI:SS')+1))
selecta.id,a.name,a.age,t.日期fromtesta,twheret.日期betweena.begin_timeanda.end_time

結果:

另外,你自己的日期的表裡,弄4月份數據幹啥?你test表裡的日期明明都是5月的

⑺ 大家寫SQL語句,使用oracle語法還是SQL99語法呢

每種DBMS都基本遵循SQL規范,但同時又有他們自己的方言,這都是要遵守的。

⑻ Oracle完全學習手冊的圖書目錄

第一篇 Oracle基礎篇
第1章 Oracle關系資料庫 1
1.1 關系數據模型 1
1.1.1 二維表 1
1.1.2 關系術語 2
1.1.3 關系數據模型的特點 3
1.2 關系資料庫 4
1.2.1 關系操作 4
1.2.2 關系的完整性 4
1.3 關系資料庫規范化理論 6
1.3.1 函數依賴 6
1.3.2 範式理論 7
1.4 資料庫設計 8
1.4.1 實體-關系模型 9
1.4.2 E-R圖的繪制 9
1.4.3 將E-R數據模型轉化為關系模式 10
1.5 Oracle應用系統結構 11
1.5.1 單磁碟獨立主機結構 11
1.5.2 多磁碟獨立主機結構 11
1.5.3 多資料庫獨立主機結構 12
1.5.4 Oracle客戶/伺服器系統結構 12
1.5.5 Oracle瀏覽器/伺服器系統結構 13
1.5.6 Oracle分布式資料庫系統結構 14
1.6 安裝Oracle 11g 15
1.6.1 在Windows環境下的安裝過程 15
1.6.2 查看Oracle系統 21
1.7 創建資料庫 21
1.8 Oracle默認用戶 26
1.9 使用OEM 27
第2章 Oracle體系結構概述 31
2.1 物理存儲結構 31
2.1.1 數據文件 31
2.1.2 控制文件 33
2.1.3 重做日誌文件 34
2.1.4 其他文件 35
2.2 邏輯存儲結構 35
2.2.1 表空間 36
2.2.2 段 36
2.2.3 區 37
2.2.4 塊 37
2.3 Oracle進程結構 38
2.3.1 進程結構概述 39
2.3.2 DBWn進程 39
2.3.3 LGWR進程 41
2.3.4 CKPT進程 41
2.3.5 SMON進程 42
2.3.6 PMON進程 42
2.3.7 ARCn進程 42
2.3.8 RECO進程 43
2.3.9 LCKn進程 43
2.3.10 Dnnn進程 43
2.3.11 SNPn進程 44
2.4 Oracle內存結構 44
2.4.1 內存結構概述 44
2.4.2 系統全局區 45
2.4.3 程序全局區 46
2.4.4 排序區 46
2.4.5 大池 47
2.4.6 Java池 47
2.5 數據字典 47
2.5.1 Oracle數據字典介紹 47
2.5.2 Oracle常用數據字典 48
第3章 使用SQL*Plus 51
3.1 SQL*Plus的主要功能 51
3.2 SQL*Plus連接資料庫 51
3.2.1 啟動SQL*Plus 51
3.2.2 從命令行啟動SQL*Plus 53
3.2.3 斷開資料庫連接 54
3.3 查看錶結構 54
3.4 編輯SQL語句 55
3.5 保存、檢索並運行文件 56
3.6 使用SQL*Plus格式化查詢結果 58
3.6.1 格式化列 58
3.6.2 設置頁面大小 59
3.6.3 設置行大小 60
3.6.4 清除列格式 60
3.7 使用變數 61
3.7.1 臨時變數 61
3.7.2 已定義變數 63
3.8 創建簡單報表 65
3.8.1 在腳本中使用臨時變數 65
3.8.2 在腳本中使用已定義變數 66
3.8.3 向腳本中的變數傳遞值 66
3.8.4 添加頁眉和頁腳 67
3.8.5 計算小計 68
第4章 表空間 70
4.1 管理基本表空間 70
4.1.1 表空間管理類型 70
4.1.2 創建基本表空間 72
4.1.3 修改表空間 79
4.2 臨時表空間 85
4.2.1 創建臨時表空間 85
4.2.2 修改臨時表空間 86
4.2.3 臨時表空間組 87
4.3 大文件表空間 88
4.4 非標准數據塊表空間 90
4.5 撤銷表空間 91
4.5.1 管理撤銷表空間的方式 91
4.5.2 創建和管理撤銷表空間 92
第5章 管理控制文件與日誌文件 97
5.1 管理控制文件 97
5.1.1 控制文件的概述 97
5.1.2 創建控制文件 98
5.1.3 管理與維護控制文件 101
5.1.4 查詢控制文件信息 104
5.2 管理日誌文件 105
5.2.1 日誌文件的概述 105
5.2.2 創建日誌文件組及其成員 106
5.2.3 管理日誌文件組及其成員 107
5.2.4 查看日誌文件信息 110
5.3 管理歸檔日誌 111
5.3.1 歸檔日誌的概述 111
5.3.2 設置資料庫模式 112
5.3.3 設置歸檔目標 113
5.3.4 設置歸檔進程的跟蹤級別 114
5.3.5 查看歸檔日誌信息 115
第6章 表 117
6.1 創建表 117
6.1.1 創建表的策略 117
6.1.2 使用SQL語句創建表 118
6.1.3 指定表空間 123
6.1.4 指定存儲參數 124
6.1.5 設置數據塊管理參數 125
6.1.6 指定重做日誌 127
6.1.7 指定緩存 128
6.1.8 通過OEM創建表 129
6.2 修改表 131
6.2.1 增加和刪除列 131
6.2.2 更新列 133
6.2.3 重命名表 135
6.2.4 改變表的存儲表空間和存儲
參數 136
6.2.5 刪除表定義 137
6.3 完整性約束 137
6.3.1 約束的分類和定義 138
6.3.2 NOT NULL約束 138
6.3.3 PRIMARY KEY約束 140
6.3.4 UNIQUE約束 142
6.3.5 CHECK約束 143
6.3.6 FOREIGN KEY約束 144
6.3.7 禁止和激活約束 147
6.3.8 驗證約束 149
6.3.9 延遲約束 150
6.3.10 查詢約束信息 151
6.4 分析表 152
第二篇 操作Oracle篇
第7章 SQL基礎 157
7.1 SQL語言概述 157
7.1.1 SQL語言特點 157
7.1.2 SQL語言分類 158
7.1.3 SQL語句的編寫規則 158
7.2 使用SELECT檢索數據 159
7.2.1 使用FROM子句指定表 159
7.2.2 使用SELECT(必要元素)
指定列 160
7.2.3 使用WHERE子句指定行 160
7.2.4 使用ORDER BY子句
對行進行排序 164
7.2.5 使用GROUP BY子句
對行進行分組 166
7.2.6 使用HAVING子句過濾行組 167
7.2.7 組合使用WHERE、GROUP BY和HAVING子句 167
7.2.8 使用DISTINCT來檢索
唯一的表列值 167
7.2.9 使用算術運算符 168
7.3 使用DML語句 169
7.3.1 使用INSERT語句插入表數據 169
7.3.2 使用UPDATE語句更新表數據 170
7.3.3 使用DELETE語句刪除表數據 170
7.3.4 使用MERGE語句修改表數據 171
7.4 表的連接查詢 173
7.4.1 簡單連接 173
7.4.2 內連接 174
7.4.3 外連接 175
7.4.4 自連接 176
7.5 資料庫事務 177
7.5.1 事務的提交和回滾 177
7.5.2 事務的開始與結束 178
7.5.3 設置保存點 179
7.5.4 事務的ACID特性 180
7.5.5 並發事務 180
7.5.6 事務鎖 182
7.5.7 事務隔離級別 183
第8章 使用簡單函數 185
8.1 使用單行函數 185
8.1.1 字元函數 185
8.1.2 數字函數 188
8.1.3 轉換函數 190
8.1.4 正則表達式函數 192
8.2 使用聚合函數 195
8.3 日期時間處理函數 197
8.3.1 使用TO_CHAR()和TO_DATE()
轉換時間值 198
8.3.2 使用時間值函數 199
第9章 子查詢 202
9.1 子查詢的類型 202
9.2 編寫單行子查詢 202
9.2.1 在WHERE子句中使用子查詢 203
9.2.2 使用其他單行操作符 203
9.2.3 在HAVING子句中使用子查詢 204
9.2.4 在FROM子句中使用子查詢 205
9.2.5 常見查詢錯誤 206
9.3 編寫多行子查詢 207
9.4 編寫多列子查詢 209
9.5 編寫關聯子查詢 210
9.5.1 使用關聯子查詢 210
9.5.2 在關聯子查詢中使用EXISTS
和NOT EXISTS 211
9.6 編寫嵌套子查詢 212
9.7 編寫包含子查詢的UPDATE
和DELETE語句 213
第10章 高級查詢 215
10.1 使用集合操作符 215
10.2 使用TRANSLATE()函數 218
10.3 使用DECODE()函數 219
10.4 使用CASE表達式 220
10.4.1 使用簡單CASE表達式 220
10.4.2 使用搜索CASE表達式 221
10.5 層次化查詢 222
10.5.1 示例數據 222
10.5.2 使用CONNECT BY和START WITH子句 223
10.5.3 使用偽列LEVEL 224
10.5.4 格式化層次化查詢的結果 225
10.5.5 從非根節點開始遍歷 226
10.5.6 在START WITH子句
中使用子查詢 226
10.5.7 從下向上遍歷樹 227
10.5.8 從層次化查詢中刪除節點
和分支 227
10.5.9 在層次化查詢中加入其他條件 228
10.6 使用擴展的GROUP BY子句 229
10.6.1 使用ROLLUP子句 229
10.6.2 使用CUBE子句 230
10.6.3 使用GROUPING()函數 231
10.6.4 使用GROUPING SETS子句 233
10.6.5 使用GROUPING_ID()函數 233
10.6.6 使用GROUP_ID()函數 236
第11章 PL/SQL基礎 238
11.1 PL/SQL概述 238
11.1.1 PL/SQL語言特點 238
11.1.2 PL/SQL代碼編寫規則 238
11.2 PL/SQL結構 239
11.2.1 PL/SQL程序塊 239
11.2.2 變數和類型 240
11.2.3 運算符與表達式 242
11.2.4 PL/SQL的注釋 242
11.3 編寫控制結構 243
11.3.1 條件分支語句 243
11.3.2 循環語句 245
11.3.3 GOTO和NULL 248
11.4 復合變數 249
11.4.1 %TYPE變數 249
11.4.2 %ROWTYPE變數 250
11.4.3 PL/SQL記錄 251
11.5 PL/SQL集合 252
11.5.1 索引表 252
11.5.2 嵌套表 254
11.5.3 變長數組 256
11.5.4 PL/SQL記錄表 258
11.5.5 集合方法 259
11.6 游標 262
11.6.1 游標基本操作 263
11.6.2 游標屬性 264
11.6.3 參數化游標和隱式游標 266
11.6.4 使用游標更新或刪除數據 267
11.6.5 游標FOR循環 268
11.6.6 使用游標變數 269
11.7 異常處理 271
11.7.1 預定義異常 271
11.7.2 用戶自定義異常 274
11.7.3 異常函數 275
第12章 PL/SQL高級應用 277
12.1 存儲過程 277
12.1.1 過程的基本操作 277
12.1.2 過程的參數傳遞 279
12.1.3 過程的參數模式 280
12.1.4 參數的默認值 282
12.2 函數 283
12.2.1 函數的基本操作 283
12.2.2 建立帶參函數 285
12.3 程序包 287
12.3.1 包的基本操作 288
12.3.2 系統預定義包 289
12.3.3 私有過程和函數 290
12.3.4 使用包重載 291
12.3.5 使用包構造過程 293
12.4 觸發器 296
12.4.1 觸發器的類型 296
12.4.2 觸發器的基本操作 297
12.4.3 語句觸發器 298
12.4.4 觸發器的新值和舊值 300
12.4.5 行觸發器 301
12.4.6 INSTEAD OF觸發器 304
12.4.7 系統事件觸發器 305
第三篇 Oracle進階篇
第13章 用戶許可權與安全 309
13.1 管理用戶 309
13.1.1 創建用戶 309
13.1.2 修改用戶 312
13.1.3 刪除用戶 314
13.1.4 查看用戶會話信息 314
13.2 用戶配置文件 316
13.2.1 資源限制參數 316
13.2.2 口令限制參數 317
13.2.3 創建用戶配置文件 318
13.2.4 管理配置文件 320
13.2.5 通過OEM管理配置文件 321
13.3 許可權 323
13.3.1 許可權的概述 323
13.3.2 系統許可權 325
13.3.3 對象許可權 328
13.3.4 查看許可權信息 331
13.4 角色 333
13.4.1 角色的概述 333
13.4.2 系統預定義角色 333
13.4.3 創建角色 335
13.4.4 修改用戶的默認角色 336
13.4.5 禁用和啟用角色 337
13.4.6 修改角色 338
13.4.7 刪除角色 338
13.4.8 查看角色信息 339
13.4.9 通過OEM管理角色 340
第14章 資料庫審計 343
14.1 審計概述 343
14.1.1 審計及其作用 343
14.1.2 審計類型 344
14.1.3 啟動資料庫審計 345
14.2 語句審計 346
14.2.1 語句審計概述 346
14.2.2 使用語句審計 348
14.3 許可權審計 349
14.4 對象審計 350
14.4.1 對象審計概述 350
14.4.2 使用對象審計 351
14.5 審計信息查詢 353
14.6 細粒度的審計 355
第15章 其他模式對象 358
15.1 索引 358
15.1.1 索引類型 358
15.1.2 指定索引選項 361
15.1.3 創建B樹索引 363
15.1.4 創建點陣圖索引 364
15.1.5 創建反向鍵索引 364
15.1.6 創建基於函數的索引 365
15.1.7 管理索引 365
15.2 索引組織表 368
15.2.1 索引組織表與標准表 368
15.2.2 溢出存儲 369
15.3 臨時表 370
15.3.1 臨時表的特點 370
15.3.2 臨時表的類別 371
15.3.3 創建與使用臨時表 371
15.4 外部表 373
15.4.1 創建外部表 373
15.4.2 處理外部表錯誤 375
15.5 分區表與分區索引 379
15.5.1 分區概述 379
15.5.2 創建分區表 380
15.5.3 建立分區表索引 384
15.5.4 管理分區表 386
15.6 簇與簇表 389
15.6.1 創建簇和簇表 389
15.6.2 創建簇索引 391
15.6.3 管理簇 391
15.7 視圖 393
15.7.1 創建視圖 393
15.7.2 可更新的視圖 396
15.7.3 刪除視圖 399
15.8 序列 399
15.8.1 創建序列 399
15.8.2 修改序列 402
15.8.3 刪除序列 402
15.9 同義詞 403
第16章 資料庫對象類型 404
16.1 對象類型簡介 404
16.2 創建對象類型 404
16.2.1 創建簡單對象類型 405
16.2.2 創建帶有函數的對象類型 406
16.3 獲取對象類型信息 408
16.4 在資料庫表中使用對象類型 409
16.4.1 列對象 409
16.4.2 對象表 411
16.4.3 對象標識符和對象引用 414
16.4.4 比較對象值 417
16.5 在PL/SQL中使用對象類型 419
第17章 大對象 424
17.1 大對象(LOB)簡介 424
17.2 包含大對象的表 425
17.2.1 包含CLOB數據列的表 425
17.2.2 包含BLOB數據列的表 426
17.2.3 包含BFILE數據列的表 427
17.3 在PL/SQL中使用大對象 429
17.3.1 APPEND() 429
17.3.2 CLOSE() 431
17.3.3 COMPARE() 432
17.3.4 COPY() 433
17.3.5 CREATETEMPORARY() 434
17.3.6 ERASE() 435
17.3.7 FILECLOSEALL() 436
17.3.8 FILEEXISTS() 436
17.3.9 FILEGETNAME() 437
17.3.10 FREETEMPORARY() 438
17.3.11 GETCHUNKSIZE() 439
17.3.12 GET_STORAGE_LIMIT() 439
17.3.13 GETLENGTH() 439
17.3.14 INSTR() 440
17.3.15 ISOPEN() 441
17.3.16 ISTEMPORARY() 441
17.3.17 LOADBLOBFROMFILE() 442
17.3.18 LOADCLOBFROMFILE() 442
17.3.19 OPEN() 444
17.3.20 READ() 445
17.3.21 SUBSTR() 446
17.3.22 TRIM() 447
17.3.23 WRITE() 447
17.3.24 WRITEAPPEND() 448
17.4 LONG和LONG RAW類型 448
17.4.1 包含LONG或LONG RAW
數據列的表 448
17.4.2 將LONG和LONG RAW數據列轉
換為LOB 449
第18章 Oracle SQL語句優化 451
18.1 一般的SQL優化技巧 451
18.1.1 避免使用「*」替代所有列 451
18.1.2 用TRUNCATE代替DELETE 452
18.1.3 在確保完整性的情況下多用
COMMIT語句 453
18.1.4 減少表的查詢次數 453
18.1.5 用EXISTS替代IN 453
18.1.6 用WHERE替代HAVING 454
18.1.7 使用「<=」替代「< 455
18.2 表的連接 456
18.2.1 選擇FROM表的順序 456
18.2.2 WHERE子句的連接順序 456
18.2.3 使用表的別名 457
18.3 有效使用索引 458
18.3.1 使用索引的基本事項 458
18.3.2 避免對索引列使用NOT
關鍵字 458
18.3.3 避免對唯一索引列使用
IS (NOT) NULL 459
18.3.4 選擇復合索引主列 459
18.3.5 監視索引是否被使用 460
第四篇 備份與恢復篇
第19章 用戶管理的備份與恢復 461
19.1 資料庫備份與恢復 461
19.1.1 資料庫備份 461
19.1.2 資料庫恢復 464
19.2 用戶管理的備份 465
19.2.1 備份命令 466
19.2.2 完全資料庫離線備份 466
19.2.3 部分資料庫離線備份 468
19.2.4 部分資料庫聯機備份 469
19.2.5 備份控制文件 471
19.2.6 驗證備份數據 472
19.3 用戶管理的完全恢復 473
19.3.1 用戶管理的完全恢復機制 473
19.3.2 非歸檔模式下的資料庫恢復 475
19.3.3 歸檔模式下的數據文件恢復 477
19.3.4 在MOUNT狀態下對
SYSTEM表空間恢復 478
19.3.5 在OPEN狀態下對數據文件
進行恢復 480
19.3.6 在OPEN狀態中恢復未備份的
數據文件 482
19.3.7 恢復控制文件 483
19.4 用戶管理的不完全恢復 486
19.4.1 不完全恢復機制 486
19.4.2 基於時間的恢復 488
19.4.3 基於更改的恢復 492
19.4.4 基於撤銷的恢復 496
第20章 使用RMAN工具 499
20.1 RMAN簡介 499
20.1.1 RMAN的特點 499
20.1.2 RMAN組件 500
20.1.3 保存RMAN資料檔案庫 503
20.1.4 配置RMAN 504
20.1.5 RMAN的基本操作 509
20.2 RMAN備份 512
20.2.1 RMAN備份類型 512
20.2.2 BACKUP命令 514
20.2.3 增量備份 516
20.2.4 備份資料庫 517
20.2.5 多重備份 521
20.2.6 鏡像復制 522
20.3 RMAN恢復 523
20.3.1 RMAN恢復機制 524
20.3.2 資料庫非歸檔恢復 525
20.3.3 資料庫歸檔恢復 527
20.3.4 塊介質恢復 528
20.3.5 移動數據文件到新的位置 529
20.3.6 基於時間的不完全恢復 530
20.3.7 基於撤銷的不完全恢復 531
20.3.8 基於更改的不完全恢復 532
20.4 其他操作 533
20.4.1 數據字典 533
20.4.2 LIST命令 534
20.4.3 SHOW命令 536
20.4.4 REPORT命令 536
第21章 數據載入與傳輸 538
21.1 Data Pump工具 538
21.1.1 Data Pump工具的特點 538
21.1.2 與數據泵相關的數據字典視圖 539
21.1.3 使用Data Pump工具前的准備 539
21.2 Data Pump Export工具 540
21.2.1 Data Pump Export選項 540
21.2.2 使用Data Pump Export 543
21.3 Data Pump Import工具 547
21.3.1 Data Pump Import選項 547
21.3.2 使用Data Pump Import 550
21.4 表空間的傳輸 553
21.5 SQL*Loader 556
21.5.1 SQL*Loader概述 556
21.5.2 數據載入實例 557
第22章 Oracle閃回技術 561
22.1 閃回技術概述 561
22.2 閃回表(Flashback Table) 562
22.2.1 閃回表概述 562
22.2.2 使用閃回表 563
22.3 閃回刪除(Flashback Drop) 565
22.3.1 回收站概述 565
22.3.2 使用閃回刪除 567
22.3.3 管理回收站 568
22.4 閃回版本查詢(Flashback
Version Query) 571
22.4.1 閃回版本查詢概述 571
22.4.2 使用閃回版本查詢 572
22.5 閃回事務查詢(Flashback Transaction Query) 573
22.5.1 閃回事務查詢概述 574
22.5.2 使用閃回事務查詢 575
22.6 閃回資料庫(Flashback Database) 576
22.6.1 閃回資料庫概述 576
22.6.2 使用閃回資料庫 579
22.7 閃回數據歸檔(Flashback Data
Archive) 581
22.7.1 閃回數據歸檔概述 581
22.7.2 創建與管理閃回數據歸檔區 582
22.7.3 使用閃回數據歸檔 583
22.7.4 清除閃回數據歸檔區數據 587
第五篇 綜合應用篇
第23章 酒店管理系統 589
23.1 系統分析與設計 589
23.1.1 需求分析 589
23.1.2 系統功能設計 590
23.2 資料庫設計 590
23.2.1 創建數據表 590
23.2.2 視圖設計 594
23.2.3 主鍵自增設計 595
23.3 公共模塊設計 595
23.3.1 編寫資料庫連接類 595
23.3.2 封裝常用的操作資料庫的方法 597
23.3.3 DAO公共類 599
23.4 系統登錄模塊設計 600
23.4.1 設計登錄窗體 601
23.4.2 用戶名下拉菜單的實現 602
23.4.3 【登錄】按鈕的事件處理 602
23.5 用戶管理模塊設計 604
23.5.1 添加用戶 604
23.5.2 刪除用戶 606
23.5.3 修改密碼 607
23.6 收銀結賬模塊設計 609
23.6.1 開單功能實現 609
23.6.2 簽單功能實現 611
23.6.3 結賬功能實現 612
第24章 個人論壇 615
24.1 系統分析與設計 615
24.1.1 需求分析 615
24.1.2 系統設計 615
24.2 資料庫設計 616
24.2.1 用戶表 616
24.2.2 版塊表 617
24.2.3 帖子表 617
24.2.4 回復表 618
24.3 數據模型公共類 619
24.3.1 用戶類 619
24.3.2 帖子和回復父類 619
24.3.3 帖子類 620
24.4 Dao實現 621
24.4.1 連接資料庫 621
24.4.2 UserDao實現 623
24.4.3 BoardDao實現 625
24.4.4 ReplyDao實現 627
24.5 Web層實現 631
24.5.1 登錄 631
24.5.2 主界面 633
24.5.3 帖子列表 635
24.5.4 回復帖子 637
24.5.5 修改回復 639
24.5.6 刪除回復 640
第25章 日誌管理模塊 642
25.1 准備工作 642
25.1.1 安裝Oracle客戶端 642
25.1.2 配置客戶端實例 646
25.1.3 使用Oracle Net Manager
查看配置 650
25.1.4 使用工具測試連接 653
25.1.5 使用.NET程序測試連接 655
25.1.6 使用圖形界面測試 658
25.2 資料庫設計 660
25.2.1 創建表 660
25.2.2 創建主鍵和觸發器 661
25.3 通用模塊 662
25.3.1 編寫資料庫類 662
25.3.2 製作模板 664
25.4 實現首頁 667
25.4.1 製作頁面布局 667
25.4.2 編寫實現代碼 670
25.4.3 顯示日誌分類 673
25.4.4 顯示最新日誌 675
25.5 日誌分類管理 676
25.5.1 查看分類 676
25.5.2 修改分類 678
25.5.3 刪除分類 680
25.5.4 添加分類 680
25.6 日誌管理 681
25.6.1 查看日誌列表 681
25.6.2 查看日誌正文 682
25.6.3 管理日誌列表 684
25.6.4 添加日誌 685
25.6.5 修改日誌 688
第26章 留言本 690
26.1 准備工作 690
26.1.1 創建Net服務名 690
26.1.2 安裝擴展 692
26.1.3 測試連接 693
26.2 資料庫設計 695
26.3 功能實現 695
26.3.1 顯示留言 695
26.3.2 發表留言 698
26.3.3 回復留言 701
26.3.4 刪除留言 703

⑼ Oracle開發藝術的目 錄

第1章 大話資料庫編程規范 1
1.1 編程規范概述 1
1.2 書寫規范 2
1.2.1 大小寫風格 2
1.2.2 縮進風格 2
1.2.3 空格及換行 3
1.2.4 其他 4
1.3 命名規范 4
1.3.1 表和欄位命名規范 4
1.3.2 其他對象命名 5
1.4 變數命名 7
1.5 注釋規范 8
1.6 語法規范 9
1.7 腳本規范 12
規則1.7.1 13
規則1.7.2 13
規則1.7.3 13
第2章 Oracle開發常用工具及使用 14
2.1 AWR工具與性能優化 14
2.1.1 AWR介紹 14
2.1.2 AWR的安裝與配置 15
2.1.3 AWR報表使用 15
2.1.4 分析AWR報表基本思路 17
2.1.5 案例 17
2.2 SQL_TRACE事件 24
2.2.1 SQL_TRACE/事件是什麼 24
2.2.2 總體流程介紹 24
2.2.3 SQL_TRACE事件具體使用方法 24
2.2.4 案例分析 28
2.2.5 小結 32
2.3 計時和剖析工具 32
2.3.1 PLSQL_PROFILER概述 34
2.3.2 剖析舉例 37
2.3.3 安全性 45
第3章 探索MERGE方法 46
3.1 MERGE是什麼 46
3.2 Oracle 10g中MERGE的完善 48
3.2.1 UPDATE和INSERT動作可只出現其一 48
3.2.2 可對MERGE語句加條件 48
3.2.3 可用DELETE子句清除行 49
3.2.4 可採用無條件方式INSERT 49
3.3 MERGE誤區探索 49
3.3.1 無法在源表中獲得一組穩定的行 49
3.3.2 DELETE子句的WHERE順序必須在最後 51
3.3.3 DELETE 子句只可以刪除目標表,而無法刪除源表 52
3.3.4 更新同一張表的數據,需擔心USING的空值 53
3.4 MERGE的巧妙運用 54
第4章 神秘的NULL和令人討厭的CHAR 58
4.1 神秘的NULL 59
4.1.1 NULL概述 59
4.1.2 NULL與函數 64
4.1.3 NULL與索引 79
4.1.4 NULL與SQL 87
4.1.5 NULL與PL/SQL 97
4.1.6 再談NULL和空字元串區別 101
4.1.7 NULL總結 101
4.2 令人討厭的CHAR 102
4.2.1 CHAR與VARCHAR2基礎 102
4.2.2 CHAR與SQL 105
4.2.3 CHAR與綁定變數 109
4.2.4 CHAR與PL/SQL 111
4.2.5 CHAR總結 112
第5章 報表開發之擴展GROUP BY 113
5.1 擴展GROUP BY概述 113
5.2 ROLLUP 114
5.2.1 UNION ALL實現ROLLUP功能 114
5.2.2 ROLLUP分組 116
5.2.3 部分ROLLUP分組 120
5.2.4 ROLLUP總結 121
5.3 CUBE 121
5.3.1 CUBE分組 121
5.3.2 部分CUBE分組 123
5.3.3 CUBE總結 124
5.4 GROUPING SETS實現小計 124
5.4.1 GROUPING SETS分組 124
5.4.2 部分GROUPING SETS分組 126
5.4.3 CUBE、ROLLUP作為GROUPING SETS的參數 126
5.4.4 GROUPING SETS總結 128
5.5 組合列分組、連接分組、重復列分組 128
5.5.1 組合列分組 130
5.5.2 連接分組 132
5.5.3 重復列分組 134
5.5.4 組合列分組、連接分組、重復列分組總結 134
5.6 3個擴展分組函數:GROUPING、GROUPING_ID、GROUP_ID 135
5.6.1 GROUPING函數 135
5.6.2 GROUPING_ID函數 138
5.6.3 GROUP_ID函數 142
5.6.4 擴展GROUP BY函數總結 144
5.7 擴展分組綜合實例 144
第6章 探索Oracle自動類型轉換 149
6.1 為什麼不建議使用自動類型轉換 150
6.2 自動類型轉換規則 156
6.3 自動類型轉換常見錯誤 166
第7章 Where in list問題解析 169
7.1 問題引入:動態SQL構造 170
7.2 使用正則表達式解決 172
7.3 使用常規字元串函數及動態視圖 173
7.4 使用集合構造偽表 176
7.5 Where in list性能問題 178
7.6 Where in list問題總結 188
第8章 例說資料庫表設計和大量數據處理方法 189
8.1 根據業務需求規劃表結構 189
8.2 主鍵的確定 195
8.3 表的拆分、合並及數據的規范和反規范化 199
8.4 數據類型的選擇 199
8.5 表的分區 203
8.6 表的壓縮 203
8.7 抽取數據 205
8.7.1 利用SQL*PLUS的SPOOL功能 205
8.7.2 利用UTL_FILE 207
8.7.3 利用第三方工具 207
8.8 轉換數據 207
8.8.1 數據的增刪改 208
8.8.2 數據匯總 211
8.9 載入數據 227
8.9.1 利用SQLLDR載入 227
8.9.2 利用外部表載入 229
8.9.3 利用資料庫鏈接載入 233
8.9.4 利用分區交換技術載入 234
8.10 邏輯導入/導出數據 240
第9章 數據審核 242
9.1 審核的分類 242
9.2 列審核設計 243
9.2.1 直接使用SQL語句 245
9.2.2 提高審核效率 248
9.2.3 管理審核關系 254
9.2.4 單個列的復雜審核 257
9.3 行審核設計 258
9.3.1 重碼的審核 259
9.3.2 直接使用SQL語句 260
9.3.3 管理審核關系 261
9.3.4 行間包含四則運算的審核思路 266
9.3.5 更復雜的行間審核思路 267
9.4 小結 267
第10章 趣談Oracle分析函數 269
10.1 概述 269
10.2 函數語法 270
10.3 函數列表 276
10.4 函數用法 277
10.4.1 最常見的分析函數應用場景 279
10.4.2 ROWS的具體用法 280
10.4.3 RANGE的具體用法 281
10.4.4 KEEP的用法 283
10.5 函數功能詳解 284
10.5.1 統計函數 284
10.5.2 排序函數 285
10.5.3 數據分布函數 287
10.5.4 統計分析函數 289
10.6 分析函數在BI及統計上的應用 290
10.6.1 現狀分析 290
10.6.2 發展分析 297
10.7 自定義聚集函數 298
10.7.1 自定義聚集函數介面簡介 298
10.7.2 應用場景一:字元串聚集 299
10.7.3 應用場景二:指數移動平均線 301
第11章 Oracle層次查詢 305
11.1 概述 305
11.2 樣例數據 306
11.3 CONNECT BY和START WITH查詢 306
11.3.1 概述 306
11.3.2 基本語法 306
11.3.3 樣例 308
11.4 SYS_CONNECT_BY_PATH函數 313
11.5 WMSYS.WM_CONCAT非公開函數 314
第12章 號段選取應用 316
12.1 問題的提出 316
12.2 相關基礎知識 317
12.2.1 偽列rownum和level 317
12.2.2 利用層次查詢構造連續的數 317
12.2.3 用lead和lag獲得相鄰行的欄位值 318
12.3 解決問題 320
12.3.1 已知號碼求號段 320
12.3.2 根據號段求出包含的數 324
12.3.3 求缺失的號 326
12.3.4 求尚未使用的號段 330
12.4 小結 334
第13章 分析SQL執行計劃的關注點 335
13.1 返回行與邏輯讀的比率 335
13.2 聚合查詢 338
13.3 返回行的數量 341
13.4 Oracle預測行准確與否 342
13.5 Predicate Information 346
13.6 動態采樣 348
13.7 誰是主要矛盾 349
第14章 Oracle開發誤區探索 352
14.1 避免對列運算 352
14.2 消除隱式轉換 354
14.3 關注空格 354
14.4 存儲過程與許可權 355
14.5 提防DDL提交事務 357
14.6 Insert into 錯誤 359
14.7 關於or 360
14.8 sequence中的cache 361
14.9 樹形查詢易錯處 364
14.10 小心保留字 367
14.11 函數索引陷阱 371
14.12 外連接陷阱 374
14.13 標量子查詢 375
第15章 提升PL/SQL開發性能漫談 378
15.1 重視解析 378
15.1.1 觸發器盡量考慮內部代碼過程封裝 378
15.1.2 避免動態SQL 380
15.1.3 OLTP系統中盡量使用綁定變數 382
15.2 關注調用 384
15.2.1 減少對sysdate的調用 384
15.2.2 避免對mod函數的調用 385
15.2.3 設法減少表掃描次數 386
15.2.4 避免SQL中的函數調用 391
15.3 簡潔為王 395
15.3.1 盡量用簡單SQL替代PL/SQL邏輯 395
15.3.2 避免不必要的排序 397
15.3.3 利用Oracle現有功能 399
15.4 細致入微 400
15.4.1 使用pls_integer類型 400
15.4.2 避免數據類型轉換 400
15.4.3 IF的順序有講究 402
15.4.4 設計開發對列是否為空慎重決定 404
15.4.5 分布式應用開發不可不知的HINT(driving_site) 407
第16章 管道函數的學習與實戰應用 410
16.1 管道函數編寫要點 410
16.2 功能描述及案例 411
16.2.1 可直接用TABLE()操作符方式輸出結果集 411
16.2.2 結果集可作為表來使用,直接和其他表相關聯 411
16.2.3 實現實時跟蹤 412
16.3 管道函數注意點 414
16.3.1 清楚管道函數只是表函數的一種 414
16.3.2 管道函數與DML 415
16.3.3 管道函數集合的限制 416
16.3.4 與管道函數相關的異常NO_DATA_NEEDED 417
第17章 巧用鎖特性避免重復啟動同一程序 420
17.1 基本技巧介紹 420
17.2 原理介紹 422
17.3 程序代碼 423
17.4 測試 426
17.5 需要注意的點 427
第18章 11g R2 新特性之遞歸with編程精粹 428
18.1 上下級關系 429
18.2 構造數列 435
18.3 排列組合問題 441
18.4 沿路徑計算 457
18.5 國際SQL挑戰賽 473
第19章 不可能的任務?超越Oracle 479
19.1 為何選擇cube 480
19.1.1 cube簡介 480
19.1.2 cube優勢 480
19.1.3 測試環境 481
19.2 newkid的設計思路和優化步驟 482
19.2.1 一次掃描求出16種分組 482
19.2.2 一次掃描求出1種分組,並基於此再一次掃描求出其餘分組 484
19.2.3 一次掃描求出1種分組,並基於此再多次分層累計求出其餘分組 485
19.2.4 變數長度和類型的優化 487
19.3 為何選擇OCI 488
19.3.1 匯總演算法的翻譯和改進 488
19.3.2 輸入和輸出的實現和改進 489
19.3.3 不要忽視物理存儲對資料庫操作的影響 490
19.3.4 不成功的優化教訓 490
19.4 總結 493
第20章 動態SQL擴展 494
20.1 動態SQL用途和應用場景 494
20.2 EXECUTE IMMEDIATE語法 495
20.2.1 執行DDL、DCL語句 495
20.2.2 構造通用SQL處理 496
20.2.3 執行復雜業務邏輯查詢 498
20.2.4 綁定變數 502
20.2.5 BULK COLLECT動態SQL 505
20.3 使用DBMS_SQL包 507
20.3.1 DBMS_SQL函數和過程說明 507
20.3.2 DBMS_SQL執行步驟 508
20.3.3 DBMS_SQL應用場景 509
20.3.4 DBMS_SQL與EXECUTE IMMEDIATE比較 509
後記 511

⑽ 資料庫管理員工作的基本職責說明

資料庫管理員負責各系統數據的災備工作,研究事務所的數據和信息安全。下面是我整理的資料庫管理員工作的基本職責說明。

資料庫管理員工作的基本職責說明1

職責

1、負責資料庫管理系統的運維管理,完成資料庫安裝、監控、備份、測試、恢復等基本工作,從而保證資料庫管理系統的穩定性、安全性和高性能;

2、監視監控資料庫的警告日誌,定期做備份審查、歸檔和刪除;

3、監控資料庫的日常會話情況,及時發現異常會話進程並積極採取有效處理措施予以解決,從而避免對業務運營造成影響;

4、監控資料庫的碎片和剩餘表空間情況,及時掌握表空間的擴展速度以及剩餘空間分布情況,根據變化動態調整資料庫的存儲方案以優化資源使用;若有需要提前做出存儲介質擴容的方案規劃和未來存儲需求計劃;

5、關注資料庫管理系統SQL Server版本的升級信息和與SQL Server相關的漏洞補丁信息,在測試環境中確認不會對業務運營造成影響的前提下實施生產環境下的SQL Server版本升級和補丁補漏,並對整個升級補漏過程進行監控和日誌審查,確認升級補漏真正成功完成;

6、制定資料庫備份計劃,制定災難恢復計劃中的數據恢復相關要求並定期演練,確保災難出現時能對資料庫數據進行有效恢復;

7、對資料庫的備份策略要根據業務要求和實際情況進行更改,對資料庫的日常備份作業執行進行監控和狀態確認,對資料庫的備份數據進行驗證和介質存放管理,與資料庫的設計廠商保持聯絡和維持技術溝通;

8、制定資料庫用戶管理要求,建立資料庫底層結果和訪問模型,制定資料庫性能監控標准和指標;對通過資料庫管理系統進行的任何針對資料庫對象的更改進行統一管理;

9、使用SQL語句對資料庫進行管理維護和性能優化;

10、當發現不同用戶需求之間互相抵觸進而造成進程死鎖時,進行處理的同時協助相關人員協調用戶需求,配合應用系統的資料庫設計人員對系統資源進行合理分配;

11、負責資料庫管理系統的管理用戶批准和其對應的管理許可權設置,採取措施防止資料庫被未經授權的訪問和破壞;

12、協助有關部門配合相關崗位完成U9系統的項目實施和應用升級、治木軟體系統的項目實施和應用升級;

13、完成信息部經理交代的有關任務,協助公司各部門完成相關的工作;

任職要求

1、本科以上學歷,計算機相關專業,具備專業的計算機應用知識,年齡不限,性別不限,有SQL Server認證者(MCSA)優先;

2、熟悉SQL Server資料庫平台下的數據備份/數據恢復,了解資料庫性能監控和優化,掌握SQL代碼編寫,對資料庫安全性有一定認識,理解資料庫設計,理解索引設計、索引維護和查詢引擎, 懂得容量監控與規劃;

3、思維清晰,具備優秀的溝通理解能力;邏輯推算及動手能力強,有獨檔一面的工作能力,且能承受較大的工作壓力;

資料庫管理員工作的基本職責說明2

職責:

1.負責資料庫的安裝配置及升級改造,性能監控及優化,故障診斷和排除,數據遷移,資料庫備份、復制、鏡像等容災方案的制定和實施,以及資料庫的安全管理、帳戶許可權管理;

2.維護線上業務核心資料庫的7*24安全、穩定運行;

3.負責資料庫的架構規劃、評估、實施,實現高可用、可擴展架構;

4.熟悉MySQL的運行機制和體系架構, 精通/熟悉SQL,熟悉資料庫設計與優化;

5.對資料庫新增內容進行數據分析和挖掘;

任職要求:

1.熟悉資料庫管理工具,如Navicat等輕量化管理工具;

2.熟練使用MySql,Oracle等資料庫相關工具;

3.參與MYSQL腳本管理、SQL Advisor、數據質量管理等工具與平台的開發與實現;

4.至少熟悉java或Python中的一種開發語言

資料庫管理員工作的基本職責說明3

職責:

1、負責公司資料庫日常運行監控、管理和性能分析,並進行故障處理和優化。

2、快速處理解決資料庫系統運行中出現的故障和問題,保證業務數據安全、可用;

3、負責Oracle資料庫的日常運行維護、備份恢復、升級優化、擴容遷移和安全管理工作;

4、為架構/開發團隊提供Oracle資料庫相關的技術支持服務,包括對象設計、SQL編寫規范制定、指導、審核等;

5、負責Oracle資料庫平台架構和高可用方案的規劃設計工作,並通過分析業務發展趨勢,做出相應的容量規劃;

6、負責Oracle資料庫的業務數據分析與挖掘、性能分析與系統優化、問題跟蹤與管理;

7、負責系統軟、硬體的部署、監控以及調優,包括 JVM 的調優、中間件調優、底層硬體設備的優化;

8、撰寫並維護工作相關的資料庫設計文檔;

任職要求:

1、計算機或者相關專業本科畢業,5年以上ORACLE資料庫維護和優化經驗;

2、有大型在線交易系統和企業應用系統(例如:ERP、SRM、WMS等)資料庫規劃設計和優化經驗;

3、熟練安裝搭建資料庫伺服器及集群系統、雙機熱備,包括SQL Server和Oracle;

4、精通 Oracle資料庫原理和運行機制,具有豐富的管理與調優經驗;

5、精通RAC、Data Guard、OGG配置管理以及故障排除;

6、熟悉linux ,AIX環境下資料庫運行維護;熟悉VERITAS SF文件系統;

7、精通Oracle資料庫11g/12c分庫,分表,SQL解析,數據路由等。

8、為人正直,工作責任心強,良好的溝通和為人處事的能力、良好的團隊合作精神;

9、持有OCP證書;

10、擁有Ansible、python經驗者或擁有OCM等證書者優先考慮。

資料庫管理員工作的基本職責說明4

職責:

1、負責公司資料庫架構規劃、容量規劃、系統調優;

2、負責資料庫日常運維、故障處理,備份恢復、性能調優及補丁升級等;

3、規劃、設計、評審和優化資料庫設計方案;

4、配合研發制定資料庫技術方案,分庫分表策略,數據遷移方案 ;

5、指導開發人員完成資料庫建模、資料庫索引優化,資料庫操作語句優化;

任職要求:

1、計算機相關專業本科及以上學歷;

2、五年以上DBA相關經驗;

3、精通MySQL資料庫的在Linux下的安裝布署、開發維護、管理及性能調優;

4、熟悉MySQL存儲引擎InnoDB、能夠進行SQL語句和讀寫分離的優化分析/設計,並具有高並發下讀寫分離維護經驗。;

5、熟悉MySQL事務和鎖,能進行鎖分析和分析優化;

6、熟悉其他至少兩種關系型資料庫SQL Server/Oracle/Postgresql;

7、熟悉ETL概念及過程,有一定的存儲過程或ETL相關的開發經驗;

8、熟悉Linux,熟悉腳本編寫,有自動化經驗;掌握至少一門腳本語言(Shell、Python、Perl);

9、熟悉java開發優先考慮。

10、熟悉NoSql優先考慮。

資料庫管理員工作的基本職責說明5

職責:

1、負責系統資料庫(Oracle、Mysql為主)的資料庫規劃、部署、優化、故障排查;日常運維及管理工作;

2、負責資料庫的存儲規劃管理,協助系統規劃設計、防火牆等網路安全設備的安裝調試、故障排除、安裝、配置、升級與遷移;

3、負責公司項目數據備份策略制定、實施等相關信息安全工作;

4、負責制定和實施資料庫備份恢復策略;

5、負責資料庫監控,性能檢查和優化工作;

6、負責診斷、故障檢測和解決任何資料庫相關的問題,配合其他資料庫相關管理和維護工作。

7、配合開發人員及其他項目組開展日常技術支持、故障排查、系統日常維護

任職資格:

1、熟悉資料庫結構設計,對系統架構和資料庫理論有較好的理解;

2、熟悉Oracle或Mysql資料庫體系結構和性能優化;

3、熟悉SQL優化原理,具備較好的SQL優化能力;

4、熟悉一種或者多種主流的UNIX/LINUX系統;