windows10-64位
Oracle12c
SQL Developer
时间: 2020-05-07
create table Reader
(
RNO varchar2(4) primary key,
Rname varchar2(10) not null,
Rsex varchar2(2),
Rage integer,
Rboss varchar2(10),
Raddress varchar2(30)
) ;
insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values('R001','张三',20,'男','李四','416');
insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values('R002','张三',35,'女',null,'417');
insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values('R003','李四',30,'男',null,'416');
insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values('R004','王五',20,'男',null,'417');
insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values('R005','马六',40,'男',null,'416');
insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values('R006','刘三',20,'男',null,'417');
insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values('R007','王四',40,'男','李四','416');
insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values('R008','李小龙',20,'男','李四','417');
insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values('R009','王小倩',40,'男','李四','416');
insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values('R010','王一小',20,'男','李四','417');
建立在416办公室工作的视图V416,视图包括员工的编号、姓名、年龄等信息:
CREATE VIEW V416 as select rno,rname,rage from reader where raddress='416';
跟表的查询类似,比如
从V416中查询年龄大于30的员工信息:
select * from v416 where rage > 30;
输出:
RNO RNAME RAGE
---- ---------- ----------
R005 马六 40
R007 王四 40
向视图V416中插入一条新的员工记录,然后从V416中查找该条记录,测试是否可以找到:
insert into v416( rno,rname,rage) values('R999','new reader',99);
select * from reader;
select * from v416;
输出:
RNO RNAME RSE RAGE RBOSS RADDRESS
---- ---------- --- ---------- ---------- ------------------------------
R001 张三 男 20 李四 416
R003 李四 男 30 416
R004 王五 男 20 417
R005 马六 男 40 416
R006 刘三 男 20 417
R007 王四 男 40 李四 416
R999 new reader 99
选定了 7 行
RNO RNAME RAGE
---- ---------- ----------
R001 张三 20
R003 李四 30
R005 马六 40
R007 王四 40
可以看到插入V416时,实际上是插入Reader表中,而V416没有显示是因为,不满足Raddress = ‘416’ 这个条件;
比如删除王四的数据:
delete from v416 where rname='王四';
查询看看Reader表和V416视图:
select * from reader;
select * from v416;
输出:
RNO RNAME RSE RAGE RBOSS RADDRESS
---- ---------- --- ---------- ---------- ------------------------------
R001 张三 男 20 李四 416
R003 李四 男 30 416
R004 王五 男 20 417
R005 马六 男 40 416
R006 刘三 男 20 417
R999 new reader 99
选定了 6 行
RNO RNAME RAGE
---- ---------- ----------
R001 张三 20
R003 李四 30
R005 马六 40
果然都删除了王四,说明视图操作实际是在表上进行的。
drop view V416;