7数据库逻辑对象管理

创建普通表:(在方案HR中)
SYS AS SYSDBA@ORCL>CREATE TABLE HR.GMY(
  2  EMP_ID NUMBER,
  3  EMP_NAME VARCHAR2(50) NOT NULL,
  4  SEX VARCHAR2(2),
  5  TITLE VARCHAR2(50),
  6  WAGE NUMBER(8,2),
  7  IDCARD VARCHAR2(20),
  8  DEP_ID NUMBER
  9  );

创建临时表(默认保存在默认临时表空间中)
ON COMMIT DELETE ROWS:创建一个事务级临时表,每次提交事务后,将删除表中的所有数据
ON COMMIT PRESERVER ROWS:创建一个会话级临时表,当会话结束后,将删除表中的所有数据
SYS AS SYSDBA@ORCL>CREATE GLOBAL TEMPORARY TABLE TEMP_GOODS
  2  (GOODSLD NUMBER,
  3  GOODNUM NUMBER,
  4  PRIVE NUMBER)
  5  ON COMMIT DELETE ROWS;
创建临时表空间
CREATE TEMPORARY TABLESPACE TBS_T1
TEMPFILE ‘TBS_T1.DBF‘ SIZE 50M REUSE AUTOEXTEND ON
MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 64K

与表相关的系统视图:
显示数据库中所有关系表的信息
DBA_TABLES
ALL_TABLES
USER_TABLES
查看表的索引信息
dba_indexes
all_indexes
user_indexes
SELECT INDEX_NAME FROM DBA_INDEXES WHERE OWNER=‘HR‘;
显示表,视图和簇中的列的信息
DBA_TAB_COLUMNS
ALL_TAB_COLUMNS
USER_TAB_COLUMNS
显示表和视图的注释信息
DBA_TAB_COMMENTS
ALL_TAB_COMMENTS
USER_TAB_COMMENTS
显示表和视图中列的注释信息
DBA_COL_COMMENTS
ALL_COL_COMMENTS
USER_COL_COMMENTS
显示数据库中外部表的属性
DBA_EXTERNAL_TABLES
ALL_EXTERNAL_TABLES
USER_EXTERNAL_TABLES
显示外部表的数据源
DBA_EXTERNAL_LOCATIONS
ALL_EXTERNAL_LOCATIONS
USER_EXTERNAL_LOCATIONS
显示表和视图的直方图信息
DBA_TAB_HISTOGRAMS
ALL_TAB_HISTOGRAMS
USER_TAB_HISTOGRAMS
显示表的优化统计信息
DBA_TAB_STATISTICS
ALL_TAB_STATISTICS
USER_TAB_STATISTICS
显示表和视图中列的统计和直方图信息
DBA_TAB_COL_STATISTICS
ALL_TAB_COL_STATISTICS
USER_TAB_COL_STATISTICS
显示从最后一次表的统计信息收集完成后,表中发生的修改操作
DBA_TAB_MODIFICATIONS
ALL_TAB_MODIFICATIONS
USER_TAB_MODIFICATIONS
显示所有加密列的信息和加密算法
DBA_ENCRYPTED_COLUMNS
ALL_ENCRYPTED_COLUMNS
USER_ENCRYPTED_COLUMNS
显示表中所有未使用的列
DBA_UNUSED_COL_TABS
ALL_UNUSED_COL_TABS
USER_UNUSED_COL_TABS
显示表中部分完成的DROP COLUMNR操作值
DBA_PARTIAL_DROP_TABS
ALL_PARTIAL_DROP_TABS
USER_PARTIAL_DROP_TABS

使用ALTER TABLE 语句向表中添加列
ALTER TABLE HR.RSC ADD (DESCRIPTION VARCHAR2(100));

使用ALTER TABLE语句修改列名
ALTER TABLE HR.RSC RENAME COLUMN DESCRIPTION TO DESCRIPT;

使用ALTER TABLE 语句删除列
ALTER TABLE HR.RSC DROP COLUMN DESCRIPT;

使用ALTER TABLE将列设置为不可用
ALTER TABLE HR.RSC SET UNUSED(DESCRIPTION);

删除表的所有的不可用的列
ALTER TABLE HR.RSC DROP UNUSED COLUMNS;

创建和验证主键约束(列值不允许存在重复的记录)
SYS AS SYSDBA@ORCL>CREATE TABLE HR.USERS
  2  (USERID NUMBER PRIMARY KEY,
  3  USERNAME VARCHAR2(40),
  4  USERPWD VARCHAR2(40));
