表和视图的区别,表是占用硬盘空间物理表,而视图可以理解为一个虚表,并不存储在硬盘上,不占用硬盘空间,实际上就是一个查询语句,方便查询。
对视图里面的数据操作(增 删 改) 其实就是对真实的表 增 删 改, 它们始终保持一致性。
哪为什么还需要视图 ?
视图可以理解成一个封装过的表, 例如不让用户 清楚知道表的某些字段信息,比较安全。
===========
下面进行操作 演示
CREATE TABLE xue_sheng( id integer, xing_ming varchar(25),xing_bie number, fen_shu number, b_id integer);
INSERT INTO xue_sheng VALUES(1,'ZhanSan',1,80,1);
INSERT INTO xue_sheng VALUES(2,'LiSi',1,90,2);
INSERT INTO xue_sheng VALUES(3,'ZhanHong',0,75,2);
INSERT INTO xue_sheng VALUES(4,'ChenXiaoMing',1,85,1);
增加一个视图:
SQL> CREATE VIEW xs_view AS SELECT * FROM xue_sheng;
CREATE VIEW xs_view AS SELECT * FROM xue_sheng
*
ERROR at line 1:
ORA-01031: insufficient privileges scott没有创建视图的权限
----------------------------------
SQL> conn /as sysdba
Connected.
SQL> grant connect,dba to scott;
Grant succeeded.
SQL> conn scott/tiger
Connected.
SQL> CREATE VIEW xs_view AS SELECT * FROM xue_sheng;
View created.
------------------------------
SELECT * FROM xs_view;
往视图插入数据
INSERT INTO xs_view(id,xing_ming) VALUES(5,'test');
SELECT * FROM xs_view;
SELECT * FROM xue_sheng;
操纵视图,其实是操作真实的表中
CREATE OR REPLACE 的使用 和 设置视图的权限 WITH READ ONLY 只读
修改原来的视图, 其实就是做一个替换
CREATE OR REPLACE VIEW xs_view AS SELECT * FROM xue_sheng WITH READ ONLY;
SQL> INSERT INTO xs_view(id,xing_ming) VALUES(6,'test2');
INSERT INTO xs_view(id,xing_ming) VALUES(6,'test2')
*
ERROR at line 1:
ORA-42399: cannot perform a DML operation on a read-only view
提示这是一个 read-only view 只读的视图
================================================================
CREATE OR REPLACE VIEW xs_view AS SELECT * FROM xue_sheng WHERE fen_shu >= 80;
SELECT * FROM xs_view;
这样使用视图比较方便。
--------------------------
CREATE TABLE ban_ji( id integer , ban_ji varchar(25));
INSERT INTO ban_ji VALUES(1,'1-(1)');
INSERT INTO ban_ji VALUES(2,'1-(2)');
INSERT INTO ban_ji VALUES(3,'1-(3)');
SELECT x.id, xing_ming,ban_ji FROM xue_sheng x JOIN ban_ji b ON x.b_id=b.id;
建立一个简单的视图, 取代复杂的查询语句
CREATE OR REPLACE VIEW xs_view AS SELECT x.id, xing_ming,ban_ji FROM xue_sheng x JOIN ban_ji b ON x.b_id=b.id;
SELECT * FROM xs_view;
显示视图的字段和数据类型
DESC xs_view;
视图的内容其实不多, 比较要注意的话,就是开始创建视图,要有创建的权限。结束了,请关注我的技术博客: 88
对视图里面的数据操作(增 删 改) 其实就是对真实的表 增 删 改, 它们始终保持一致性。
哪为什么还需要视图 ?
视图可以理解成一个封装过的表, 例如不让用户 清楚知道表的某些字段信息,比较安全。
===========
下面进行操作 演示
CREATE TABLE xue_sheng( id integer, xing_ming varchar(25),xing_bie number, fen_shu number, b_id integer);
INSERT INTO xue_sheng VALUES(1,'ZhanSan',1,80,1);
INSERT INTO xue_sheng VALUES(2,'LiSi',1,90,2);
INSERT INTO xue_sheng VALUES(3,'ZhanHong',0,75,2);
INSERT INTO xue_sheng VALUES(4,'ChenXiaoMing',1,85,1);
增加一个视图:
SQL> CREATE VIEW xs_view AS SELECT * FROM xue_sheng;
CREATE VIEW xs_view AS SELECT * FROM xue_sheng
*
ERROR at line 1:
ORA-01031: insufficient privileges scott没有创建视图的权限
----------------------------------
SQL> conn /as sysdba
Connected.
SQL> grant connect,dba to scott;
Grant succeeded.
SQL> conn scott/tiger
Connected.
SQL> CREATE VIEW xs_view AS SELECT * FROM xue_sheng;
View created.
------------------------------
SELECT * FROM xs_view;
往视图插入数据
INSERT INTO xs_view(id,xing_ming) VALUES(5,'test');
SELECT * FROM xs_view;
SELECT * FROM xue_sheng;
操纵视图,其实是操作真实的表中
CREATE OR REPLACE 的使用 和 设置视图的权限 WITH READ ONLY 只读
修改原来的视图, 其实就是做一个替换
CREATE OR REPLACE VIEW xs_view AS SELECT * FROM xue_sheng WITH READ ONLY;
SQL> INSERT INTO xs_view(id,xing_ming) VALUES(6,'test2');
INSERT INTO xs_view(id,xing_ming) VALUES(6,'test2')
*
ERROR at line 1:
ORA-42399: cannot perform a DML operation on a read-only view
提示这是一个 read-only view 只读的视图
================================================================
CREATE OR REPLACE VIEW xs_view AS SELECT * FROM xue_sheng WHERE fen_shu >= 80;
SELECT * FROM xs_view;
这样使用视图比较方便。
--------------------------
CREATE TABLE ban_ji( id integer , ban_ji varchar(25));
INSERT INTO ban_ji VALUES(1,'1-(1)');
INSERT INTO ban_ji VALUES(2,'1-(2)');
INSERT INTO ban_ji VALUES(3,'1-(3)');
SELECT x.id, xing_ming,ban_ji FROM xue_sheng x JOIN ban_ji b ON x.b_id=b.id;
建立一个简单的视图, 取代复杂的查询语句
CREATE OR REPLACE VIEW xs_view AS SELECT x.id, xing_ming,ban_ji FROM xue_sheng x JOIN ban_ji b ON x.b_id=b.id;
SELECT * FROM xs_view;
显示视图的字段和数据类型
DESC xs_view;
视图的内容其实不多, 比较要注意的话,就是开始创建视图,要有创建的权限。结束了,请关注我的技术博客: 88