本章主要内容:
1.视图管理:视图新增,修改,删除;
2.索引管理:索引目的,创建,修改,删除;
3.同义词管理:同义词的作用,创建,修改,使用及删除;
4.系列管理:系统作用,系列创建、修改、使用及删除;
创建语句
CREATE VIEW VIEW_NAME AS SELECT * FROM BASE_TABLE
[WITH READ ONLY]
[WITH CHECK OPTION]
使用视图进行操作
select column_list from VIEW_NAME
删除视图
Drop VIEW_NAME
CREATE OR REPLACE VIEW V_EMP1ASSELECT * FROM EMP;
SELECT * FROM USER_VIEWS; --查看用户的视图
DESC V_EMP1 --查看视图的结构
INSERT INTO V_EMP (empno,ename,sal) VALUES (51,’HR’, 4000);
往视图插入数据,实际将数据插入到了基表
SELECT * FROM EMP; --查询看一下插入成功没
CREATE OR REPLACE VIEW V_EMP2ASSELECT * FROM EMP WHERE sal>2500;
INSERT INTO V_EMP2 (empno,ename,sal) values(51,’HR’, 2100); --OK
插入也能成功,可以查一下基表,但是查询该视图却看不到数据
SELECT * FROM V_EMP2 --看不到往视图插入的数据,造成错觉
CREATE OR REPLACE VIEW V_EMP2ASSELECT * FROM EMP WHERE sal>2500WITH CHECK OPTION --不符合视图条件的数据不让插
INSERT INTO V_EMP2 (empno,ename,sal) VALUES (52,’HR’, 2100); --失败
CREATE OR REPLACE VIEW V_EMP_DEPTASSELECT empno,ename,sal,d.deptno,d.dname FROM EMP e INNER JOIN DEPT d ON e.deptno = d.deptno;
INSERT INTO V_EMP_DEPT VALUES(‘1005’,’TOM’,3100,’52’, ‘SALES’);
失败,多表连接的视图不让插入和修改CREATE OR REPLACE VIEW V_READ ASSELECT * FROM EMP WITH READ ONLY; --只读的视图,不能插入、修改、删除记录
CREATE INDEX IDX_EMP on EMP (deptno,mgr);
CREATE INDEX index_name on TABLE_NAME(index_column) TABLESPACE SYSTEM STORAGE ( initial 20 k next 20 k pctincrease 75) pctfree 0 ;
CREATE UNIQUE INDEX idx_emp_ename on EMP(empno) TABLESPACE users STORAGE ( initial 20 k next 20 k pctincrease 75) 、pctfree 0 ;
CREATE bitmap INDEX on EMP(sex); --可能的值少,重复多
DROP INDEX index_ename;
User_indexes:存放用户所创建的索引信息
User_ind_columns:存放用户索引的字段信息查询ida表的索引信息
select index_name,column_name,column_position from user_ind_columns where table_name=‘IDA'
语法:CREATE SEQUENCE sequence_name[INCREMENT BY n]
[START WITH n][{MAXVALUE n}][{MINVALUE n}]
[{CYCLE |NOCYCLE}][{CACHE n|NOCACHE}];
INCREMENT BY:指定步长 。
START WITH:指定初始值 。
MAXVALUE:指定序列可生成的最大值。
MINVALUE:指定序列的最小值。CYCLE--配置序列在达到界限值时重复编号NOCYCLE--达到界限值时不重复编号,一直累加,不循环,这是默认值。
CACHE--定义在内存中保留的序列编号块的大小,默认值为20.NOCACHE--强制数据词典对于生成的每个序列编号进行更新,保证在生成的编号中没有空缺,但这样会降低性能.
CREATE SEQUENCE myseq INCREMENT BY 1 START WITH 1 MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE CACHE 20NOORDER;CREATE TABLE AA (id number(10,0) not null, aa varchar2(10));
insert into AA values(myseq.NEXTVAL, 'first');
insert into AA values(myseq.NEXTVAL, 'second');
SELECT * FROM AA;
SELECT myseq.CURRVAL from dual;
本人从事软件项目开发20多年,2005年开始从事Java工程师系列课程的教学工作,录制50多门精品视频课程,包含java基础,jspweb开发,SSH,SSM,SpringBoot,SpringCloud,人工智能,在线支付等众多商业项目,每门课程都包含有项目实战,上课PPT,及完整的源代码下载,有兴趣的朋友可以看看我的在线课堂
讲师课堂链接:https://edu.csdn.net/lecturer/893