您的位置:首页 > 数据库 > Oracle

Oracle 表空间和数据对象

2019-06-12 11:26 1516 查看

#表空间、数据库对象

#创建同义词并访问
create user XiaoMei identified by XiaoMei;
grant connect to XiaoMei;
grant resource to XiaoMei;
grant create synonym to XiaoMei;
#连接至XIAOMEI后
CREATE SYNONYM MyEmp FOR SCOTT.EM;
#删除同义词
DROP [PUBLIC] SYNONYM [schema.]sysnonym_name;

#序列
#创建一个从1开始,默认最大值,每次增长1的序列,要求NOCYCLE,缓存中有30个预先分配号的序列号
create sequence myseq
minvalue 1
start with 1
nomaxvalue
increment by 1
nocycle
cache 30
/
#通过伪列访问该序列的当前值和下一个值
select myseq.nextval from dual;
select myseq.currval from dual;
#修改序列
alter sequence
#删除序列
drop sequence myseq;

#视图(预定义查询)
#基于emp和dept建立视图
create or replace view empdetail
as
select empno,ename,job,hiredate,e.deptno,dname
from scott.emp e
join scott.dept 4000 d
on e.deptno = d.deptno
with read only
/
select * from empdetail;

#索引
#Oracle 数据库会为表的主键和包含唯一约束的列自动创建索引。索引可以提高查询的效 率,但是在数据增删改时需要更新索引,因此索引对增删改时会有负面影响
#为 EMP 表的 ENAME 列创建创建唯一索引,为 EMP 表的工资列创建普通索引,
把 JOB 列先变为小写再创建索引。
create unique index uq_ename_idx on scott.emp(ename);
CREATE INDEX IDX_SAL ON scott.EMP(SAL);
CREATE INDEX IDX_JOB_LOWER ON scott.EMP(LOWER(JOB));

#表空间
#系统表空间:SYSTEM,影响数据库性能
#临时表空间:TMEP,内存不足时将排序类数据临时写在该空间内
#用户自定义空间:用户可以通过 CREATE TABLESPACE 命令创建表空
#创建一个表空间,包含两个数据文件大小分别是 10MB,5MB,要求 extent 的
大小统一为 1M
create tablespace myspace
datafile ‘D:/A.ORA’ SIZE 10M,
‘D:/B.ORA’ SIZE 5M
EXTENT MANAGEMENT LOACL
UNIFORM SIZE 1M
/
#扩充表空间
ALTER TABLESPACE MYSPACE
ADD DATAFILE ‘D:/C.ORA’ SIZE 10M
/
#为某一用户指定默认表空间
CREATE USER ACONG IDENTIFIED BY ACONG
DEFAULT TABLESPACE MYSPACE
/
#为表指定表空间
CREATE TABLE SCORES
(
ID NUMBER,
TERM VARCHAR2(2),
STUID VARCHAR2(7) NOT NULL,
EXAMID VARCHAR2(7) NOT NULL,
WRITTENSCORE NUMBER(4,1) NOT NULL,
LABSCORE NUMBER(4,1) NOT NULL
)
TABLESPACE MYSPACE
/
#为索引指定表空间
CREATE INDEX UQ_ID ON SCORES(ID)
TABLESPACE MYSPACE

#回顾:创建同义词的命令是CREATE SYNONYM

#练习
#1.产生一个用于 DEPT 表的主键值的序列,序列起始值是 100,最大值是 500,增长步 长是 10
CREATE SEQUENCE DEPTSEQ
MINVALUE 100
MAXVALUE 500
INCREMENT BY 10
/

#2.用序列产生 DEPT 表的主键,向 DEPT 表中插入 3 条记录
#3.为 DEPT 表创建一个同义词
CREATE SYNONYM DEPT FOR SCOTT.DEPT;
#4.创建一个视图包括 EMP 表的 EMPNO,ENAME,JOB,部门表的 DNAME 列,只能包含 销售部的记录
CREATE OR REPLACE VIEW EMPDETAIL
AS
SELECT EMPNO,ENAME,JOB,DNAME
FROM SCOTT.EMP E
JOIN SCOTT.DEPT D
ON E.DEPTNO = D.DEPTNO
WHERE DNAME = ‘SALES’
/
SELECT * FROM EMPDETAIL
/
5.为 EMP 表的 ENAME 列创建唯一索引
CREATE UNIQUE INDEX EMP_IDX ON SCOTT.EMP(ENAME);

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: