Oracle基礎知識彙總

Oracle Database,又名Oracle RDBMS,或簡稱Oracle。是甲骨文公司的一款關係數據庫管理系統。它是在數據庫領域一直處於領先地位的產品。可以說Oracle數據庫系統是目前世界上流行的關係數據庫管理系統,系統可移植性好、使用方便、功能強,適用於各類大、中、小、微機環境。它是一種高效率、可靠性好的 適應高吞吐量的數據庫解決方案。

對於開發來說,瞭解和學習Oracle數據庫是非常有必要的。

這篇文章僅僅是對Oracle做了一個簡單的總結,後續如果用到或接觸到的知識點,都會做補充


⚪查看登陸的用戶

show user 命令

SQL> show user

在這裏插入圖片描述

⚪dba_users 數據字典

通過 dba_users 這個表查看登陸的用戶信息,那麼在查詢之前我們先看看 dba_users 這個表的表結構,可以通過 desc dba_users 這個命令查看指定表的表結構

SQL> desc dba_users

在這裏插入圖片描述

可看到該表結構中包含用戶名、用戶的ID和密碼等內容

現在我們查看系統中用戶的信息

select * from dba_users;

在這裏插入圖片描述

Oracle中 dba_users 和 user_users 都可以查詢用戶的信息,這兩張表都是查看錶空間信息的表,它們的區別是:前者是隻供管理員用戶查詢的,後者是管理員用戶和普通用戶都可以查詢的。

⚪幾個典型的用戶說明

Oracle中有那麼幾個典型的用戶,它們是在安裝Oracle的時候默認創建的,分別具有不同的作用。下面我們介紹Oracle中sys,system,scott,hr用戶:

  • scott 是個演示用戶,是讓你學習Oracle用的;
  • hr用戶是個示例用戶,是在創建數據庫時選中“示例數據庫”後產生的,實際就是模擬一個人力資源部的數據庫;
  • SYSDBA 不是用戶,可以認爲是個權限,超級權限。默認中sys就擁有這種超級權限,是權限最高的用戶。

超級用戶分兩種 SYSDBA和SYSOPT
SYSOPT 後面3個字母是operator的意思,也就是操作數據庫的人,而SYSDBA 則是管理數據庫的人;
SYSDBA比SYSOPT的權限還要大,而SYS用戶就完全是個SYSDBA,但SYSTEM用戶默認是SYSOPT,不過它也能以SYSDBA的權限登陸。

它們之間的不同之處可以下載Oracle中sys-system-scott-hr用戶的區別 這份文檔瞭解學習。

⚪啓動(解鎖)被鎖定的用戶

Oracle中有個scott用戶默認是被鎖定的

在這裏插入圖片描述

如果要解鎖它,我們首先需要登陸其他用戶,並通過SQL語句alter user scott account unlock;解鎖它。

alter user scott account unlock;

scott用戶的默認密碼爲 tiger

接下來通過 ‘connect scott/tiger’ 來登陸scott用戶。如果scott用戶密碼過期的話,系統會提示你更改密碼

在這裏插入圖片描述

或者通過SQL語句更改scott用戶的密碼

alter user scott identified by tiger;
⚪表空間
表空間的分類
  • 永久表空間 存放永久性數據,如表,索引等。
  • 臨時表空間 不能存放永久性對象,用於保存數據庫排序,分組時產生的臨時數據。
  • UNDO表空間 保存數據修改前的鏡象。
查看用戶的表空間

在前面我們提到的 dba_users 表中有兩個字段

  1. DEFAULT_TABLESPACE
  2. TEMPORARY_TABLESPACE

這兩個字段分別代表用戶的默認表空間和臨時表空間。

比如我們要查看system用戶的默認表空間和臨時表空間

在這裏插入圖片描述

查看錶空間的信息

這裏有兩張表

  1. dba_tablespaces
  2. user_tablespaces

這兩張表都是查看錶空間信息的表,它們的區別是:前者是隻供管理員用戶查詢的,後者是管理員用戶和普通用戶都可以查詢的。

在這裏插入圖片描述

更改我們指定用戶的默認表空間或者臨時表空間
ALTER USER username DEFAULT|TEMPORARY TABLESPACE tablespace_name;
新建表空間
CREATE [TEMPORARY] TABLESPACE tablespace_name TEMPFILE|DATAFILE 'xxx.dbf' SIZE xxx;

表空間創建完畢後,我們可以查看錶空間的位置在哪,比如我們查看錶空間名稱爲SYSTEM的位置

SELECT file_name FROM dba_data_files WHERE tablespace_name='SYSTEM';

注意,如果要查看創建的臨時表空間的數據文件的地址,就不能查表 dba_data_files 了,而要查 dba_temp_file 表。

SELECT file_name FROM dba_temp_files WHERE tablespace_name='TEMPORARY_TABLESPACE';
修改表空間的狀態

設置表空間的聯機或脫機狀態

ALTER TABLESPACE tablespace_name ONLINK|OFFLINK;

設置表空間的只讀或可讀寫的狀態

ALTER TABLESPACE tablespace_name READ ONLY|READ WRITE;

表空間爲脫機狀態,那麼系統不允許修改該表空間的讀寫狀態。表空間聯機的狀態,默認該表空間爲可讀寫的狀態。

修改表空間中的數據文件

增加數據文件

ALTER TABLESPACE tablespace_name ADD DATAFILE|TEMPFILE 'xxx.dbf' SIZE xxx;

刪除數據文件

ALTER TABLESPACE tablespace_name DROP DATAFILE 'filename.dbf';
刪除表空間
DROP TABLESPACE tablespace_name [INCLUDING CONTENTS];

如果只刪除表空間而不刪除數據文件,那麼不用加上[]裏面的內容。

⚪約束

數據的完整性用於確保數據庫數據遵從一定的商業和邏輯規則。在Oracle中,數據完整性可以使用約束、觸發器、應用程序(過程、函數)三種方法來實現,在這三種方法中,因爲約束易於維護,並且具有最好的性能,所以作爲維護數據完整性的首選。

約束用於確保數據庫數據滿足特定的商業規則。在Oracle中,約束包括:not null、unique、primary key, foreign key和check五種。

  • not null(非空)
    如果在列上定義了not null,那麼當插入數據時,必須爲列提供數據。
  • unique(唯一)
    當定義了唯一約束後,該列值是不能重複的,但是可以爲null。
  • primary key(主鍵)
    用於唯一的標識錶行的數據,當定義主鍵約束後,該列不但不能重複而且不能爲NULL。一張表最多隻能有一個主鍵,但是可以由多個unique約束。
  • foreign key(外鍵)
    用於定義主表和從表之間的關係,外鍵約束要定義在從表上,主要則必須具有主鍵約束或是unique約束,當定義外鍵約束後,要求外鍵列數據必須在主表的主鍵列存在或是爲NULL。
  • check
    用於強制行數據必須滿足的條件,假定在sal列上定義了check約束,並要求sal列值在1000~2000之間,如果不在1000~2000之間就會提示出錯。
⚪修改表名
ALTER TABLE 舊錶名 RENAME TO 新表名;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章