Oracle数据库对象管理(2)

Author Avatar
Euan 11月 01, 2019
  • 在其它设备中阅读本文章

Oracle数据库对象管理(2)

一、实验目的

1掌握Oracle数据库序列管理;

2掌握Oracle数据库视图的管理;

二、实验要求(具体步骤进行截屏展示并配以文字说明)

1序列SEQUENCE

(1)创建序列testsequence,初始值为100,每次增加2。

SQL> CREATE SEQUENCE testsequence

2 START WITH 100

3 INCREMENT BY 2;

K7G1TU.png

通过查询系统视图显示该序列的相关信息;

SQL> select * from all_sequences WHERE sequence_owner=’sys’;

K7GJfJ.png

原因是由于没大小写

SQL> select * from user_sequences where sequence_name=’TESTSEQUENCE’;

K7Gtp9.png

(2)创建测试表:create table test( id number(10) primary key,name varchar(10))

SQL> create table test( id number(10) primary key,name varchar(10));

K7GGY4.png

利用序列testsequence作为id添加3条记录(insert 语句)

SQL> INSERT INTO test(id) values(TESTSEQUENCE. NEXTVAL);

SQL> INSERT INTO test(id) values(TESTSEQUENCE. NEXTVAL);

SQL> INSERT INTO test(id) values(TESTSEQUENCE. NEXTVAL);

K7G8kF.png

并在添加完成后显示test表内容

SQL> select * from test;

K7GNlR.png

(3)查询testsequence的currval

SQL> select TESTSEQUENCE.currval from dual;

K7GU61.png

修改序列testsequence的步长为3

SQL> alter sequence TESTSEQUENCE INCREMENT BY 3;

K7GaOx.png

MAXVALUE为currval的3倍

SQL> alter sequence TESTSEQUENCE MAXVALUE 312;

K7Gwm6.png

利用序列testsequence,插入4条记录

SQL> INSERT INTO test(id) values(TESTSEQUENCE. NEXTVAL);

SQL> INSERT INTO test(id) values(TESTSEQUENCE. NEXTVAL);

SQL> INSERT INTO test(id) values(TESTSEQUENCE. NEXTVAL);

SQL> INSERT INTO test(id) values(TESTSEQUENCE. NEXTVAL);

K7G00K.png

完成后显示test表内容

SQL> select * from test;

K7GBTO.png

显示序列testsequence的currval;

SQL> select TESTSEQUENCE.currval from dual;

K7GrkD.png

2视图 VIEW

(1)创建一个名为“EDV”的只读视图完成员工信息的综合查询,包括员工编号,员工名、薪水,职位编号、职位名称、部门编号、部门名称、部门所在地信息、国家信息。(以上各信息存于案例数据库中HR模式下的基本表EMPLOYEES、DEPARTMENTS、LOCATIONS、COUNTRIES、REGIONS中)

1
2
3
4
5
6
7
SQL> CREATE OR REPLACE VIEW EDV (employee_id,job_id,manager_id, department_id,location_id, country_id,first_name,last_na
me,salary,commission_pct,department_name,job_title,city,state_province,country_name,region_name)
AS
SELECT e.employee_id,e.job_id,e.manager_id, e.department_id, d.location_id, l.country_id, e.first_name,e.last_name,
e.salary,e.commission_pct,d.department_name,j.job_title,l.city, l.state_province,c.country_name,r.region_name FROM emplo
yees e,departments d,jobs j, locations l,countries c,regions r WHERE e.department_id = d.department_id AND d.location_id
= l.location_id AND l.country_id = c.country_id AND c.region_id = r.region_id AND j.job_id = e.job_id WITH READ ONLY;

K7Gste.png

(2)显示视图EDV查询到的信息;

SQL> select * from user_views WHERE view_name=’EDV’;

K7GyfH.png

K7Gcpd.png

K7Gg1A.png

(3)利用系统提供的视图查询EDV视图的定义信息;

select view_name,text FROM dba_views where view_name=’EDV’;

K7G26I.png

通过查询数据字典视图DBA_VIEWS,ALL_VIEWS和USER_VIEWS可以获取视图的信息。这里我通过查询视图USER_VIEWS获取了当前用户所有视图的名称以及视图定义的信息

本文使用 CC BY-NC-SA 3.0 中国大陆 协议许可
具体请参见 知识共享协议

本文链接:https://zyhang8.github.io/2019/09/30/oracle-exp3/