SYS AS SYSDBA@ORCL>CREATE TABLE HR.USERS1
  2  (USERID NUMBER,
  3  USERPWD VARCHAR2(40),
  4  CONSTRAINT PK_USERID PRIMARY KEY(USERID));
SYS AS SYSDBA@ORCL>ALTER TABLE HR.USER2
  2  ADD CONSTRAINT USERID_PK PRIMARY KEY(USERID);

创建和验证非空约束(列值不按受空值)
ALTER TABLE HR.USERS MODIFY USERID NOT NULL;

创建和验证惟一约束(一个表只能存在一个主键,如果其它列也具有惟一性,可以使用UNIQUE进行约束)
SYS AS SYSDBA@ORCL>ALTER TABLE HR.USERS
  2  ADD CONSTRAINT USERPWD_UNI UNIQUE(USERPWD);

SYS AS SYSDBA@ORCL>CREATE TABLE HR.USER1
  2  (USERID NUMBER PRIMARY KEY,
  3  USERNAME VARCHAR2(20),
  4  USERPWD VARCHAR2(20) NOT NULL UNIQUE,
  5  CONSTRAINT UK_USERNAME UNIQUE(USERNAME));

创建和验证检查约束(通过函数对字段的属性进行约束)
SYS AS SYSDBA@ORCL>CREATE TABLE HR.USER1
  2  (USERID NUMBER PRIMARY KEY,
  3  USERNAME VARCHAR2(40),
  4  USERPWD VARCHAR2(40),
  5  CONSTRAINT CK_USERPWD CHECK(LENGTH(USERPWD)>=6));

创建和验证外键约束(用于建立两个表之间的连接关系,主表列一定要是主键约束或唯一约束)
SYS AS SYSDBA@ORCL>ALTER TABLE HR.USER1
  2  ADD CONSTRAINT USERID
  3  FOREIGN KEY(USERID) REFERENCES HR.USER2(USERID);

设置列的DEFAULT属性
SYS AS SYSDBA@ORCL>CREATE TABLE HR.USER3
  2  (USERID NUMBER PRIMARY KEY,
  3  USERNAME VARCHAR2(40) NOT NULL UNIQUE,
  4  USERPWD VARCHAR2(40) DEFAULT(‘123456‘));

删除表:
DROP TABLE HR.USERS;

创建视图:
SYS AS SYSDBA@ORCL>CREATE VIEW HR.EMP_DEP
AS
SELECT E.EMPLOYEE_ID,E.FIRST_NAME,D.DEPARTMENT_NAME FROM HR.EMPLOYEES E,HR.DEPARTMENTS D WHERE E.DEPARTMENT_ID=D.DEPARTMENT_ID;

查看已创建的视图:
SELECT VIEW_NAME,TEXT FROM DBA_VIEWS WHERE OWNER=‘HR‘;
SELECT VIEW_NAME,TEXT FROM DBA_VIEWS WHERE OWNER=‘HR‘ AND VIEW_NAME=‘EMP_DEP‘;

修改视图可以在OEM中修改SQL语句

删除视图:
DROP VIEW HR.EMP_DEP

创建索引:
CREATE [UNIQUE|BITMAP] INDEX [<SCHEMA_NAME>.] <INDEX_NAME>
ON [SCHEMA_NAME.] <TABLE_NAME>[TABLE_COLUMN]
(<COLUMN>[ASC|DESC])<INDEX_SUB><INDEX_attribute>

INDEX_SUB:可以指定保存索引的表空间
LOCAL STORE IN (<TABLE_SPACE>)

INDEX_ATTRIBUTE:指定索引的排序,压缩,联机状态等属性
NOSORT|SORT
REVERSE
COMPRESS<INT>|NOCOMPRESS
LOGGING|NOLOGGING
ONLINE

创建索引:
CREATE INDEX HR.GMY_EMP_NAME_IX ON HR.GMY(EMP_NAME);

CREATE UNIQUE INDEX HR.DEP_ID_UNI ON HR.GMY(DEP_ID);

查看索引信息

SELECT INDEX_NAME,TABLE_NAME FROM DBA_INDEXES WHERE OWNER=‘HR‘;

设置指定的索引不可用:
ALTER INDEX HR.GMY_EMP_NAME_IX UNUSABLE;

设置启用指定的索引:
ALTER INDEX HR.GMY_EMP_NAME_IX REBUILD;

重命名索引:
ALTER INDEX HR.GMY_EMP_NAME_IX RENAME TO RSC_NAME_IX; // TO后面不用加  方案名

