Oracle學習筆記

第一章:

進行數據庫邏輯模型設計的時候,邏輯模型是通過實體-關係圖來表示的,這種表示方法叫做”E-R圖”(Entity-Relationship Model).邏輯模型由以下三個元素組成

1.      實體

2.      屬性

3.      關係

 

在關係數據庫系統中,最基本的元素是表

 

列又稱爲字段(Field)或者屬性

 

數據字典就是Oracle自動創建的表以及視圖組成,我們不能修改

 

審計信息(如誰存取或者修改過對象)

 

輸入SQL語句:DROP TABLE students,Oracle會存放數據字典中有關students的表信息刪除

 

數據字典的每個視圖集有三種視圖前綴爲

USER(在當前用戶的模式內)

ALL(包括用戶有權限訪問的內容)

DBA(爲全部用戶可存取的視圖)

 

第二章:

數據塊是Oracle最小的存儲單位

一個共享服務器模式的系統有下面的三個部分組成

1.      監聽器

2.      一個或者多個調度進程

3.      一個或者多個共享服務進程

 

第四章:

配置監聽器的方法有兩種

1.      通過圖形界面工具Netr Manager

2.      直接使用文本編輯器編輯監聽器配置文件listener.ora

 

監聽器是位於服務器端的,獨立運行的一個後臺進程

 

UNIX下啓動監聽器的命令是su – oracle

我們可以讓連接描述符起個別名”網絡服務名”

 

 

第五章:

SQL*Plus是DBA的最愛!(一下的操作爲unix平臺)

sqlplus啓動SQL*Plus

輸入用戶名是:system@myzdb

其中system是數據庫的用戶名,myzdb就是網絡服務名

SQL語句結束有3中方式:以分號結束(;);在單獨的一行,輸入斜槓(/);以一行空白航結束.

SQL> SELECT EMPLOYRR_ID, LAST_NAME,JOD_ID, SALARY FROM ENP_DETAILS_VIEW WHERE SALARY > 12000;

用於查詢工資高於12000元的員工

PL/SQL塊是以DECLARE或BEGIN開頭並以END結束的一段代碼

以下的代碼段往表中插入1000條記錄

SQL> BEGIN

FOR V_Counter IN 1..1000 LOOP

       INSERTINTO A4

              VALUES(‘21212121fsaasd’);

       ENDLOOP;

COMMIT;

END;

/

 

 

SQL> host dir d:\

可以用這種方法來執行系統命令host是關鍵字 dir是系統命令

 

登陸命令:

語法 CONNECTusername/passwd@網絡服務名SYSOPER|SYSDBA

SYSOPER|SYSDBA表示以超級用戶的身份來登陸數據庫

 

SQL>DISCONNECT 註銷

 

編輯命令:

語法:A[PPEND]test

把文本添加到當前行的末尾

 

語法:C[HANG]/舊字符串/新字符串

修改字符串

 

語法:CL[EAR] 選項

清楚某項設置或者內容

 

語法:DEL[n|n m|n*|n LAST| *|* n| * LAST| LAST]

*代表當強行

刪除指定緩衝區中指定的行

 

語法:I[NPUT][text]

在當前緩衝區中的當前航再添加一行

 

語法: L[IST][n|n m|n *|n LAST| *|* n| * LAST| LAST]

顯示

 

語法:PRO[MPT][text]

顯示文本信息

 

語法:DEF[INE][variable]|[variable = text]

定義一個變量,並把一個字符值賦給它;或者顯示變量的值

 

語法:SETsystem_variable value

設置SQL*Plus的環境

 

語法:R[UN]    也可以用/重複最後一條語句

運行SQL緩衝區中的SQL語句

 

SQL>SET TIMING ON可以跟蹤語句的執行時間

 

用start命令或者@命令可以用來運行一個腳本文件

SQL>@F:\script\ch05_1.SQL

記住要加後綴

 

用Ctrl+C可以終止正在運行的SQL語句

 

SQL>COLUMN rec_time FORMAT A40

可以用來格式化輸出,就是把rec_time這個字段限制在最大40個字符

 

COLUMN SALARY FORMAT $99,999

可以吧工資格式化成這種形式

 

站點配置文件的名字通常叫glogin.sql在開啓SQL*Plus時候自動運行,所以我們可以修改這個文件來設置環境

 

SQL>SPOOL D:\scrip/sptest.txt

