SQL语法整理(五)-视图

2023-05-16

视图

含义:从数据库一个或多个表中导出的虚拟表
作用:
方便用户操作: 要求所见即所需,无需添加额外的查询条件,直接查看

增加数据的安全性:通过视图,用户只能查看或修改指定的数据

提高表的独立逻辑性:原有数据表结构的变化,不会影响视图,如果修改原有列,则只需修改视图即可。

  • 创建视图

语法:

MYSQL
create
[algorithm = {undefined | merge | temptable}]
view 视图名[{属性清单}]
as select 语句
[with [cascaded|local] check option];
algorithm:选择的算法
with check option:表示更新视图时要保证在该视图的权限范围之内

undfined:表示MySQL 自动选择所需使用的算法
merge:表示将视图的语句与视图的定义合并,使得视图定义的某一部分取代语句的对应部分
temptable:将视图的结果存入临时表

cascaded:表示更新视图时要满足所有相关视图和表的条件
local:表示更新视图时,要满足该视图本身的定义的条件即可

Mssql
create
view 视图名 as select 语句;

是否有权限创建?(mysql)
通过SQL 查询:
select select_priv,create_view_priv from mysql.user where user = ‘root’;

创建视图

在单表上创建视图:

eg:
create view department_view1 as select * from department;
create view department_view2(name) as select d_name from department;

在多表上创建视图

create algorithm = merge view
employee_view1(name,department,sex,age,address)
as  select name,dept.d_name,sex,age,address
from employee emp inner join department dept on emp.e_no = dept.e_no
with local check option;

查看视图(mysql)

desc 查看

eg: 
desc department_view1;

查看视图 (mssql)

sp_helptext查看

eg: 
exec sp_helptext department_view1;

在sysobjects表中查看(状态)

eg: 
select * from sysobjects where name = 'enployee_view1'

查看视图(Oracle)
在user_views 表中查看(定义)

eg: 
select view_name,text from user_views where view_name = upper('vm_employee');

修改视图

通过create or replace view 修改(mysql)
没有则创建,有则修改

eg: 
create or replace algorithm = temptable
view department_view1(department)
as select d_name from department;

通过alter 修改
只能修改不能创建

eg: 
alter view department_view2(department) 
as select d_name
from department dept
with check option;
  • 更新视图
eg: 
update department_view3 set name ='研发部'

注:更新视图实际上是更新表;并非所有的视图都能更新;

视图不能更新情况:
视图中包含聚合函数

eg: 
create view employee_view4(name) 
as select name,sex,count(name) from employee;

视图中包含union、union all、distinct、group by和having等关键字

eg: 
create view employee_view5(name,sex,address)
as select name,sex,address from employee group by e_np;

常量视图

eg:
 create view employee_view6
as select 'Boyce' as name;

视图中的select 中包含子查询

eg: 
create view employee_view7(name) 
as select (select name from employee);

由不可更新的视图导出的视图(mysql)

eg: 
create view employee_view8
as select * from employee_view7;

创建视图时,algorithm 为temptable 类型(mysql)

eg: 
create algorithm = temptable
view employee_view9
as select * from employee;

视图对应的表上存在没有默认值的列,而且该列没有包含在视图里。[最好视图仅限于查询,若要更新则要考虑全面,否则会造成更新失败]

  • 删除视图

语法:
drop view [if exists] 视图列表

eg: 
drop view if exists employee_view1;
drop view if exists department_view1,department_view2;

判断用户是否有权限:

eg: 
select drop_priv from mysql.user where user = 'root';

