用戶
Oracle中的用戶可以分爲兩類:一類是Oracle數據庫創建時,由系統自動創建的用戶,稱爲系統用戶,如sys和system;另一類用戶是利用系統用戶創建的用戶,稱爲普通用戶。平常我們登錄就是該類用戶。可以通過以下語句查看:
SELECT USERNAME, ACCOUNT_STATUS, DEFAULT_TABLESPACE FROM DBA_USERS;
用戶密碼過期處理
1 以sys模式登錄
conn / as sysdba
2 修改密碼(簡單粗暴)
SQL> alter user test identified by [new password];
3 解鎖(也許嘗試多次登錄,用戶被鎖)
SQL> alter user test account unlock;
4 設置用戶密碼永不過期
1 查看用戶概要文件(一般是DEFAULT)
select * from dba_users where username=test;
2 查看指定概要文件(如default)的密碼有效期設置(默認在default概要文件中設置了 “PASSWORD_LIFE_TIME=180天”):
SELECT * FROM dba_profiles WHERE profile='DEFAULT' and resource_name='PASSWORD_LIFE_TIME';
3 將密碼有效期由默認的180天修改成“無限制”:sql>alter profile default limit password_life_time unlimited;
修改之後不需要重啓動數據庫,會立即生效。
權限
Oracle中共有兩種權限:系統權限和對象權限。系統權限是指針對數據庫中特點操作,比如創建數據表。
對象權限是指對已存在對象的訪問和操作權限,這些權限包括:
select:用於查詢表、視圖和序列
insert:向表或視圖中插入新的記錄
update:更新表中的數據
delete:刪除表中的數據
execute:函數、存儲過程、程序包等的調用或執行
index:爲表創建索引
reference:爲表創建外鍵
alter:修改表或序列的屬性
通常,不同的數據庫用戶擁有不同的使用權限,比如某用戶不能delete或insert數據,這裏的權限指的是對象權限。
DDL
數據庫模式定義語言(Data Definition Language)。一旦執行,立即生效,不會回滾。
DDL包括:CREATE DATABASE
CREATE TABLE
ALTER TABLE
DROP TABLE
CREATE VIEW
ALTER VIEW
DROP VIEW
TRUNCATE TABLE
DELETE、TRUNCATE和DROP 的一句話區別
想刪除表,當然用drop;
想保留表而將所有數據刪除. 如果和事務無關,用truncate即可;
如果和事務有關,或者想觸發trigger,還是用delete。
DML
數據庫操縱語言(Data Manipulation Language)。執行後,需要提交才能正式生效。也可以回滾,返回之前的狀態。
DML包括:SELECT
INSERT
UPDATE
DELETE
主鍵
主鍵是對錶數據唯一性的規定,一張表只能有一個主鍵約束。主鍵約束和唯一性約束區別,可以這樣理解,主鍵約束是對錶數據的標示,而唯一性約束是從業務對數據的標示。創建主鍵方法:
ALTER TABLE 表名 ADD (
CONSTRAINT PK_HUBOHK_STORE_RATE
PRIMARY KEY
(字段1, 字段2, ...));
如果以一個字段當主鍵,這樣寫:
CREATE TABLE 表名
(
ID VARCHAR2(10 BYTE) NOT NULL PRIMARY KEY,
NAME VARCHAR2(10 BYTE) NOT NULL,
...
...
...
);
索引
注意事項1,小數據量的表不宜使用索引
2,頻繁使用insert、delete和update不宜使用
使用索引誤區,導致索引失效
1,使用比較運算符
select * from test where name <> 'DEMO';
2,使用函數
select * from test where instr(name, '_') = 5;
3,聯合索引
建立的索引,由3個字段組成
CREATE INDEX idx_test ON test
(col_1, col_2, col_3);
使用其中一個字段作爲查詢條件:select * from test where col_2 = 'RED';這種情況,索引效果失效。
只有當查詢條件中包含前導列(即聯合索引的第一列),才能發揮聯合索引idx_test的作用。
寫法:
CREATE INDEX 索引名 ON 表名
(字段1, 字段2, ...)
觸發器
觸發器,不允許顯示調用,只能在Oracle在合適的時機自動調用。可以在動作執行之前或執行之後,進行自定義操作。
創建語句觸發器:
create or replace trigger tr_employee_log
before insert or update
on t_employees
begin
insert into employee_log values(user, sysdate);
end;
當嘗試向表 t_employees插入數據時,那麼同樣的employee_log也會查詢一條數據,用來記錄日誌。
行觸發器,顧名思義指的是針對行數據操作,必須包含for each row子句。
常見的用法,轉換大小寫、取最大值、數據初始0