当前位置: 首页 > news >正文

SQL - 视图

  • 我们可以把查询或子查询存到视图里,视图的作用就像一张虚拟表,再次查询时,就不需要再写一次复杂的查询。
  • 创建视图
    • create view 视图名 as (查询);
    • create or replace view clients_balance as (查询);
    • create or replace view clients_balance as
      select client_id,name,sum(invoice_total-payment_total) as balance
      from clients
      join invoices using (client_id)
      group by client_id;
  • 更改视图
    • 1.删除并重建
      • drop view sales_by_client
      • create view sales_by_client as (查询);
  • 2.使用 replace 关键字
    • replace view clients_balance as (查询)
  • 可更新视图
    • 如果视图 不含 distinct、聚合函数、group by、having、union,该视图就是可更新视图,不仅支持select,还支持insert、update、delete操作,可以更新数据。
    • -- create or replace view invoices_balance as	-- 创建可更新视图
      -- select invoice_id,number,client_id,invoice_total,
      -- payment_total,
      -- invoice_total-payment_total as balance,
      -- invoice_date,
      -- due_date,
      -- payment_date
      -- from invoices
      -- where (invoice_total-payment_total)>0
      -- with check option; -- 确定 update 或 insert 语句符合视图的定义条件,否则行会从视图中删除delete
      from invoices_balance
      where invoice_id = 1;update invoices_balance
      set due_date=date_add(due_date,interval 2 day)
      where invoice_id =2;update invoices_balance
      set payment_total=invoice_total
      where invoice_id=2;-- 关于 insert,可更新视图必须包含基本表中的所有必需列,才能插入成功
  • 视图的优点
    • 1.视图可以简化你的查询
    • 2.视图可以减小数据库设计改动的影响
    • 3.使用视图限制基础表访问,增强数据安全性
http://www.lryc.cn/news/428510.html

相关文章:

  • centos7环境升级默认的gcc 4.8.5到gcc 8.2.0, 并且升级glibc到glibc 2.28
  • FastHTML:使用 Python 彻底改变 Web 开发
  • 快速排序的深入优化探讨
  • c语言杂谈系列:模拟虚函数
  • 短视频推广App不再难!Xinstall来帮忙
  • 打靶记录13——doubletrouble
  • awk文本处理工具
  • 计算机毕业设计选题推荐-学院网站系统-Java/Python项目实战
  • Spring模块详解Ⅰ
  • C语言程序设计-练习篇
  • 【Oracle篇】统计信息和动态采样的深度剖析(第一篇,总共六篇)
  • 无源互调自动化测试软件应用案例分享:S参数和互调的高效测试
  • 【6大设计原则】精通设计模式之里氏代换原则:从理论到实践,掌握代码演化的黄金法则
  • 国内服务器安装Docker提示Failed to connect to download.docker.com port 443的解决方案
  • 前端开发攻略---彻底弄懂跨域解决方案
  • 【HeadFirst 设计模式】装饰者模式的C++实现
  • 大白话解释TCP的三次握手和四次挥手
  • asyncua模块实现OPC UA通讯
  • RabbitMQ的核心概念
  • 【vSphere 7/8】深入浅出 vSphere 证书 Ⅰ—— 初识和了解 vSphere证书
  • 【云备份】服务端模块-热点管理
  • call apply bind特性及手动实现
  • pygame开发课程系列(5): 游戏逻辑
  • 嵌入式系统实时任务调度算法优化与实现
  • Java:枚举转换
  • Vue、react父子组件生命周期
  • HTML 基础要素解析
  • 开源的向量数据库Milvus
  • 设计模式-工厂方法
  • Flask SQLALchemy 的使用