数据库管理——视图操作

视图操作

视图是从一个或多个表中导出来的表,是一种虚拟存在的表。视图就像一个窗口,通过这个窗口可以看到系统专门提供的数据,这样用户可以不看整个数据库表中的数据,而只关心对自己有用的数据。视图可以使用户的操作更方便,而且可以保障数据库系统的安全性

  • 视图并在数据库中以存储数据值的形式存在,行和列数据来自定义视图的查询所引用的基本表,并且在具体引用视图时动态生成
  • 视图使程序员只关心特定数据和负责的特定任务。程序员只能看到视图中定义的数据而不是视图所引用表中的数据,从而提高数据的安全性。

创建视图

CREATE [OR REPLACE] VIEW viewname[columnlist]
AS SELECT statement;
#CREATE表示创建新的视图,REPLACE 表示替换已经创建的视图;
viewname为视图名称;columnlist为属性列;
SELECT statement表示SELECT语句
  • 创建视图需要登录用户有相应的权限

    use school;
    select user,Select_priv,Create_view_priv FROM mysql.user;#查询数据库用户创建和选择视图权限
    
  • 在单表上创建视图

    use school;
    alter table student add privacy varchar(64);#增加隐私列
    #查询数据库用户创建和选择视图权限
    create view view_student as select id,class_id,name from student;
    #为学生创建视图
    desc view_student;
    #查看视图
    select * from view_student;
    #根据视图进行查询
    
  • 在多表上创建视图

    create view view_student_class as select student.id,student.name,class.name,class.teacher from class inner join student on class.id = student.class_id;#为学生创建视图
    desc view_student_class;
    select * from view_student_class;
    

查看视图

  • DESCRIBE | DESC view_name
  • SHOW TABLES;
    • 从MySQL5.1开始,show tables 开始显示视图名字
  • SHOW CREATE VIEW/TABLE view_name;
    • 查看视图创建信息

更新视图数据

  • 通过 INSERT、UPDATE、DELETE来实现

  • use school;
    alter table student add privacy varchar(64);
    create view view_student as select id,class_id,name from student;
    desc view_student;
    select * from view_student;
    update view_student set name='小花花'where name ='小花';#改名
    
  • 不能更新的情况

      • 视图中包含 **SUM(), COUNT(), MAX()和 MIN()**等函数
      • 视图中包含UNION, UNION ALL, DISTINCE, GROUP BY 和 HAVING
      • 视图对应的表存在没有默认值的列,而且该列没有包含在视图里
      • 包含子查询的视图
      • 其他特殊视图

修改视图

修改视图是指修改数据库中存在的视图,当基本表的某些字段发生变化的时候,可以通过修改视图来保持与基本表的一致性ALTER语句来修改视图

ALTER VIEW viewname[columnlist]
	AS SELECT statement
  • 对于视图view_student_class,需要增加表示编号的字段id

    ALTER VIEW view_student_class as select student.id, student.name, class.name, class.id as class_id,class.teacher from class inner join student on class.id= student.class_id;
    desc view_student_class;
    select * from view_student_class;
    

删除视图

在MySQL中,使用DROP VIEW 来删除视图,但用户必须有 DROP全权限

DROP VIEW viewname[,viewnamen];
#可以一次性删除多个
drop view view_student_class;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值