可以指定將查詢結果輸出到哪個文件

SQL>SPOOL off來關閉

 

替換變量是用&

SQL>SELECT * FROM PHONE_INFOR WHEREPRICE>&unitprice

之後系統會要求你舒服unitprice

每次執行這條SQL語句,不需要對SQL語句做任何修改,只要按照提示輸入值就可以

 

也可以用OEM來管理數據庫

 

 

 

第六章:

打開數據庫步驟

先登陸數據庫

1.      SQL> CONNECT sys AS SYSDBA

2.      SQL>STARTUP啓動的信息全部包含在警報文件中

可以通過SQL>SHOWPARAMETER BACKGROUND_DUMP_DEST來現實警報文件的路徑

 

啓動Oracle數據庫要經歷3個階段

1.      啓動實例

2.      裝載數據庫

3.      打開數據庫

 

初始化參數文件SPFILE(二進制,在DBA中可以永久修改)和PFILE(文本模式,在DBA中只能臨時修改)

 

啓動數據庫的時候,Oracle會讀取參數文件中的值,然後根據這些值來對實例和數據庫進行設置

 

可以用SELECTname,value FROM V$PARAMETER

 SQL> SHOW PARAMETERS來顯示所有初始化參數的值

也可以指定顯示初始化參數的值

SQL>SHOW PARAMETER undo_retention

顯示undo_retention參數的值和狀態

或者

SELECT name,value FROM V$PARAMETER WHEREname=’ undo_retention’

/

 

可以根據SPFILE來生成一個PFILE

CREATE PFILE = ‘PFILE的名字’ FROM SPFILE = ‘SPFILE的名字’

反之亦然

 

SQL>STARTUP FORCE;來重啓數據庫

 

SQL> SELECT open_mode FROM v$database顯示數據庫的狀態

 

以下幾種關閉數據庫的方式

SQL>SHUTDOWN IMMEDIATE;

最常用也是最安全的

 

SQL>SHUTDOWN ABORT;最快的關閉方式,但是下次重新啓動的時候要恢復實例

 

SQL>SHUTDOWN NORMAL;爲最慢的方式,等所有的用戶登出數據庫才關閉

 

SQL>SHUTDOWN TRANSACTIONAL;不會丟失客戶端的數據

 

 

第七章:

一個數據庫被分成一個個的邏輯單元,這些邏輯單元叫"表空間".表空間用於存放數據庫對象(如表,索引等).

每個數據庫都擁有一個系統表空間(SYSTEM Tablesoace)和一個輔助表空間(SYSAUX Tablespace).這兩個表空間都是小文件表空間

一個數據文件由多個操作系統塊組成

數據文件有以下特徵:

1.      一個數據文件能屬於一個數據庫

2.      數據文件可以被設置成自動擴展

3.      一個或者多個數據文件形成一個表空間(表空間是Oracle的邏輯結構)

4.      一個數據文件值能屬於一個表空間

 

對於表空間中區的空間管理

1.      字典管理,通過數據字典對區進行管理,正逐漸被淘汰因爲會存儲回滾信息

2.      本地管理,通過位圖對區進行管理

 

可以擴展表空間和讓表空間離線/在線,有三種離線方式一般用NORMAL

 

也可以對錶空間加密

CREATE TABLESPACE securespace

DATAFILE ‘F:\NEWDB\ZDB\userdata1’ SIZE 100M

ENCRYPTION USING ‘AES256’

DEFAULT STORAGE(ENCRYPT)

 

表被存放在表空間,從邏輯結構的角度,表空間是表的容器;從屋裏結構的角度,表實際上存放在數據文件,數據文件是表的屋裏載體.

 

塊組成區,區組成段,段組成表空間,表空間組成數據庫.這是Oracle存儲邏輯結構

 

段有:

1.      數據段

2.      索引段

3.      臨時段(是系統性能降低的徵兆)

4.      回滾段

 

回滾段是根據循環查找來使用的

 

第八章:

 自動存儲管理(Automated Storage Management,ASM)實質上是一個卷管理器,對磁盤進行管理,ASM裝載磁盤組,並使ASN文件對數據庫實例有效,即使數據庫實例能訪問實例.同時提供冗餘對數據進行保護.ASM使管理員從管理成百上千數據文件的繁瑣事務中解脫出來

