博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL -- 使用视图
阅读量:4205 次
发布时间:2019-05-26

本文共 906 字,大约阅读时间需要 3 分钟。

使用视图

视图就是一张虚拟的表,他是select语句执行的结果集。视图只能用于查询,不能用于增删改

在应用和数据库之间,比如当我们要更改底层表结构的时候,上层应用的执行sql语句也必须得更改,所以我们创建视图,通过视图指向数据库,应用指向试图,所以我们是不用去更改上层应用的SQL语句的。

为什么使用视图

  • 重用SQL语句。
  • 重构数据库时不影响程序的运行
  • 简化复杂的SQL操作。在编写查询后,可以方便地重用它而不必知道它的基本查询细节。
  • 使用表的组成部分而不是整个表。
  • 保护数据。可以给用户授予表的特定部分的访问权限而不是整个表的访问权限。
  • 更改数据格式和表示。视图可返回与底层表的表示和格式不同的数据。

视图的规则和限制

  • 与表一样,视图必须唯一命名(不能给视图取与别的视图或表相同的名字)。
  • 对于可以创建的视图数目没有限制。
  • 为了创建视图,必须具有足够的访问权限。这些限制通常由数据库管理人员授予。
  • 视图可以嵌套,即可以利用从其他视图中检索数据的查询来构造一个视图。
  • ORDER BY可以用在视图中,但如果从该视图检索数据SELECT中也含有ORDER BY,那么该视图中的ORDER BY将被覆盖。
  • 视图不能索引,也不能有关联的触发器或默认值。
  • 视图可以和表一起使用。例如,编写一条联结表和视图的SELECT语句。

使用视图

  • 视图用CREATE VIEW语句来创建。
  • 使用SHOW CREATE VIEW viewname;来查看创建视图的语句。
  • 可以通过show tables;查看视图
  • 用DROP删除视图,其语法为DROP VIEW viewname;。
  • 更新视图时,可以先用DROP再用CREATE,也可以直接用CREATE ORREPLACE VIEW。

在这里插入图片描述

这个查询语句我们如何通过视图完成:

  1. 创建视图
    在这里插入图片描述
  2. 检索订购了产品TNT2的客户:
    在这里插入图片描述
    执行结果是相同的。通过WHERE子句从视图中检索特定数据。
    视图不是备份了一次,而是每次使用的时候就会执行as后面的select语句,是动态的

用视图重新格式化检索出的数据

在这里插入图片描述

在这里插入图片描述

用视图过滤不想要的数据

在这里插入图片描述

在这里插入图片描述

使用视图与计算字段

在这里插入图片描述

在这里插入图片描述

视图也是可以更新的,但是不常用。主要用于检索数据。

转载地址:http://nyxli.baihongyu.com/

你可能感兴趣的文章
【Error】Emulator: emulator: ERROR: x86 emulation currently requires hardware acceleration!
查看>>
【Error】fatal: Unable to create '.../.git/index.lock':
查看>>
【Error】Another git process seems to be running in this repository, e.g.
查看>>
【Error】ImportError: cannot import name _remove_dead_weakref
查看>>
【macOS】SIP开启与关闭
查看>>
【Error】Voltron error: [Errno 48] Address already in use
查看>>
【macOS】macOS安装gdb 2018.12
查看>>
运营商进行网络劫持的前生今世+劫持的危害
查看>>
【Error】nginx编译时 ./configure error : C compiler gcc is not found
查看>>
ubuntu18.04 静态ip设置方法
查看>>
【Error】ubuntu 挂载分区时遇到错误 wrong fs type, bad option, bad superblock on /dev/sdb1
查看>>
【Error】vimplus安装报错 clang: error: linker command failed with exit code 1 (use -v to see invocation)
查看>>
【MISC】DNS over TLS vs DNS over HTTPS
查看>>
【Error】在docker中使用pip 报错 TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'
查看>>
【Error】记一个快速排除bug的思路 :ASan log中没符号
查看>>
【Error】虚拟机ping得通外网但是无法上网
查看>>
Python一行命令开启http server ipv4 & ipv6
查看>>
windows linux/macOS 查看文件被占用情况
查看>>
【macOS】mail.app 邮件客户端邮件无法接收:谷歌要求在Safari浏览器中完成鉴定
查看>>
【Error】git push hang writing objects
查看>>