【Oracle】Oracle基礎知識
Oracle解除安裝
E:\app\meng.li\product\11.2.0\dbhome_1\deinstall\deinstall.bat執行這個批處理檔案就可以把Oracle解除安裝掉。
使用者
Sys 、system (sys的許可權高於system)
Sysman 操作企業管理器使用者
Scott (Oracle創始人之一)預設密碼是 tiger
使用system使用者登入
[username/password] [@server][assysdba|sysoper]
例:system/root @orcl as sysdba
Orcl就是自己設定的服務名。
在system使用者下連線sys使用者
例:Connect sys/root as sysdba
檢視登入使用者
Show user 命令
通過資料字典檢視其他的使用者資訊
Dba_users資料字典 (檢視資料字典的結構 descdba_users)
例:檢視系統中所有的系統使用者的名字
Select username from dba_users;
啟用scott使用者(scott使用者在oracle中預設是鎖定的)
啟用使用者的語句
Alter user username account unlock
使用scott來登入sql plus
表空間概述
表空間是在資料庫中開闢的空間,用來存放資料庫物件,一個數據庫可以有多個表空間。
表空間由一個或多個數據檔案構成。
表空間的分類
1. 永久表空間:資料庫中要永久儲存的,如表、檢視
2. 臨時表空間:資料庫操作過程中中間儲存的值,操作完成後釋放。
3. UNDO表空間:儲存事務所修改的舊值,可以進行回滾。
檢視使用者表空間(通過資料字典檢視)
Dba_tablespaces(系統管理員級) user_tablespaces(普通使用者) 資料字典
查看錶空間的名字
系統管理員登入後預設的表空間有六個
SYSTEM : 存放sys使用者的表檢視以及儲存過程等物件,系統表空間。
SYSAUX : 作為EXAMPLE(安裝oracle資料庫的示例)的輔助表空間。
UNDOTBS1 : 儲存一些撤銷資訊。
TEMP : 儲存SQL語句處理和索引的表空間。
USERS : 儲存資料庫使用者建立的資料庫物件。
Dba_users 、 user_users 資料字典
可以檢視當前使用者的預設表空間和臨時表空間。
例:檢視System使用者的預設表空間和臨時表空間(使用者名稱字要大寫)
Selectdefault_tablespace,temporary_tablespace
from dba_users
where username=’SYSTEM’
設定使用者的預設或臨時表空間
ALTER USER username
DEFAULT|TEMPORARY
TABLESPACE tablespace_name
例:更改System使用者的預設表空間
建立表空間
CREATE [TEMPORARY] TABLESPACE
Tablespace_name
TEMPFILE|DATAFILE ‘xx.dbf’ SIZE xx
例:建立一個永久表空間和一個臨時表空間
檢視永久表空間的資料字典dba_data_files
例:利用dba_data_files 資料字典查詢表空間的名字
SELECT FILE_NAME
FROM dba_data_files
Where tablespace_name=’TEST1_TABLESPACE’
檢視臨時表空間的資料字典 dba_temp_files
修改表空間
設定聯機或離線狀態建立完表空間後,預設的是聯機狀態
ALTER TABLESPACE tablespace_name
ONLINE | OFFLINE;
例:查看錶空間狀態 ONLINE 或 OFFLINE 在dba_tablespaces資料字典內
設定只讀或可讀寫狀態
ALTER TABLESPACE tablespace_name
READ ONLY | READ WRITE
修改表空間資料檔案
增加資料檔案
ALTER TABLESPACE tablespace_name
ADD DATAFILE ‘xx.dbf’ SIZE xx;
查詢增加的表空間
刪除資料檔案
ALTER TABLESPACE tablespace_name
DROP DATAFILE ‘filename.dbf’
刪除表空間
DROP TABLESPACE
Tablespace_name [INCLUDING CONTENTS]
可選部分代表同時刪除資料檔案。
表:
表存放在表空間裡。
基本儲存單位
二維結構
行和列
表的約定:
1. 每一列資料必須具有相同資料型別。
2. 列名唯一
3. 每一行唯一
資料型別:
字元型
CHAR(n) n的最大值是2000 NCHAR(n) n的最大值是1000
VARCHAR2(n) n的最大值是4000 NVARCHAR2(n) n的最大值是2000,用於儲存unicode格式的資料,更適合儲存中文資料。
數值型
NUMBER(p,s) p代表有效數字 s代表小數點後的位數
FLOAT(n) 表示二進位制資料
日期型
DATE 公元前4712年1月1日到公元9999年12月31日
TIMESTAMP 時間戳型別,精確到小數秒
其他型別
BLOB 能存放4GB的資料,以二進位制儲存。
CLOB 能存放4GB的資料,以字串儲存。
建立表
CREATE TABLE table_name
(
Column_namedatatype,…
)
新增欄位
ALTER TABLE table_name
ADD column_name datatype;
更改表的欄位資料型別
ALTER TABLE table_name
MODIFY column_name datatype;
刪除欄位
ALTER TALBE 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 TABLE table_name
刪除表資料
DROP TABLE table_name 刪除表和資料
操作表的資料
新增資料
INSERT INTO table_name
(column1,column2,…)
VALUES(value1,value2,…)
設定預設值
Column_name date default sysdate);
複製表資料(兩種方式)
1.在建表時複製
CREATE TABLE table_new
AS
SELECT column1,…| * FROM table_old
2.在新增資料時複製
INSERT INTO table_new
[(column1,…)]
SELECT column1,… | *FROM table_old
修改資料
UPDATE tab_name
SET column1 = value1,…
[WHERE conditions]
刪除資料
DELECT FROM table_name
[WHERE conditions]
約束的作用
定義規則
確保完整性
1.非空約束
在建立表時建立
CREATE TABLE tab_name(
Column_namedatatype NOT NULL,….
);
在修改表時新增非空約束
ALTER TABLE table_name
MODIFY column_name DATATYPE NOT NULL
在修改表的時候去掉非空約束
ALTER TABLE table_name
MODIFY column_name datatype NULL
2.主鍵約束
一張表只能設計一個主鍵約束
主鍵約束可以由多個欄位構成(聯合主鍵或複合主鍵)
在建立表時設定主鍵約束
CREATE TABLE table_name(
Column_namedatatype PRIMARY KEY,…
)
建立聯合主鍵
Create table userinfo_p1
(id number(6,0),
Username varchar2(20),
Userpwd varchar2(20),
Constraint pk_id_username primarykey(id,username));
在資料字典 user_constraints 中檢視主鍵的名字
在修改表時新增主鍵約束
ALTER TABLE table_name
ADD CONSTRAINT constraint_name
PRIMARY KEY(column_name1,…);
更改主鍵約束的名稱
ALTER TABLE table_name
RENAME CONSTRAINT old_name
TO new_name
刪除主鍵約束
暫時不想用,禁用約束
DISABLE|ENABLE CONSTRAINT constraint_name
DROP CONSTRAINT constraint_name
DROP PRIMARY KEY[CASCADE] CASCADE 表示級聯刪除
3.外來鍵約束
在建立表時設定外來鍵約束(設定外來鍵時主表的欄位必須為主鍵而且相應欄位必須是同一個資料型別的) 從表中的欄位要麼在主表中出現,要麼為空值。
列級設定
CREATE TABLE table1
(column_name datatype REFERENCES
Table2(column_name),….);
第二種方式表級設定
CONSTRAINT constraint_name
FOREIGN KEY(column_name) REFERENCES
Table_name(column_name) [ON DELETE CASCADE]
在修改表時新增外來鍵約束
ADD CONSTRAINT constraint_name FROEIGN
KEY(column_name) REFERENCES
Table_name(column_name) [ON DELETE CASCADE]
刪除外來鍵約束
DISABLE | ENABLE CONSTRAINT constraint_name
DROP CONSTRAINT constraint_name;
4.唯一約束
唯一約束和主鍵約束的區別:
主鍵欄位值必須是非空的
唯一約束允許有一個空值
主鍵在一個表中只能有一個,而唯一約束可以有多個。
在建立表時設定唯一約束
CREATE TABLE table_name
(column_name datatype UNIQUE,…)
CONSTRAINT constraint_name
UNIQUE(column_name)
在修改表時新增唯一約束
ALTER TABLE table_name
ADD CONSTRAINT constraint_name
UNIQUE(column_name)
刪除唯一約束
DISABLE | ENABLE CONSTRAINT constraint_name
DROP CONSTRAINT constraint_name
5.檢查約束
在建立表時設定檢查約束
CREATE TABLE table_name
(column_name datatype CHECK(expressions)),
…)
在表級設定檢查約束
CONSTRAINT constraint_name
CHECK(expressions)
在修改表時新增檢查約束
ADD CONSTRAINT constraint_name
CHECK(expressions)
刪除檢查約束
DISABLE | ENABLE CONSTRAINT constraint_name
DROP CONSTRAINT constraint_name
查詢
基本查詢語句
SELECT [DISTINCT] column_name1,…| *
FROM table_name
[WHERE conditions]
在SQL PLUS中設定格式
COLUMN column_name HEADING new_name 設定結果顯示名字
設定結果顯示格式
COLUMN column_name FORMAT dataformat
設定字元型長度
Col username format a10
數值型用一個9代表一個數字
清除欄位格式
COLUMN column_name CLEAR
給欄位設定別名
SELECT column_name AS new_name,…
FROM table_name
運算子
算術運算子(+-*/)
比較運算子(>,>=,<,<=,=,<>)
邏輯運算子(and,or,not)
邏輯運算子的優先順序:按not、and、or的順序依次遞減。
模糊查詢
LIKE
萬用字元 _ 代表一個字元
% 代表0或多個字元
BETWEEN AND 查詢的結果是個閉合區間,包含兩邊的值。
In(aaa,bbb,ccc,…)表示在IN的集合內的
對查詢結果排序
ORDER BY DESC/ASC
CASE .. WHEN
CASE column_name
WHEN value1 THEN result1,…
[ELSE result] END
CASE
WHEN column_name=value1
THEN result1,…[ELSE result] END
Decode 函式實現上面的功能