一個ASM磁盤組由多個磁盤組成,一個ASM文件只能存放在一個磁盤組中,一個文件所獲得的空間要從磁盤組中進行劃分,每個磁盤組都包含ASM元數據.

 

ASM元數據包括:

一個磁盤屬於哪個磁盤組

磁盤組上的有效空間

一個磁盤組中有哪些文件

區(Extent)的位置

 

ASM磁盤

磁盤陣列上的一個磁盤或者分區

一整塊磁盤或者來自一個磁盤上的分區

邏輯卷

網絡文件系統

 

每個磁盤組中的每個磁盤會被分成多個單元(AU)

 

可以存放在磁盤組中的文件有:

控制文件

數據文件,臨時文件和數據文件副本

服務器參數文件

重做日誌文件,歸檔日誌文件和閃回日誌文件

RMAN生成的備份

災難恢復配置

Change Tracking Bitmaps(改變跟蹤圖)

 

ASM磁盤組上創建文件時,最小的可尋址單元是區

 

Oracle讀取數據是進行並行讀取的

 

 

第九章:

Oracle的基本內存結構分成3種:

系統全局區,被所有進程共享的SGA

程序全局區,私有的,每個進程都有一個PGA

軟件代碼區

 

SGA主要由下面的結構組成

數據庫高速緩衝區

重做日誌緩衝區

共享池(字典緩衝區的大小將影響數據庫的整體性能)

大池

Java池

流池

 

可以用自動內存管理來管理這些內存

 

可以用SQL>SELECETNAME,BYTES/1024/1024||’M’ FORM V$SGAINFO

WHERE Name=’BufferCache Size’;來查各種內存的信息

只需改紅字來指定

 

第十章:

進程有用戶進程和Oracle進程

       Oracle進程有服務器進程和後臺進程

              服務器進程有專有服務器進程和共享服務器進程

 

一個實例可以有多個後臺進程

歸檔進程:黨發生一次日誌切換時,歸檔進程將吧重做日誌文件複製到指定的存儲設備上.,可以用ALTER SYSTEM命令動態修改ARCHIVE_MAX_PROCESSES

校驗點進程:黨一個校驗點發生時,Oracle必須更新所有數據文件的頭部,以記錄校驗點的詳細信息

數據庫書寫進程:數據庫書寫進程是後臺進程,它負責吧數據庫告訴緩衝區中的數據寫到磁盤上的數據文件中.

作業隊列進程:作業隊列進程用於批處理,它主要負責作業的運行.

日誌書寫進程:負責重做日誌緩衝區的管理

進程監控進程:負責進程的管理.當用戶進程失敗,進程監控進程將清除該用戶進程佔用的數據庫高速緩衝區及其他各種資源

隊列監控進程:負責監控消息隊列

恢復進程:主要用於處理失敗的分佈式事務.

系統監控進程:數據庫啓動時,系統監控進程負責實例恢復

 

第十一章:

控制文件其實是一個倉庫,該倉庫用於存放數據庫物理結構信息.是一個很小的二進制文件,一個控制文件只屬於一個數據庫

 

要好好的保護控制文件和時常做備份,沒有控制文件數據庫將不能正常進行

 

第十二章:

重做日誌用於記錄所有數據庫的修改

 

重做日誌分成幾組,每組有幾個文件都是一樣的.

 

如果當前的重做日誌組被填滿的時候,Oracle就會切換到下一組有效的重做日誌組

 

如果數據庫運行在歸檔模式,重做日誌文件記錄的內容已經寫到數據文件中並且已經歸檔,則該重做日誌組也被認爲有效

 

第十三章:

Oracle的物理結構

數據文件

控制文件

重做日誌文件

歸檔日誌文件

參數文件

警報文件

跟蹤文件

備份文件

 

邏輯數據庫結構

數據庫

表空間

塊組成區,區組成段,段組成表空間,表空間組成數據庫.這是Oracle存儲邏輯結構

 

SGA叫系統全局區,是一片共享的內存區域,SGA包含以下幾個片內存區域

數據庫高速緩衝區

重做日誌緩衝區

共享池

大池

Java池

流池

 

後臺進程:

歸檔進程

校驗點進程

數據庫書寫進程

作業隊列進程

日誌書寫進程

進程監控進程

隊列監控進程

恢復進程

系統監控進程

其他後臺進程

 

 

第十四章:

