Oracle學習第五天

回顧內容:

  1. 四大類型的SQL語言有哪些?
  2. 僞列有哪些?oracle常用基本數據類型有哪些?

 

本次學習內容講解:

  1. 表空間

1)、創建表空間。

2)、修改表空間。

3)、刪除表空間。

  1. 自定義用戶
  1. 新增用戶。
  2. 修改用戶。
  3. 刪除用戶。
  1. 權限管理

1)、系統權限:SESSION、TABLE、VIEW、SEQUENCE。

2)、對象權限:CONNECT、RESOURCE、DBA。

3)、對用戶授予權限、撤消權限。

  1. 序列

1)、創建序列。

2)、訪問序列。

3)、修改序列。

4)、刪除序列。

  1. SYS_GUID
  2. 同義詞

1)、私有同義詞。

2)、公有同義詞。

3)、刪除同義詞。

4)、私有同義詞和公有同義詞的區別。

  1. 索引

1)、B樹索引。

2)、唯一索引和非唯一索引。

3)、反向鍵索引。

4)、位圖索引。

5)、其它索引。

6)、刪除索引。

7)、重建索引。

  1. 分區表

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);

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