Oracle 基礎--【表空間與表】【約束】【視圖】
- 2019 年 11 月 21 日
- 筆記
版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/wangtongxue123456/article/details/79681846
- Oracle 基礎
- 用戶和表空間
- 用戶
- 表空間
- 查看用戶的表空間
- 設置用戶默認或臨時表空間 (普通用戶沒有次許可權)
- 查看錶空間儲存位置
- 表
- 表中的數據類型
- 創建表
- 修改表
- 操作表中數據
- 約束
- 非空約束
- 主鍵約束
- 外鍵約束
- 唯一約束
- 查看約束
- 檢查約束
- 默認值約束
- 視圖
- 關係視圖
- 內嵌視圖
- 對象視圖
- 物化視圖
- 用戶和表空間
Oracle 基礎
用戶和表空間
用戶
- #### 系統用戶
- sys,system (系統用戶)
- sysman (操作企業管理器)
- scott
- #### 創建 scott
sys@CNHTM> create user scott identified by tiger; --創建 scott 用戶並設置密碼 tiger sys@CNHTM> grant connect,resource to scott; --賦予許可權
- #### 登錄
[USERNAME/PASSWORD][@SERVER][as sysdba|sysoper] -- 如果連接遠程orcle 需要輸入用戶名 orcle 就是設置自己設置的服務名 --連接登錄實例 sql>connect scott/tiger
- #### 查看用戶登錄
show user
- #### desc dba_users數據字典(desc 查看錶結構)
desc dba_users
表空間
我們知道oarcle資料庫真正存放數據的是數據文件(datafiles),Oarcle表空間(tablespaces)實際上是一個邏輯的概念,他在物理上是並不存在的,那麼把一組data files 捻在一起就成為一個表空間。