DBA角色是預定義的角色,不能把該角色授予普通的用戶

 

有三種類型的預定義賬戶

管理員賬戶

樣例賬戶

內部賬戶

 

可以通過

AlTER USERitem ACCOUNT LOCK來鎖定非法用戶

 

概要文件可以限制用戶對資源的消耗

 

數據庫管理員有4種驗證方式

數據字典驗證,操作系統驗證,口令文件驗證.基於網絡的驗證

 

第十五章:

Oracle是最新的導入導出工具

Orace數據泵由三部分組成:命令行客戶端,數據泵API,元數據API

 

有4種方式移動數據

數據文件複製(最快)

直接路徑(次快)

外部表(直接創建一個DUMP)

網絡鏈接導入

 

主表是用來保存整個導入導出的信息

 

導出模式有以下幾種

全庫導出模式

模式導出

表導出模式

表空間導出模式

可移動表空間導出模式

 

有三種調用接口來導出

命令行接口

參數文件接口

交互式接口

 

第十六章:

SQL是高級非過程化編程語言,它允許用戶在高層數據結構上工作,而不要求用戶指定數據的存取方法,也不需要用戶瞭解數據的具體存放方式

 

SQL語言細分成以下6中

數據定義語言

數據操作語言

事務控制語言

回話控制語言

系統控制語言

 

數據定義語言DDL用於改變對象的定義,可以:

創建,改變,刪除模式對象及其他數據庫結構

重命名數據庫對象

刪除所有數據

管理權限

設置審計

增加註釋

 

數據操作語言DML用於查詢或者操作數據庫對象中的數據.只改變表中的數據,並不會改變表的結構,可以

從表或者視圖中檢索數據

往表或者是視圖中插入數據

修改列的值

有條件地往表或視圖中插入或者更新數據

從表或者視圖中刪除數據

查看SQL語句的執行計劃

鎖住表及用戶

 

事務控制語言

事務控制語言主要用於事務控制,包括提交,回滾,設置回滾點,設置事務

 

系統控制語言

系統控制語言用於修改數據庫實例的屬性

 

事務就是一個SQL語句塊

 

DDL語句是(隱式提交)自動提交的,但是DML語句要用戶輸入COMMIT

 

COMMIT提交後事務將不存在

 

命名事務

SET TRANSACTION NAME’INSERT INTO table tre’

往表中插入數據

INSERT INTO tra VALUES(2,’kk’);

查看事務是否存在

SELECT name FROM v%transaction;

這時事務存在

提交事務

COMMIT

事務將不存在了

 

事務讀一致性

就是說只能看到COMMIT之前的數據,不能看到COMMIT之後的數據

SET TRANSACTION READ ONLY

然後

SELECT * FROM tra

只能看到COMMIT之前的數據

kk

這時候就算在添加數據

INSERT INTO tra

VALUES(2,’bb’);

不COMMIT的話還是看不到的

只有COMMIT後才能看到

 

只讀事務內只能執行下面的SQL語句

不到FOR UPDATE的SELECT語句

鎖表(LOCK TABLE)

設置角色(SET ROLE)

修改會話(ALTERSESSION)

修改實例設置(ALTERSYSTEM )

 

回滾點是事務中的標記,允許用戶回滾事務的一部分,而不是整個事務

更新表eps

UPDATE eps

SET ID = 53221

WHERE name = ‘BEN’

設置回滾點sp1

SAVEPOINT sp1

再次更新表eps

更新表eps

UPDATE eps

SET ID = 77225

WHERE name = ‘XIAO MIN

設置回滾點sp2

SAVEPOINT sp2

回滾到回滾點sp1

ROLLBACK TO SAVEPOINT sp1

 

自治事務就是嵌套在一個事物中的新事物,當執行自治事務的時候主事務被掛起.結束後執行主事務,使用PRAGMA AUTONOMOUS_TRANSACTION指定自治事務

 

Oracle表類型

普通表

聚簇表

分區表

外部表

臨時表

索引組織表

 

聚簇表由多個表組成,幾個表共享相同的數據塊,多個表共享這些列,這樣的列叫聚簇關鍵字

只有滿足下面兩個條件才適合使用聚簇:

建立聚簇表的目的是爲了查詢,不是爲了修改

查詢時,常常對聚簇中的多個表進行連接

 

外部表

