--授予scott用戶dba權限
grant dba to scott;
select * from emp;
select * from dept;
select * from salgrade;
select * from user_indexes;
--自動創建索引
alter table emp add constraint un_ename unique(ename);
--刪除約束
alter table emp drop constraint un_ename;
/*
手動創建索引
create index 索引名 on 表名(列名1,列名2)
*/
create table bigtable(
ename varchar2(20),
address varchar2(30)
);
select * from bigtable;
--插入5000000條數據
declare
begin
for i in 1..5000000 loop
insert into bigtable values('姓名'||i,'地址'||i);
end loop;
end;
select count(ename) from bigtable;
--沒有索引的情況下 查詢name='姓名3000000'的時間
select * from bigtable where ename='姓名3000000';
--創建索引
create index index_name on bigtable (ename) ;
select * from bigtable where ename= '姓名3000000' ; --效率明顯增加很多
--創建複合索引
create index index_bigtable on bigtable (ename, address) ;
select * from bigtable where ename='姓名3000000' and address='地址3000000' ;
--.剛除索引
drop index index_bigtable;
drop index index_name;
--刪除表
drop table bigtable;
select * from tab;
/**
創建視圖
CREATE [ot replace] view viewname
[(列名)]
as subquery
[with read only]
*/
--HR經理視圖
create view HR_view
as
select * from emp;
select * from HR_VIEW;
--項目經理視圖
create view MGR_VIEW
as
select empno, ename from emp;
select * from mgr_view;
--刪除視圖
drop view mgr_view;
--查詢所有員工的基本信息,部門信息
create or replace view emp_view
as
select e.empno,e.ename,e.job,e.mgr,e.hiredate,e.sal,e.comm,e.deptno,d.dname,d.loc
from emp e,dept d
where e.deptno=d.deptno;
select * from emp_view;
--查詢所有員工的基本信息,年薪,年收入,部門信息
create or replace view emp_view
as
select e.empno,e.ename,e.job,e.mgr,e.hiredate,e.sal,(e.sal*12) as "年薪",
(e.sal*12+nvl(e.comm, 0)) as "年輸入",e.comm,e.deptno,d.dname,d.loc
from emp e,dept d
where e.deptno=d.deptno;
--統計每個部門的薪水,最高工資,最低工資,平均工資
create or replace view v_emp_sal
as
select deptno,
max(sal) as "最高工資",
min(sal) as "最低工資",
avg(sal) as "平均工資"
from emp
group by deptno;
select * from v_emp_sal;
/**
序列
CREATE SEQUENCE序列名字
START WITH序列初始值
INCREMENT BY每次增長步長
MAXVALUE最大值|NOMAXVALUE
MINVALUE最小值|NOMINVALUE
CYCLE|NOCYCLE|是否循環
CACHE緩存的數量|NOCACHE
*/
--創建一-個循環序列
CREATE SEQUENCE seq_test1
START WITH 1
INCREMENT BY 2
MAXVALUE 30
CYCLE
CACHE 10;
--查詢序列
select * from user_sequences;
--序列取值
select seq_test1.currval from dual;
--必須執行一次nextval才能產生
select seq_test1.nextval from dual;
--常用序列
create sequence seq_test2;
select seq_test2.nextval from dual;
--使用序列實現表的id自增長
create sequence seq_test4;
create table test2(
tid number primary key,
tname varchar2(20)
);
--將序列運用到test2表中
insert into test2 values(seq_test4.nextval,'cici');
select * from test2;
delete from test2 where tid=4;
Oracle之索引,視圖,序列綜合
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.