表空間屬性:
一個資料庫可以包含多個表空間,一個表空間只能屬於一個資料庫 一個表空間包含多個數據文件,一個數據文件只能屬於一個表空間 表這空間可以劃分成更細的邏輯存儲單元
- 查看用戶的表空間
- 數據字典 表空間 dba_tablespaces、user_tablespaces 數據字典(用來查看登錄用戶所有的表空間) 前一個是為管理員提供,後一個為普通用戶提供 查看用戶表空間 dba_users,user_users 數據字典 查看用戶默認表空間和臨時表空間 SELECT DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE FROM DBA_USERS WHERE USERNAME='SYSTEM' -- USERNAME 用戶名
- 設置用戶默認或臨時表空間 (普通用戶沒有次許可權)
ALTER USER username DEFAULT|TEMPORARY TABLESPACE tablespace_name --username 登錄用戶名 --DEFAULT 默認表空間 TEMPORARY 臨時表空間 --tablespace_name 表空間名 --實例 SQL> ALTER USER system DEFAULT TABLESPACE system;
- #### 創建表空間
CREATE [TEMPORARY] TABLESPACE tablespace_name TEMPFILE|DATAFILE 'XX.dbf' SIZE xx --TEMPORARY 創建臨時表空間時添加 --tablespace_name 表空間的名字 --XX.dbf 文件名 --SIZE 數據文件的大小 sql>create TABLESPACE test1_tablespace datafile 'test1file.dbf' size 10m --創建永久表空間 sql>create temporary tablespace temptest1_tablespace tempfile 'tempfile1.dbf' size 10m --創建臨時表空間
- 查看錶空間儲存位置 數據字典 dba_data_files
- #### 修改表空間的狀態
ALTER TABLESPACE tablespace_name OFFLINE|ONELINE --實例 sql> ALTER TABLESPACE test1_tablespace OFFLINE --離線狀態 sql> select status from dba_tablespace where tablespace_name='test1_tablespace' --查看錶空間狀態 sql> ALTER TABLESPACE test1_tablespace onelie --聯機狀態
- #### 修改表空間只讀或可讀寫狀態(離線狀態無法修改)
ALTER TABLESPACE tablespace_name READ ONLY | ORAD WRITE --默認聯機狀態就是讀狀態 SQL> alter tablespace test1_tablespace read only --只讀狀態 sql> alter tablespace test1_tablespace read write --讀寫狀態
- #### 表空間修改數據文件
- 增加數據文件
ALTER TABLESPACE tablespace_name ADD DATAFILE 'XX.dbf' size xx - 刪除數據文件(不能刪除表空間的第一個數據文件及創建表空間時創建的數據文件)
ALTER TABLESPACE tablespace_name DROP DATAFILE 'XX.dbf'
- 增加數據文件
- #### 刪除表空間
DROP TABLESPACE tablespace_name [INCLUDING CONTENTS] --INCLUDING CONTENTS 添加後 會把該表空間下的數據文件也一併刪除
表
- ### 什麼是表 表存在表空間中,表是資料庫的基本儲存單位,表為二維結構,有行和列組成
- ### 表的約定 1、每一列數據必須具有相同數據類型 2、列名唯一 3、每一行數據的唯一性
- 表中的數據類型
- 字元型 CHAR(N) -n max:2000、NCHAR(N) -n max:1000 不可表 VARCHAR2(N)-n max 4000,NVARCHAR2(n) -n max:2000 可變
- 數值型 NUMBER(p,s) number類型的語法很簡單:number(p,s): p:精度位,precision,是總有效數據位數,取值範圍是38,默認是38,可以用字元*表示38。 s:小數位,scale,是小數點右邊的位數,取值範圍是-84~127,默認值取決於p,如果沒有指定p,那麼s是最大範圍,如果指定了p,那麼s=0。 最高整數位數=p-s s正數,小數點右邊指定位置開始四捨五入 s負數,小數點左邊指定位置開始四捨五入 s是0或者未指定,四捨五入到最近整數 當p小於s時候,表示數字是絕對值小於1的數字,且從小數點右邊開始的前s-p位必須是0,保留s位小數。 p>0,對s分2種情況: 1. s>0 精確到小數點右邊s位,並四捨五入。然後檢驗有效數位是否<=p;如果s>p,小數點右邊至少有s-p個0填充。 2. s<0 精確到小數點左邊s位,並四捨五入。然後檢驗有效數位是否<=p+|s| FLOAT(n)
- 日期型 DATE --儲存範圍 公元前4712年1月1日到公元前9999年12月31日 可以精確到秒 TIMESTAMP -- 可以精確到小數秒
- 其他類型 BLOB --最大儲存4個G ,儲存二進位 CLOB --最大儲存4個G ,儲存字元串
- 創建表 create table table_name( column datatype);– 創建表的語法
- 修改表 添加欄位 alter table table_name add column_name datatype;
更改欄位的數據類型
alter table table_name MODIFY column_name datatype;
刪除欄位
alter table table_name DROP COLUMN column_name;
修改欄位名
alter TABLE table_name RENAME COLUMN column_name TO new_column_name;
修改表名
RENAME table_name to new_table_name;
- ### 刪除表 TRUNCATE 刪除表中數據(比delete速度快) TRUNCATE TABLE table_name;
DROP 刪除表 DROP TABLE table_name;
- 操作表中數據
- #### 添加數據
INSERT INTO table_name (column1,…)values(value1,…)
- #### 複製表中數據
- 在建表的時候複製 CREATE TABLE table_new AS SELECT column1,.. | * from table_old;
- 再添加時複製
INSERT INTO table_new [(column1,…)] select column1,…|*from table_old;
- 刪除表中數據
– DELTE 語句 DELETE FROM table_name [WHERE conditions];
約束
約束條件也稱作完整性約束條件,是在數據表上強制執行的一些數據檢驗規則,當執行DML操作時必須符合約束條件,否則不能成功執行。 約束條件包括有非空(Not null)、唯一(Unique)、主鍵(Primary Key)、外鍵(Foreign Key)和檢查(Check)。 約束條件可以在建表時建立也可以在建表後建立。約束條件需要命名,可以由用戶指定,否則由系統按照SYS_Cn的默認格式來命名,n是一串數字。
非空約束
約束字典 user_constraints
非空(Not Null)約束用於確保欄位值不為空。非空約束是五個約束條件中唯一一個只能定義在列級的約束條件。非空約束條件可以在建表時建立,也可以在建表後建立。
創建表時添加非空約束
CREATE TABLE table_name( column_name datatype NOT NULL,.. )
建表後添加非空約束
ALTER TABLE table_name MODIFY(column datatype NOT NULL);
建表後去除非空約束
ALTER TABLE table_name MODIFY(column datatype NULL);
主鍵約束
主鍵是能確定一條記錄的唯一標識的一個欄位和多個欄位組合 主鍵約束條件從功能上看相當於非空且唯一。主鍵可以是單欄位也可以是多欄位組合。在一個表上只允許建立一個主鍵,而其他約束條件則沒有明確的個數限制。
在創建表時添加劑主鍵
CREATE TABLE table_name( column_name datatype PRIMARY KEY ) CREATE TABLE table_name( column_name datatype, constraint constraint_name PRIMARY KEY(column1_name,..) ) --constraint_name 約束的名字
在修改表時添加主鍵
ALTER TABLE table_name ADD CONSTRAINT column_name PRIMARY KEY(column_name1,...) --column_name 約束的名字
更改主鍵約束的名字
ALTER TABLE table_name rename CONSTRAINT old_name TO new_name
刪除主鍵約束
ALTER TABLE table_name DISABLE | ENABLE CONSTRAINT constraint_name; --DISABLE 禁用約束 , ENABLE 啟用被禁用約束 --constraint_name 約束名字 --刪除約束 (兩種都可以) ALTER TABLE table_name DROP CONSTAINT constraint_name ALTER TABLE table_name DROP PRIMARY KEY[CASCAD]
外鍵約束
如果公共關鍵字在一個關係中是主關鍵字,那麼這個公共關鍵字被稱為另一個關係的外鍵,外鍵表示了兩個關係之間的相關聯繫。以另一個關係的外鍵作主關鍵字的表被稱為主表,具有此外鍵的表被稱為主表的從表。外鍵又稱作外關鍵字 外鍵約束條件定義在兩個表的兩個欄位或一個表的兩個欄位上,用於保證相關兩個欄位的關係。外鍵約束包括兩個方面的數據約束: (1):子表上定義的外鍵的列值,必須從主表被參照的列值中選取,或者為NULL; (2):當主表參照的值被子表參照時,主表的該行記錄不允許被刪除。
CREATE TABLE table1( column_name datatype REFERENCES table2(column_name,...) ) CREATE TABLE table1( column_name datatype, CONSTRAINT constraint_name FOREIGN KEY(column_name)REFERENCES table_name(column_name)[ON DELETE CASCADE] ) -- constraint_name 外鍵約束名 -- table_name 關聯的主表 -- ON DELETE CASCADE 可選 選擇後增加級聯刪除的功能
修改表的時候添加外鍵約束
ALTER TABLE table1_name CONSTRAINT constraint_name FOREIGN KEY(column_name)REFERENCES table_name(column_name)[ON DELETE CASCADE] --table1_name 添加外鍵的表 --table_name 關聯的主表
刪除外鍵約束
--禁用外鍵約束 ALTER TABLE table_name DISABLE | ENABLE CONSTRAINT constraint_name -- DISABLE 禁用主鍵約束 -- ENABLE 啟用主鍵約束 --刪除外鍵約束 ALTER TABLE table_name DROP CONSTRAINT constraint_name;
唯一約束
唯一約束保證值得唯一性,區別主鍵,主鍵不允許值為空,唯一約束允許一個值為NULL,主鍵在一個表中只能有一個,唯一約束可以有多個。
再創建表時設置唯一約束
CREATE TABLE table_name ( column_name datatype UNIQUE ) --第二種方式 CREATE TABLE table_name( column_name datatype, CONSTRAINT constraint_name UNIQUE(column_name) )
修改表時添加唯一約束
ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE(column_name)
刪除唯一約束
ALTER TABLE table_name DISABLE | ENABLE CONSTRAINT constraint_name -- DISABLE 禁用約束 -- ENABLE 啟用約束 --刪除約束 ALTER TABLE table_name DROP CONSTRAINT constraint_name;
查看約束
select constraint_name,constraint_type,status from user_constraints WHERE table_name='TESTUL';
檢查約束
檢查約束的作用:讓欄位值更具有意義。 創建表時設置
CREATE TABLE table_name ( column_name datatye CHECK(expressions) ) CREATE TABLE table_name ( column_name datatye, CONSTRAINT constraint_name CHECK(expressions) )
在修改表時添加
ALTER TABLE table_name ADD CONSTRAINT constraint_name CHECK(expressions)
刪除唯一約束
ALTER TABLE table_name DISABLE | ENABLE CONSTRAINT constraint_name -- DISABLE 禁用約束 -- ENABLE 啟用約束 --刪除約束 ALTER TABLE table_name DROP CONSTRAINT constraint_name;
默認值約束
默認值約束的作用對象為列,每個列只能有一個默認值約束。
創建默認值約束
CREATE TABLE table_name( column_name datatype default def_name )
修改默認值約束
ALTER TABLE table_name MODIFY column_name datatype default def_name;
視圖
視圖是資料庫中特有的對象,視圖用於儲存查詢,但不會儲存數據(物化視圖外)。可以利用視圖進行查詢、插入、更新和刪除數據.Orcle中有4中視圖。
關係視圖
關係視圖是四種視圖中最簡單,同時也是最常用的視圖,可以將關係視圖看做對簡單或複雜的定義。它的輸出可以看做一個虛擬的表,該表的數據是有其他基礎數據提供。由於關係視圖並不儲存真正的數據,因此佔用資料庫資源也較少。
創建關係視圖
CREATE VIEW view_table_name as select * from table_name
修改關係視圖
CREATE OR REPLACE view_table_name as select * from tale_name -- CREATE OR REPLACE 命令用於創建或者替換視圖。
刪除視圖
drop view view_table_name