删除索引:
DROP INDEX HR.RSC_NAME_IX;


实体化视图:
创建实体化视图
CREATE MATERIALIZED VIEW <name>
FAST|COMPLETE|FORCE
ON [DEMAND|COMMIT]
WITH {PRIMARY KEY | ROWID}
[USING INDEX <STORAGE_OPTION>]
[REFRESH<REFRESH_OPTION>|NEVER REFERSH]
[FORUPDATE] [{ENABLE|DISABLE} QUERY REWRITE]
AS
SELECT statement

SYS AS SYSDBA@ORCL>CREATE MATERIALIZED VIEW HR.MV_EMP1
  2  REFRESH FORCE
  3  ON DEMAND
  4  AS
  5  SELECT * FROM EMPLOYEES;

Materialized view created.


查看实体化视图:
SYS AS SYSDBA@ORCL>SELECT MVIEW_NAME FROM DBA_MVIEWS WHERE OWNER=‘HR‘;

MVIEW_NAME
------------------------------
MV


修改实体化视图的定义
ALTER MATERIALIZED VIEW HR.MV_EMP1
REFRESH COMPLETE
ON DEMAND

删除实体化视图:
DROP MATERIALIZED VIEW HR.MV_EMP1;


ORACLE 簇  
创建簇:
CREATE CLUSTER [<方案名>.]<簇名>(<键列1><数据类型>,<键列1><数据类型>)
PCTUSED <INT>
PCTFREE <INT>
INITRANS <INT>
MAXTRANS <INT>
SIZE    <INT> K|M
TABLESPACE <表空间名>
STORAGE 子句
创建簇:
SYS AS SYSDBA@ORCL>CREATE CLUSTER HR.HRUSTER(DEP_ID NUMBER)
  2  PCTUSED 80
  3  PCTFREE 5
  4  SIZE 500
  5  TABLESPACE USERS
  6  STORAGE(
  7  INITIAL 200K
  8  NEXT 300K
  9  MINEXTENTS 2
 10  MAXEXTENTS UNLIMITED
 11  PCTINCREASE 33);
创建簇表:
SYS AS SYSDBA@ORCL>CREATE TABLE HR.DEPTINFO(
  2  DEP_ID NUMBER PRIMARY KEY,
  3  DEP_NAME VARCHAR2(100) NOT NULL
  4  )
  5  CLUSTER HR.HRUSTER(DEP_ID);

SYS AS SYSDBA@ORCL>CREATE TABLE HR.EMPINFO
  2  (
  3  EMP_ID NUMBER PRIMARY KEY,
  4  EMP_NAME VARCHAR2(50) NOT NULL,
  5  SEX VARCHAR2(2),
  6  TITLE VARCHAR2(50),
  7  WAGE NUMBER(8,2),
  8  IDCARD VARCHAR2(20),
  9  DEP_ID NUMBER)
 10  CLUSTER HR.HRUSTER(DEP_ID);

使用DBA_CLUSTERS视图查看簇信息
SYS AS SYSDBA@ORCL>SELECT CLUSTER_NAME,OWNER,TABLESPACE_NAME,CLUSTER_TYPE FROM DBA_CLUSTERS;

CLUSTER_NAME               OWNER                  TABLESPACE_NAME             CLUST
------------------------------ ------------------------------ ------------------------------ -----
SMON_SCN_TO_TIME_AUX           SYS                  SYSAUX                 INDEX
C_COBJ#                SYS                  SYSTEM                 INDEX
C_FILE#_BLOCK#               SYS                  SYSTEM                 INDEX
C_MLOG#                SYS                  SYSTEM                 INDEX
C_OBJ#                   SYS                  SYSTEM                 INDEX
C_OBJ#_INTCOL#               SYS                  SYSTEM                 INDEX
C_RG#                   SYS                  SYSTEM                 INDEX
C_TOID_VERSION#            SYS                  SYSTEM                 INDEX
C_TS#                   SYS                  SYSTEM                 INDEX
C_USER#                SYS                  SYSTEM                 INDEX
HRUSTER                HR                  USERS                 INDEX

使用DBA_CLU_COLUMNS视图查看簇表的列信息
SELECT * FROM DBA_CLU_COLUMNS WHERE OWNER=‘HR‘;


创建簇索引:(创建时表不能有任何数据)
SYS AS SYSDBA@ORCL>CREATE INDEX HR.EMP_DEP_IX
  2  ON CLUSTER HR.HRUSTER
  3  TABLESPACE USERS
  4  STORAGE
  5  (INITIAL 50K NEXT 50K MINEXTENTS 2 MAXEXTENTS 10 PCTINCREASE 33);


修改簇:
ALTER CLUSTER|<方案名>|<簇名>
SIZE <INT> K|M|G
NEXT <INT> K|M|G
MINEXTENTS <INT>
MAXEXTENTS <INT>
PCTUSED <INT>
PCTFREE    <INT>
INITRANS <INT>
MAXTRANS <INT>
TABLESPACE <TABLESPACE_NAME>
STORAGE <sentence>

SYS AS SYSDBA@ORCL>ALTER CLUSTER HR.HRUSTER
  2  PCTUSED 80
  3  PCTFREE 20;

Cluster altered.


删除簇:

SYS AS SYSDBA@ORCL>DROP CLUSTER HR.HRUSTER
  2  INCLUDING TABLES
  3  CASCADE CONSTRAINTS;

Cluster dropped.

创建散列簇
CREATE CLUSTER |<SCHEMA_NAME>|<CLUSTER_NAME>(<KEY_COLUMN><DATA_TYPE>,...)
TABLESPACE <TABLESPACE_NAME>
PCTUSED <INT>
PCTFREE <INT>
INITRANS <INT>
MAXTRANS <INT>
SIZE <INT> K|M
STORAGE clause
HASH IS <CLUSTER_KEY_COLUMN> HASHKEYS <HASH_VALUE_MAX_NUM>

SYS AS SYSDBA@ORCL>CREATE CLUSTER HR.HASHCLUSTER(AREAID NUMBER(5,0))
  2  TABLESPACE USERS
  3  STORAGE(
  4  INITIAL 200K
  5  NEXT 50K
  6  MINEXTENTS 2
  7  MAXEXTENTS UNLIMITED
  8  PCTINCREASE 33)
  9  HASH IS AREAID HASHKEYS 200;

在散列值中创建表:
SYS AS SYSDBA@ORCL>CREATE TABLE HR.HATB_AREA
  2  (
  3  AREAID  NUMBER(5,0) PRIMARY KEY,
  4  AREANAME VARCHAR2(200),
  5  UPPERLD NUMBER(5,0)
  6  )
  7  CLUSTER HR.HASHCLUSTER(AREAID);

Table created.

使用DBA_CLUSTER_HASH_EXPRESSIONS查看散列函数
SELECT * FROM DBA_CLUSTER_HASH_EXPRESSIONS;

创建序列
SYS AS SYSDBA@ORCL>CREATE SEQUENCE HR.GMY_SEQ
  2  MINVALUE 1
  3  NOMAXVALUE
  4  START WITH 1
  5  INCREMENT BY 1
  6  NOCYCLE
  7  CACHE 20;
修改序列:
SYS AS SYSDBA@ORCL>ALTER SEQUENCE HR.RSC_SEQ
  2  MAXVALUE 100000;

序列的使用:
获取最新的序列号:SEQ_NAME.NEXTVAL
SYS AS SYSDBA@ORCL>INSERT INTO HR.RSC VALUES(HR.RSC_SEQ.NEXTVAL,‘RSC‘);

SYS AS SYSDBA@ORCL>SELECT * from hr.rsc;
RSC_ID       RSC_NAME
---------- --------------------
2       RSC



创建同义词:
CREATE  [PUBLIC] SYNONYM [<方案名>.]<同义词> FOR [<方案名>.]<对象名称> [@<数据库链名>]

SYS AS SYSDBA@ORCL>CREATE  SYNONYM HR.HRGMY FOR HR.GMY;

创建公共同义词:
CREATE PUBLIC  SYNONYM HRGMY FOR HR.GMY;


使用系统视图DBA_SYNONYMS 查看同义词的信息(USER_SYNONYMS,ALL_SYNONYMS)
SYS AS SYSDBA@ORCL>desc DBA_SYNONYMS;
 Name                                   Null?    Type
 ----------------------------------------------------------------- -------- --------------------------------------------
 OWNER                                   NOT NULL VARCHAR2(30)
 SYNONYM_NAME                               NOT NULL VARCHAR2(30)
 TABLE_OWNER                                    VARCHAR2(30)
 TABLE_NAME                               NOT NULL VARCHAR2(30)
 DB_LINK                                    VARCHAR2(128)

删除同义词:
DROP SYNONYM HR.HRRSC;

DROP PUBLIC SYNONYM HRGMY;


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。