外部表是這樣的表,數據庫只存放外部表的定義,外部表的數據存放在數據庫之外.創建外部表的SQL語句分成兩部分,一部分描述列的定義,另一部分描述外部數據源如何映射成數據庫的列

 

臨時表

用CREATE GLOBALTEMPORARY TABLE創建臨時表,臨時表分成兩類

會話型的臨時表

事務型的臨時表

都只存在會話或者事務期間

 

 

索引組織表

快速的隨機訪問

快速的範圍掃描

更少的存儲需求

因爲表的數據很大,以至於一個索引條目不能夠容納,因此Oracle將一條記錄分成兩部分進行存儲

索引部分

溢出區,存放非主鍵值

 

創建聚簇

CREATE CLUSTER tb_cluster(postcode int)

TABLESPACE myspace;

 

吧表student加入聚簇tb_cluster中

CREATE TABLE student(

ID INT PRIMARY KEY,// PRIMARY KEY指定爲主鍵

NAME VARCHAR2(20) NOT NULL,

Postcode INT

)

CLUSTER tb_cluster(postcode);

 

CREATE TABLE students(

Name VARCHAR(20) PROMARY KEY,

id NUMBER,

detail VARCHAR2(100)

)

ORGANIZATION INDEX//指定創建的表是索引組織表

TABLESPACE user

PCTTHRESHOLD 30//指定溢出比例

INCLUDING detail//指定列名

OVERFLOW TABLESPACE myspace;

 

授予用戶rawman對目錄(dat_dir)讀寫權限

GRANT READ,WRITE ON DIRECTORY log_dir TOrawman;

 

爲了使用外部表,Oracle要求:

對存放數據的目錄要有讀的權限

對存放日誌文件的目錄要有寫的權限

對存放壞文件的目錄要有寫的權限

 

克隆表t_clone1

CREATE TABLE t_clone1

AS SELECT * FROM stb

WHERE 1=0;沒有數據,僅僅是結構相同的克隆

 

CREATE TABLE t_clone2

AS SELECT * FROM stb;

這樣就跟stb一樣有數據了

 

可以修改表的屬性

增加列

ALTER TABLE tb_ordernary5

ADD (lenth NUMBER(8,3));

 

列重命名

ALTER TABLE tb_ordernary5

RENAME COLUMN lenth TO new_lenth;

 

對列加密

ALTER TABLE tb_ordernary5

MODIFY(new_lenth ENCRYPT USING ‘3DES168’);

使用加密算法3DES168’對列new_length加密

 

ALTER TABLE tb_ordernary5

MODIFY (new_length DECRYPT);

對列進行解密

 

刪除列name,address

ALTER TABLE tb_ordernary5 DROP (name,address);

 

DESC tb_date_test可以查看錶的類型

 

 

DROP TABLE student_infor;吧表放入回收站

PURGE RECYCLEBIN;清空回收站

 

DROP TABLE student_infor PURGE;直接刪除表

 

SHOW RECYCLEBIN;查看回收站

 

FLASHBACK TABLE instructor TO BEFORE DROP

[RENAME TO instructor_restore];從回收站恢復表[並重命名]

 

插入語句的基本語法:

INSERT INTO 表名 (列1, 列2, 列3,…)

VALUES(值1, 值2, 值3,…);

未被指定的將插入默認值或者(NULL)

 

可以不指定列名,但是列的順序必須一一對應

INSERT INTO 表名

VALUES(值1, 值2, 值3,…);

 

 

從數據源表t_source往目標表t_target插入數據

INSERT INTO t_target(id,name)

SELECT id,name

FORM t_source t

WHERE t.adress=’上海’;

COMMIT

 

SELECT name A,age B FROM t_null;在列後面指定一個名字爲一個別名,顯示的時候顯示別名,界面更友好

 

 

別名可以在當前的SQL語句中使用,簡化輸入

 

SELECT T.name A,T.age B

FROM t_null T

WHERE T.name=’王晶’;

 

SELECT COUNT(*) FROM t_null

*表示返回所有的記錄數

返回共有多少條記錄

*也可以指定一個列名,用來返回擁有指定值的數量是多少

SELECT COUNT(DISTINCT age) FROM t_null

返回age列中不重複的數據共有多少種

 

SELECT name,age FROM t_null

WHERE ROWNUM<=3;

只返回前三行的記錄

 

SELECT name,age FROM t_null