---------------------如有错误欢迎指证-------------------------------

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL语法整理(五)-视图 的相关文章

  • ALTER TABLE 语句与 FOREIGN KEY 约束冲突

    为什么要添加外键tblDomare表导致此错误 ALTER TABLE 语句与 FOREIGN KEY 约束 FK tblDomare PersN 5F7E2DAC 冲突 冲突发生在数据库 almu0004 表 dbo tblBana 列
  • SQL:如何从一个表中获取另一个表中每一行的随机行数

    我有两个数据不相关的表 对于表 A 中的每一行 我想要例如表 B 中的 3 个随机行 使用光标这相当容易 但速度非常慢 那么我该如何用单个语句来表达这一点以避免 RBAR 呢 要获得 0 到 N 1 之间的随机数 可以使用 abs chec
  • SQL Server 查询中 UNION ALL 与 OR 条件

    我必须根据表上不存在的条件选择一些行 如果我使用如下的 union all 它会在不到 1 秒的时间内执行 SELECT 1 FROM dummyTable WHERE NOT EXISTS SELECT 1 FROM TABLE t WH
  • 无法与重定向器建立连接。确保“sql browser”服务正在运行

    所以我尝试这个 sql server 2012 由于这个错误我无法打开任何 ssis 包 无法与重定向器建立连接 确保 sql browser 服务正在运行 我的 Sql 浏览器肯定正在运行 我尝试在本地服务 本地系统和网络下更改它 仍然没
  • SQL Server 中的 FIFO 查询

    我正在构建一个库存管理应用程序c with SQL server 我想做一个FIFO从我的表查询 我以可变价格购买了相同的产品 之后我卖掉了其中一些 我想根据 先进先出 进行查询BatchDate柱子 所以我想通过PurchasePrice
  • 计算2个日期之间每个日期的记录数

    我必须创建一个查询来返回多轴图表的结果 我需要计算为 2 个日期之间的每个日期创建的 ID 数量 我试过这个 DECLARE StartDate datetime2 7 11 1 2020 EndDate datetime2 7 2 22
  • 针对约 225 万行的单表选择查询的优化技术?

    我有一个在 InnoDB 引擎上运行的 MySQL 表 名为squares大约有 2 250 000 行 表结构如下 squares square id int 7 unsigned NOT NULL ref coord lat doubl
  • 使用用户定义函数 MySql 时出错

    您好 请帮我解决这个问题 提前致谢 我在数据库中定义了这些函数 CREATE FUNCTION levenshtein s1 VARCHAR 255 s2 VARCHAR 255 RETURNS INT DETERMINISTIC BEGI
  • 在 plpgsql 函数中使用 quote_ident()

    我是创建 plpgsql 函数的新手 我需要一些有关在函数内部执行的动态命令上使用 quote ident 甚至 quote literal 的说明 希望有人能给我一个关于它们如何在函数内部工作的具体解释 TIA 这是一个例子 EXECUT
  • 使用函数的 SQL 查询 - 如何获取列表的最大计数

    如何查询 MAXIMUM COUNT 交易次数 我的代码如下 SELECT customer id COUNT customer id FROM rental GROUP BY customer id HAVING MAX COUNT cu
  • Oracle REGEXP_INSTR() 和“a-z”字符范围与预期不匹配

    我想用REGEXP INSTR 在 oracle 数据库中检查小写 大写字符 我知道 upper and lower POSIX 字符类 但我选择了a z这给了我非常奇怪的结果 我不明白 有人可以解释一下吗 SELECT REGEXP IN
  • 为什么 ISNUMERIC('.') 返回 1?

    最近我在 SQL Server 中使用 ISNUMERIC 时遇到了一个问题 导致找到了这段代码 SELECT ISNUMERIC 这会返回 1 如 true 所示 难道不应该像 false 一样返回 0 吗 See Numeric 损坏了
  • 根据数据框中的内容从SQL Server删除行

    我在 SQL Server 中有一个名为的库存表dbo inventory其中包含Year Month Material and Stock quantity 我每天都会收到 csv 文件形式的新库存计数 需要将其加载到dbo invent
  • 处理ON INSERT触发器时,innodb表如何锁定?

    我有两个 innodb 表 articles id title sum votes 1 art 1 5 2 art 2 8 3 art 3 35 votes id article id vote 1 1 1 2 1 2 3 1 2 4 2
  • 仅选择 Varchar 列中的数字[重复]

    这个问题在这里已经有答案了 在 SQL Server 2008 R2 中 我在 varchar 12 列中有一些数据 它看起来像这样 Data 1234 1765 34566 123 SDRMH HJG434 我想从所有包含 的行中删除 并
  • 重建数据库中的所有索引

    我有一个非常大的 SQL Server 2008 R2 数据库 1 5TB 并将在同一个表中的列之间复制一些数据 我被告知该架构有大量索引 并且想知道是否有默认查询或脚本可以重建所有索引 是否也被建议同时更新统计数据 30 个表中的每一个都
  • 限制分页页数

    objConnect mysql connect localhost root or die mysql error objDB mysql select db Test strSQL SELECT FROM UserAddedRecord
  • 使用 SQL 完全复制 postgres 表

    免责声明 这个问题和栈溢出问题类似here https stackoverflow com questions 198141 copy a table including indexes in postgres 但这些答案都不适用于我的问题
  • 如何在审计触发器中使用system_user但仍使用连接池?

    我想做以下两件事 在我的数据库表上使用审计触发器来识别哪个用户更新了什么 使用连接池来提高性能 对于 1 我在数据库触发器中使用 system user 来识别进行更改的用户 但这阻止我执行需要通用连接字符串的 2 有没有一种方法可以让我充
  • Oracle SQL-根据记录的日期与历史记录标记记录

    这是我在论坛上的第一篇文章 通常我能够找到我需要的东西 但说实话 我不太确定如何针对该问题提出正确的问题 因此 如果论坛上已经有答案而我错过了 请接受我的歉意 我通过 Benthic Software 在 Oracle 数据库中运行以下代码

