回顧內容:
- 四大類型的SQL語言有哪些?
- 僞列有哪些?oracle常用基本數據類型有哪些?
本次學習內容講解:
- 表空間
1)、創建表空間。
2)、修改表空間。
3)、刪除表空間。
- 自定義用戶
- 新增用戶。
- 修改用戶。
- 刪除用戶。
- 權限管理
1)、系統權限:SESSION、TABLE、VIEW、SEQUENCE。
2)、對象權限:CONNECT、RESOURCE、DBA。
3)、對用戶授予權限、撤消權限。
- 序列
1)、創建序列。
2)、訪問序列。
3)、修改序列。
4)、刪除序列。
- SYS_GUID
- 同義詞
1)、私有同義詞。
2)、公有同義詞。
3)、刪除同義詞。
4)、私有同義詞和公有同義詞的區別。
- 索引
1)、B樹索引。
2)、唯一索引和非唯一索引。
3)、反向鍵索引。
4)、位圖索引。
5)、其它索引。
6)、刪除索引。
7)、重建索引。
- 分區表
1)、範圍分區。
2)、間隔分區。
創建表空間、用戶、授權:
--查看錶空間裏存在的數據文件
SELECT *FROM dba_data_files;
--查看錶空間
SELECT *FROM user_tablespaces;
--永久性表空間
CREATE TABLESPACE ts_accp
DATAFILE 'c:\ts_accp.mdf' SIZE 5m
AUTOEXTEND ON;
--臨時表空間
CREATE TEMPORARY TABLESPACE temp_ts_accp
tempfile 'c:\temp_ts_accp.mdf' SIZE 5m
AUTOEXTEND ON;
--給表空間增加一個數據文件
ALTER TABLESPACE ts_accp ADD DATAFILE 'c:\ts_accp1.mdf' SIZE 5m;
--重置數據文件大小
ALTER DATABASE DATAFILE 'c:\ts_accp.mdf' RESIZE 10m;
--刪除表空間 和文件
DROP TABLESPACE ts_accp INCLUDING CONTENTS AND DATAFILES ;
--創建用戶
/**
*/
CREATE USER u_accp IDENTIFIED BY orcl
DEFAULT TABLESPACE ts_accp --默認表空間
QUOTA UNLIMITED ON ts_accp --不限制使用ts_accp表空間大小
PASSWORD EXPIRE ; ---首次登錄修改密碼
--修改密碼
ALTER USER u_accp PASSWORD EXPIRE ;
--刪除用戶
DROP USER u_accp ;
--給用戶權限
GRANT connect,RESOURCE TO u_accp;
--回收用戶權限
REVOKE connect,RESOURCE FROM u_accp;
--設置用戶連接權限 查詢所有表 更新scott.emp表權限
GRANT CONNECT,SELECT ANY TABLE,UPDATE ON scott.emp TO u_accp;
刪除表:
create or replace procedure p_del_table(
in_tablename IN VARCHAR2
)
AS
v_count NUMBER;
begin
SELECT COUNT(1) INTO v_count FROM dual WHERE EXISTS (
SELECT * FROM User_Tables WHERE table_name=upper(in_tablename)
);
IF v_count > 0 THEN
EXECUTE IMMEDIATE 'DROP TABLE ' || in_tablename;
END IF;
end p_del_table;
索引、同義詞、分區表:
--授權創建同義詞
GRANT CREATE SYNONYM,CREATE PUBLIC SYNONYM TO u_accp;
--創建序列 從1開始 每次增加1 最大值1000 不循環 每次緩存10個
CREATE SEQUENCE sq_area_id
START WITH 1 INCREMENT BY 1
MAXVALUE 1000
NOCYCLE
CACHE 10 ;
--刪除序列
DROP SEQUENCE sq_area_id;
--修改序列 最大值 或者其它屬性
ALTER SEQUENCE sq_area_id MAXVALUE 2000;
SELECT sq_area_id.nextval FROM dual;
INSERT INTO tbl_sys_area VALUES(sq_area_id.nextval,'華東','華東');
SELECT sq_area_id.nextval,sq_area_id.currval FROM dual
DROP TABLE tbl_sys_area;
CREATE TABLE tbl_sys_area
(
area_id NUMBER(5) ,
area_name VARCHAR2(50) NOT NULL,
area_desc VARCHAR2(500)
);
-- 查詢GUID
SELECT SYS_GUID() FROM DUAL;
SELECT *FROM tbl_sys_area
--創建私有同義詞
CREATE SYNONYM sy_area FOR tbl_sys_area;
--創建公有同義詞
CREATE PUBLIC SYNONYM sy_area FOR tbl_sys_area;
--刪除私有同義詞
DROP SYNONYM sy_area;
--使用同義詞
SELECT *FROM sy_area;
--查義字典中的所有同義詞
SELECT *FROM user_synonyms;
--創建B樹索引
CREATE INDEX index_area_id ON tbl_sys_area(area_id);
--創建唯一索引
CREATE UNIQUE INDEX index_area_id ON tbl_sys_area(area_id);
--反向鍵索引
CREATE INDEX index_area_id ON tbl_sys_area(area_id) REVERSE ;
--刪除索引
DROP INDEX index_area_id;
--重建索引
ALTER INDEX index_area_id REBUILD;
SELECT *FROM tbl_sys_area WHERE area_id = 1
--創建範圍分區表
DROP TABLE tbl_sys_area;
CREATE TABLE tbl_sys_area
(
area_id NUMBER(5) ,
area_name VARCHAR2(50) NOT NULL,
area_desc VARCHAR2(500),
create_date DATE
)
PARTITION BY RANGE (create_date)
(
PARTITION p1 VALUES LESS THAN (to_date('2014-07-1','yyyy-mm-dd')),
PARTITION p2 VALUES LESS THAN (to_date('2014-08-1','yyyy-mm-dd')),
PARTITION p3 VALUES LESS THAN (maxvalue)
);
INSERT INTO tbl_sys_area VALUES(sq_area_id.nextval,'華東','華東',to_date('2014-06-1','yyyy-mm-dd'));
INSERT INTO tbl_sys_area VALUES(sq_area_id.nextval,'華北','華北',to_date('2014-07-1','yyyy-mm-dd'));
INSERT INTO tbl_sys_area VALUES(sq_area_id.nextval,'aa','aa',to_date('2014-09-1','yyyy-mm-dd'));
--查看分區表
SELECT *FROM tbl_sys_area PARTITION (p3);
--查看錶分區 字典
SELECT *FROM user_tab_partitions;
--創建間隔分區表
/**
NUMTOYMINTERVAL 年 、月
NUMTODSINTERVAL 天 、小時 、分鐘、 秒
*/
CREATE TABLE tbl_sys_area
(
area_id NUMBER(5) ,
area_name VARCHAR2(50) NOT NULL,
area_desc VARCHAR2(500),
create_date DATE
)
PARTITION BY RANGE (create_date)
INTERVAL(NUMTOYMINTERVAL(1,'MONTH'))
(
PARTITION p1 VALUES LESS THAN (to_date('2014-07-1','yyyy-mm-dd'))
);
SELECT *FROM tbl_sys_area PARTITION (SYS_P22);