视图

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

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

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

  • 创建视图

语法:

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';

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

SQL语法整理(五)-视图相关推荐

  1. 【SQL语法基础】视图在SQL中的作用是什么,它是怎样工作的?

    我们之前对 SQL 中的数据表查询进行了讲解,今天我们来看下如何对视图进行查询.视图,也就是我们今天要讲的虚拟表,本身是不具有数据的,它是 SQL 中的一个重要概念.从下面这张图中,你能看到,虚拟表的 ...

  2. SQL语法(五) 多表联合查询

    前言 当需要获取的数据分布在多张中,考虑使用联合查询,本章将学习两种查询方式(sql92/sql99) 范例 1.笛卡儿积 将多个表的数据进行一一对应,所得到结果为多表的笛卡尔积.结果的数量为所有表的 ...

  3. SQL语法精讲(包括建库、建表、建视图、查询、增加、删除、修改)

    SQL语法精讲(包括建库.建表.建视图.查询.增加.删除.修改) SQL分类: DDL-数据定义语言(CREATE,ALTER,DROP,DECLARE) DML-数据操纵语言(SELECT,DELE ...

  4. oracle stdevp函数,ORACLE和SQL语法区别归纳整理.doc

    ORACLE和SQL语法区别归纳整理 一.数据类型比较⑴.字符数据类型?? CHAR?? CHAR?? 都是固定长度字符资料但oracle里面最大度为2kb,SQLServer里面最大长度为8kb变长 ...

  5. mysql数据库迁移到瀚高数据库,包含数据迁移、sql语法、服务启动、部署、tomcat问题整理

    文章目录 1.数据库迁移 2.数据库设置主键自增 2.1 数据库字段问题 2.2 存在即更新 2.3 清空数据表 2.4 瀚高数据库查询过程中显示转换 2.5 mybatis插入一条数据返回自增的主键 ...

  6. 【ASP.NET MVC4】第五课:视图技术、输出辅助方法、Razor视图引擎、Razor语法、分部视图

    知识点:视图概述.Razor视图引擎.Razor语法.分部视图的使用 1.视图概述 ASP.NET MVC 中视图的作用就是向用户提供界面.视图在得到模型(数据)后,将模型转换成为准备提供给用户的格式 ...

  7. SQL 语法速成手册

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:静默虚空 排版:MarkerHub 原文:https://j ...

  8. 语法手册_是真的猛!SQL 语法速成手册

    小Hub领读: 整理非常全面,原谅我书读得少,只能用一句卧槽来赞美了! 太赞了,SpringBoot+Vue前后端分离完整入门教程!​mp.weixin.qq.com 作者:静默虚空 原文:https ...

  9. 数据库:SQL 语法速成手册,建议新手收藏!

    本文针对关系型数据库的一般语法.限于篇幅,本文侧重说明用法,不会展开讲解特性.原理. 一.基本概念 数据库术语 数据库(database) - 保存有组织的数据的容器(通常是一个文件或一组文件). 数 ...

  10. openGauss5 企业版之SQL语法和数据结构

    文章目录 1.openGauss SQL 语法 2. 数据类型 2.1数值类型 2.2 布尔类型 2.3 字符类型 2.4 二进制类型 2.5日期/时间类型 2.6 几何类型 2.7 网络地址类型 2 ...

最新文章

  1. HMM学习最佳范例三:隐藏模式
  2. 一篇网易获奖的产品分析来敲门:『有道云笔记』产品体验报告
  3. Protobuf序列化的原理-总结
  4. 华为交换机初始化_华为交换机恢复出厂设置
  5. java程序 计算器_简单计算器(java)
  6. windows下为eclipse配置pydev
  7. vue项目text-overflow:ellipsis;在生产环境上不显示...的问题
  8. QUAR_CH_USB2TTL V1 USB转4路UART串口侦听板设计日志1
  9. nginx代理百度地图,实现内网展示百度地图
  10. 马云将成全球第11大富豪,很好奇第一位是谁?
  11. DAP数据加工流程梳理
  12. 蓝天保卫战之产品测试服务
  13. spring cloud 实现服务不间断
  14. RabbitMQ 网页端控制台开启方式
  15. 一个应届生拿字节跳动offer的努力,整整用了一年的时间
  16. css表格nth左对齐,使用CSS nth-child选择单个表格单元格
  17. [Pytorch系列-30]:神经网络基础 - torch.nn库五大基本功能:nn.Parameter、nn.Linear、nn.functioinal、nn.Module、nn.Sequentia
  18. 智能家居解决方案-HouseKeeperV1.0 [管家V1]
  19. python读取超大csv文件_python – 读取一个巨大的.csv文件
  20. 【CSAPP:3e 深入理解计算机系统】课堂笔记 Computer Systems from a Programmer’s Perspective

热门文章

  1. 如何写简历,Web前端简历
  2. Nginx主配置文件的优化-nginx主配置文件的优化
  3. windows 10字体突然变小变细,模糊
  4. word文件批量转换为txt文档
  5. ArcPy常用类介绍
  6. Java常用设计模式及应用场景介绍
  7. 软考论文写作攻略,让你轻松拿高分!
  8. 通过抓包工具抓包APP就连不上网的解决方案
  9. (转发)详解汽车UDS诊断协议(二)
  10. HQChart使用教程92-如何创建分笔明细表