ORDER BY age DESC;

DESC是按照降序排序

如果按照兩個字段排序,先按照第一個字段排序,再按照第二個字段排序

 

 

SELECT MAX(salary) FROM group_employees;

用於求出最大值

 

MIN是最小值

 

AVG是平均值

 

SUM是總和

 

SELECT DISTINCTdept_name FROM group_em[loyees WHERE dept_name=’基金管理部’;

DISTINCT用於去除重複值

 

SELECT *FROM group_employees

WHERE name LINK ‘王%’;

其中LINK是說明用了模糊查詢

%指的是通配符,代表多個字符

 

SELECT *FROM group_employees

WHERE name LINK ‘王_’;

_只代表一個字符,所以就是所有姓王並且只有2個字的名字

 

 

DECODE函數用法,是用於條件歸類和分析

DECODE(條件,值1,返回值1,值2,返回值2,…..,值n,返回值n,默認值);

 

還有CASE也是用於條件分類

簡單版:

SELECT cust_last_name,

CASE credit_limit WHEN 100 THEN ‘low’

WHEN 5000 THEN ‘High’

ELSE ‘Medium’ END

FROM customers;

當credit_limit的值等於100時,返回值是low,當值等於5000時候,返回值High否則返回Medium

 

複雜版:

SELECT NAME,(CASE WHEN SCORE < 60 THEN ‘D’

WHEN SCORE>=60 AND SCORE < 70 THEN ‘C’

WHEN SCORE>=70 AND SCORE < 80 THEN ‘B’

WHEN SCORE>=80 THEN ‘A’

ELSE ‘NO SCORE’ end) FROM score

 

 

 

SELECT ‘BB’||’C’ FROM DUAL;用於連接連個字符串,可以對應輸出

例如管理員汪峯

 

可以行列互換,用於統計或者轉換格式

 

expr1 BETWEEN expr2 AND expr3用於測試expr1在不在2和3之間

 

SELECT ‘測試字符’ FROM dual WHERE ‘c’ BETWEEN ‘d’;

 

SELECT * FROM T_NULL WHERE dept_name ISNULL

用於查詢值爲NULL的值(空值)不是空字符

 

IS NOT NULL指的是不空

 

WHERE EXITSTS(subquery)用於指定subquery在不在表中

在就返回這些in西

 

WHERE IN(subquery)用於選定記錄

 

SELECT dept_name,count(*)

FROM group_employees

GROUP BY dept_name

GROUP BY用於分組統計

保安部1

後勤部 3

這樣可以查詢每個部門有多少人.

 

 

SELECT dept_name,name,salary

FROMgroup_employees A

WHERE(A.dept_name,A.salary) IN (

SELECTdept_name,MAX(salary)

FROMgroup_employees B

GROUP BYdept_name)

ORDER BYdept_name;

找出每個部門工資最高的人,並按dept_name;排序

 

SELECTTO_CHAR(deal_date,’YYYY’)年,TO_CHAR((deal_date,’MM)月,SUM(money)銷售收入

FROM shoe_sales

GROUP BY ROLLUP(TO_CHAR(deal_date,’YYYY’),TO_CHAR(deal_date,’MM’))

這裏進行分組彙總,先按照月彙總再按照年彙總,月的和年的都會被顯示出來,先顯示月再顯示年

 

如果黃字是CUBE就是多維彙總

 

可以實行批量字符替換

可以去除字符串中的數字

統計某個字符(字符串)出現的次數

判斷一個字符串是否爲全部數字

去掉字符串中的空格

刪除字符串的前幾個字符

字母大小寫的轉換

 

 

 

SELECT dept_name,name,salaryFROM product_A

UNION ALL

SELECTdept_name,name,salary FROM product_B

合併2個查詢,包括重複

SELECTdept_name,name,salary FROM product_A

UNION

SELECTdept_name,name,salary FROM product_B

合併2個查詢,不包括重複

 

 

 

SELECTdept_name,name,salary FROM product_A

INTERSECT

SELECTdept_name,name,salary FROM product_B

找出相同,等於

SELECTdept_name,name,salary FROM product_A

WHERE(dept_name,name,salary)IN(SELECTdept_name,name,salary FROM product_B

)

 

 

SELECTdept_name,name,salary FROM product_A

MINUS

SELECTdept_name,name,salary FROM product_B

用第一個查詢到的減去第二個,集合減

 

 

 

DELETE FROMtable_name

WHERE

用於刪除表,where指定刪除記錄,如果沒有where子句就是刪除整個表

 

TRUNCATE TABLEstudent2;

這個是刪除整個表,這樣的刪除效率比較高

 

重建表可以先建一個跟源表相同結構,然後再刪除源表,再用新建表再建一個同結構同源表名源表,效率較高,但是要重新維護約束,除法器和權限等

 

Sql語句不識別大小寫,但是對象識別

 

 

完整性約束是一些規則利用這些規則,對錶中的一列或者多列的數據進行限制,防止一些非法的數據進入數據庫,有5種類型的約束

不爲空約束

唯一值約束

主鍵約束

參照完整性約束

檢查約束

 

主鍵可由單列組成也可以由多列組成

 

 

大對象數據類型專爲大容量存儲而設計的,Oracle設計了4中大對象類型.他們是BFILE, BLOB,CLOB,NCLOB

LOB定位器就是就是指向LOB數據的指針

 

使用CREATE TYPE … AS TABLE OF定義嵌套表

 

可以使用DML語句操作遠程的數據庫,但是不能用DDL

INSERT INTO kk@remoteddb2

@後用用於有調用遠程的數據庫

 

 

用關鍵字PARTITION(p2)指定分區,在篩選過濾的時候只掃描這個分區,有利於管理和提高效率

 

 

自動工作負載庫AWR負責自動收集,處理,維護性能相關的統計信息,每個一個小時採樣一次快照

 

ADDM性能監控器是Oracle提供的性能診斷工具,AWR是性能檢測器的基礎,能幫你找出性能問題的根本原因,並自動人提出問題的解決之道

 

CREATE INDEXind_name4 ON ct(name);創建索引,也可以創建其他不同的索引,有唯一性索引,符合索引,…

可以吧索引移向另一個表空間

 

索引的DEL_LF_ROWS_LEN/LF_ROWS_LEN值大於20

HEIGHT的值大於4就需要重建索引

 

ALTER INDEXinfd5 REBUILD;

 

 

優化器用於產生執行計劃.產生計劃時候,優化器會對表達式和條件進行評估,它綜合各方面的因素,然後生成執行效率最高的執行計劃

 

AUTOTRACE用於性能調整的工具

 

訪問路徑是指從數據庫中檢索數據的方法,訪問路徑有

全表掃描

索引掃描

行ID掃描

聚簇訪問

哈希訪問

採樣表掃描

 

連接方法

連接是指從一個或者多個表中檢索數據

主要由3種連接方式:

嵌套循環連接,哈希連接和排序合併連接

 

索引是一把雙刃劍

 

兩條sQL語句相同必須滿足條件是

空格,大小寫,換行,註釋,關鍵字.值相同

引用的對象必須屬於相同的模式

如果綁定變量,兵丁變量的名字,類型,長度必須相同

 

最好一次吧條件寫全,這樣掃描表的次數就會減少

 

提示以/*+開始以*/結束,用於改變SQL語句的執行假話

 

 

 

 

 

 

 

 

 

 

 

 

 

第十八章:

一個模式是一個數據庫對象的集合

模式名就是用戶名,用戶名就是模式名,

模式就是用戶

 

視圖是表中數據的邏輯表示,視圖也可以說成是一段存儲的SELECT語句,它用於從數據庫檢索視圖要表示的數據.

 

視圖就是一個被封裝的表

CREATE VIEWv_zero AS

SELECT *

FROM kk.students

WHEREid>1000;

Kk是基表的擁有者

 

然後v_zero就可以當做一個比較小的表來用

 

第二十章:

包也是模式對象,它是相關對象繼承在一起的PL/SQL結構

 

 

第二十一章:

即使客戶端讓你沒有安裝Oracle客戶端的情況下也能使用SQL*Plus

 

第二十二章:

所謂一致性冷備份,指的備份所有數據文件和控制有相同的系統改變好.冷備份必須是一致性備份,否則在數據庫恢復後有可能打不開數據庫

如果數據庫運行在非歸檔模式,這樣的備份是無效的備份,說白了,進行這樣的備份還不如不備份

 

 

第二十三章:

通過RMAN的客戶端工具來恢復

 

第二十四章:

 

發佈了86 篇原創文章 · 獲贊 13 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章