随机推荐

  • Angular8+ 拼装路由地址及使用paramMap或queryParamMap获取url参数

    angular8 拼装路由地址及获取url参数 我们常见的 url格式都是这样的 http localhost 4200 todo search name 61 111 amp type 61 222 通过 angular 路由我们可以看到
  • MySQL启动失败PID文件相关问题排查

    目录 问题原因 问题一 xff1a 端口被占用 问题二 xff1a 生成pid文件的目录mysql的权限不足 问题三 xff1a 该mysql对应的my cnf配置文件错误 问题四 xff1a mysql的启动脚本有问题 问题五 xff1a
  • Tomcat远程监控probe项目部署,以ubuntu为例,windows类似(psi-probe部署)

    本文章仅供大家参考学习 xff0c 禁止任何非法目的的使用 步骤如下 xff1a 1 下载messages zh CN properties和probe 2 3 3 zip 2 将文件中的probe war和messages zh CN p
  • qt 配置opencv(win10) 出现问题error: undefined reference to `cv::namedWindow(cv::String const&, int)‘

    qt配置opencv出现问题 应该是能打开头文件 xff0c 但是找不到lib文件 找到的解决方法 xff1a https blog 51cto com xiaohaiwa 5378491 编译好的opencv要下载的网址 xff1a ht
  • ubuntu20.04server安装桌面环境以后网络管理接管

    ubuntu20 04server安装桌面环境以后使用network manager接管netplan 桌面环境安装好以后 xff0c 进入桌面右上角无网络图标 xff0c 查看network manger已经安装 xff0c 只需要进入
  • Windows自动更新变成灰色不能修改设置的问题

    自动更新变成灰色造成不能修改设置的问题 xff0c 通常情况下可能是中了木马 xff0c 有一个快速有效地解决方法 xff1a 1 win 43 r xff0c 打开运行 xff0c 输入 regedit 命令 xff0c 执行 xff1b
  • 网络基础知识:10M、50M、100M宽带下载速率一般是多少?—Vecloud微云

    经常与网络打交道的IT男 xff0c 经常碰到朋友 客户会问怎么我们 xff0c 宽带明明是多少多少兆的 xff0c 怎么下载时且没有那么多呢等问题 网络时代 xff0c 基本每个家庭都装有宽带 xff0c 比如10M 50M 100M等等
  • 超五类和六类网线的区别—Vecloud

    目前 xff0c 在双绞线这个大家族里 xff0c 五类 超五类 六类 超六类这些种双绞线的应用范围最为广泛 xff0c 七类也紧随其后 xff0c 那么它们之间存在着那些区别呢 超五类和六类网线的区别 随着人们对更高带宽和更快速度网络的需
  • 广域网一般采用什么网络拓扑结构?—Vecloud

    计算机网络的拓扑结构是指网络设备的物理连接关系 网络的拓扑结构主要有总线网 环型网和星型网三种结构 xff0c 还有其他一些拓扑结构 xff0c 如 xff1a 混合拓扑结构 xff0c 分布式结构 网状拓扑结构 xff0c 树型结构 xf
  • 物理专线与虚拟专线的比较

    租用专用线路是连接两个或多个站点的专用通信渠道 它作为一个点到另一个点的专用隧道 xff0c 业务是固定的月租金 租赁线路用于互联网 数据甚至电话服务 他们通常在光缆上运行 xff0c 以提供更大的带宽和速度 物理学专线是指高速通道提供速安
  • 使用的是什么JDK和JAVA虚拟机?

    Oracle JDK之前被称为SUN JDK 2009年Oracle收购SUN公司之后命名为Oracle JDK Oracle JDK是基于OpenJDK源代码构建的 使用 java version 查看JDK的版本 OracleJDK 8
  • 云计算有哪些应用领域?

    云计算是基础设施 xff0c 基础设施是日常生活的一部分 xff0c 与人们的生活密切相关 现在云计算作为服务和生活的紧密结合 云计算应用之一 金融云 金融云是利用云计算的模型组成原理 xff0c 将金融产品 信息和服务分散到由大型分支机构
  • bash命令的使用方法

    小编给大家分享一下bash命令的使用方法 xff0c 相信大部分人都还不怎么了解 xff0c 因此分享这篇文章给大家参考一下 xff0c 希望大家阅读完这篇文章后大有收获 xff0c 下面让我们一起去了解一下吧 xff01 Bash xff
  • chmod命令详解

    chmod用于改变文件或目录的访问权限 用户用它控制文件或目录的访问权限 该命令有两种用法 一种是包含字母和操作符表达式的文字设定法 xff1b 另一种是包含数字的数字设定法 1 文字设定法 语法 xff1a chmod who 43 61
  • CDN视频存储解决方案

    一 方案背景 高清 超高清视频的蓬勃发展 xff0c 用户对高品质视频体验的渴望 xff0c 对网络的并发处理和内容平台的存储能力提出了更高的要求 作为产业链的重要一环 xff0c CDN xff08 内容分发网络 xff09 进入规范发展
  • vim中替换字符串的方法有哪些

    这篇文章为大家带来有关vim中替换字符串的方法介绍 xff0c 如果在日常学习或工作遇到这个问题 xff0c 希望大家通过这篇文章的几种方法解决替换字符串的问题 s str1 str2 g 替换每一行中所有str1为str2 常用 xff0
  • SSL连接中握手协议及握手过程

    SSL的主要目的是在两个通信应用程序之间提供私密信和可靠性 这个过程通过3个元素来完成 xff1a 1 握手协议 握手协议负责协商被用于客户机和服务器之间会话的加密参数 当一个SSL客户机和服务器第一次开始通信时 xff0c 它们在一个协议
  • SSL证书是什么?SSL运作方式?

    SSL证书创建加密连接并建立信任 在线业务最重要的组成部分之一是创建一个值得信赖的环境 xff0c 潜在客户对此充满信心 SSL证书通过建立安全连接来建立信任的基础 为了确保访问者的连接安全 xff0c 浏览器提供了特殊的视觉提示 xff0
  • 带宽叠加是什么意思?

    视频会议的清晰度 流畅性 xff0c 往往是用户最为看重的体验感 xff0c 而网络带宽速度如何 xff0c 直接影响到了视频会议的呈现效果 如何让企业级 政务级视频会议常用的局域网带宽更快 通常我们在企业网络或实际项目中 xff0c 随着
  • SQL语法整理(五)-视图

    视图 含义 xff1a 从数据库一个或多个表中导出的虚拟表 作用 xff1a 方便用户操作 要求所见即所需 xff0c 无需添加额外的查询条件 xff0c 直接查看 增加数据的安全性 xff1a 通过视图 xff0c 用户只能查看或修改指定