Oracle_071_lesson_p13

創建序列、同義詞、索引

create sequence
CREATE SEQUENCE [ schema. ] sequence
[ { START WITH|INCREMENT BY } integer
| { MAXVALUE integer | NOMAXVALUE }
| { MINVALUE integer | NOMINVALUE }
| { CYCLE | NOCYCLE }
| { CACHE integer | NOCACHE }
| { ORDER | NOORDER }
];

CREATE SEQUENCE dept_deptid_seq
START WITH 280
INCREMENT BY 10
MAXVALUE 9999
NOCACHE
NOCYCLE;

INSERT INTO departments(department_id,
department_name, location_id)
VALUES (dept_deptid_seq.NEXTVAL,
'Support', 2500);

SELECT dept_deptid_seq.CURRVAL
FROM dual;

NEXTVAL 下一個值, CURRVAL 當前值
第一次先執行NEXTVAL,才能對CURRVAL取值。
select detpno.currval from dual;
取值只跟當前會話有關。

示例:
CREATE SEQUENCE s1 START WITH 1;
CREATE TABLE emp (a1 NUMBER DEFAULT s1.NEXTVAL NOT NULL, a2 VARCHAR2(10));
INSERT INTO emp (a2) VALUES (‘john');
INSERT INTO emp (a2) VALUES (‘mark');
SELECT * FROM emp;

Caching sequence values in memory gives faster access to those values.
Gaps in sequence values can occur when(序列不連續有以下3種情況):
1、A rollback occurs
2、The system crashes 如:中斷oracle , ps -ef |grep smon -> kill -9 進程號 。 shutdown immediate 關閉數據庫
3、A sequence is used in another table

修改序列 alter sequence
ALTER SEQUENCE dept_deptid_seq
INCREMENT BY 20
MAXVALUE 999999
NOCACHE
NOCYCLE;

DROP SEQUENCE dept_deptid_seq;

start with 起始值不能改
循環到最大值時,起始值再從1開始
要想改起始值,只能刪除序列重建

DESCRIBE user_sequences
SELECT sequence_name, min_value, max_value,
increment_by, last_number
FROM user_sequences;

查看序列信息: select * from user_sequences;
監控last_number和最大值的差距,差距越小越要注意 ,特別是有序列作爲外鍵時,很重要。

synonyms 同義詞

創建同義詞
CREATE [PUBLIC] SYNONYM synonym
FOR object;

DESCRIBE user_synonyms;

SELECT *
FROM user_synonyms;

示例:
create synonym test for v$SESSION;
只有別名不會分配存儲單元,默認爲私有。
加public 則是全局公有。

示例:
create public synonym test2 for emp;
create departments for hr.department ;
truncate table emp; 刪除表的行內容,表結構還存在。
drop synony emp; 刪除同義詞。

創建索引 create index

1、是用戶對象
2、提高數據庫性能
3、減少I/O
4、依賴於表
5、增刪改表的時候,系統自動更新索引

自動會創建索引,在主鍵和唯一鍵時
Automatically: A unique index is created automatically when you define a PRIMARY KEY or UNIQUE constraint in a table definition.

手動建索引
Manually: You can create unique or nonunique index on columns to speed up access to the rows.

create index emp_last_name_idx
on table (column1,column2.......);

DROP INDEX index;
drop index emp_last_name_idx;
alter index emp_last_name_idx invisible ; 索引不可見;
alter index emp_last_name_idx visible; 索引可見;

CREATE TABLE NEW_EMP
(employee_id NUMBER(6) PRIMARY KEY USING INDEX
(CREATE INDEX emp_id_idx ON NEW_EMP(employee_id)),
first_name VARCHAR2(20),
last_name VARCHAR2(25));

SELECT INDEX_NAME, TABLE_NAME
FROM USER_INDEXES
WHERE TABLE_NAME = 'NEW_EMP';

CREATE INDEX emp_id_name_ix1
ON employees(employee_id, first_name);

ALTER INDEX emp_id_name_ix1 INVISIBLE;

CREATE BITMAP INDEX emp_id_name_ix2
ON employees(employee_id, first_name);

DESCRIBE user_indexes;

DESCRIBE user_ind_columns;

SELECT index_name, column_name,table_name FROM user_ind_columns WHERE index_name = 'LNAME_IDX';

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章