SQL语法整理(五)-视图
视图
含义:从数据库一个或多个表中导出的虚拟表
作用:
方便用户操作: 要求所见即所需,无需添加额外的查询条件,直接查看
增加数据的安全性:通过视图,用户只能查看或修改指定的数据
提高表的独立逻辑性:原有数据表结构的变化,不会影响视图,如果修改原有列,则只需修改视图即可。
- 创建视图
语法:
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语法整理(五)-视图相关推荐
- 【SQL语法基础】视图在SQL中的作用是什么,它是怎样工作的?
我们之前对 SQL 中的数据表查询进行了讲解,今天我们来看下如何对视图进行查询.视图,也就是我们今天要讲的虚拟表,本身是不具有数据的,它是 SQL 中的一个重要概念.从下面这张图中,你能看到,虚拟表的 ...
- SQL语法(五) 多表联合查询
前言 当需要获取的数据分布在多张中,考虑使用联合查询,本章将学习两种查询方式(sql92/sql99) 范例 1.笛卡儿积 将多个表的数据进行一一对应,所得到结果为多表的笛卡尔积.结果的数量为所有表的 ...
- SQL语法精讲(包括建库、建表、建视图、查询、增加、删除、修改)
SQL语法精讲(包括建库.建表.建视图.查询.增加.删除.修改) SQL分类: DDL-数据定义语言(CREATE,ALTER,DROP,DECLARE) DML-数据操纵语言(SELECT,DELE ...
- oracle stdevp函数,ORACLE和SQL语法区别归纳整理.doc
ORACLE和SQL语法区别归纳整理 一.数据类型比较⑴.字符数据类型?? CHAR?? CHAR?? 都是固定长度字符资料但oracle里面最大度为2kb,SQLServer里面最大长度为8kb变长 ...
- mysql数据库迁移到瀚高数据库,包含数据迁移、sql语法、服务启动、部署、tomcat问题整理
文章目录 1.数据库迁移 2.数据库设置主键自增 2.1 数据库字段问题 2.2 存在即更新 2.3 清空数据表 2.4 瀚高数据库查询过程中显示转换 2.5 mybatis插入一条数据返回自增的主键 ...
- 【ASP.NET MVC4】第五课:视图技术、输出辅助方法、Razor视图引擎、Razor语法、分部视图
知识点:视图概述.Razor视图引擎.Razor语法.分部视图的使用 1.视图概述 ASP.NET MVC 中视图的作用就是向用户提供界面.视图在得到模型(数据)后,将模型转换成为准备提供给用户的格式 ...
- SQL 语法速成手册
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:静默虚空 排版:MarkerHub 原文:https://j ...
- 语法手册_是真的猛!SQL 语法速成手册
小Hub领读: 整理非常全面,原谅我书读得少,只能用一句卧槽来赞美了! 太赞了,SpringBoot+Vue前后端分离完整入门教程!mp.weixin.qq.com 作者:静默虚空 原文:https ...
- 数据库:SQL 语法速成手册,建议新手收藏!
本文针对关系型数据库的一般语法.限于篇幅,本文侧重说明用法,不会展开讲解特性.原理. 一.基本概念 数据库术语 数据库(database) - 保存有组织的数据的容器(通常是一个文件或一组文件). 数 ...
- openGauss5 企业版之SQL语法和数据结构
文章目录 1.openGauss SQL 语法 2. 数据类型 2.1数值类型 2.2 布尔类型 2.3 字符类型 2.4 二进制类型 2.5日期/时间类型 2.6 几何类型 2.7 网络地址类型 2 ...
最新文章
- HMM学习最佳范例三:隐藏模式
- 一篇网易获奖的产品分析来敲门:『有道云笔记』产品体验报告
- Protobuf序列化的原理-总结
- 华为交换机初始化_华为交换机恢复出厂设置
- java程序 计算器_简单计算器(java)
- windows下为eclipse配置pydev
- vue项目text-overflow:ellipsis;在生产环境上不显示...的问题
- QUAR_CH_USB2TTL V1 USB转4路UART串口侦听板设计日志1
- nginx代理百度地图,实现内网展示百度地图
- 马云将成全球第11大富豪,很好奇第一位是谁?
- DAP数据加工流程梳理
- 蓝天保卫战之产品测试服务
- spring cloud 实现服务不间断
- RabbitMQ 网页端控制台开启方式
- 一个应届生拿字节跳动offer的努力,整整用了一年的时间
- css表格nth左对齐,使用CSS nth-child选择单个表格单元格
- [Pytorch系列-30]:神经网络基础 - torch.nn库五大基本功能:nn.Parameter、nn.Linear、nn.functioinal、nn.Module、nn.Sequentia
- 智能家居解决方案-HouseKeeperV1.0 [管家V1]
- python读取超大csv文件_python – 读取一个巨大的.csv文件
- 【CSAPP:3e 深入理解计算机系统】课堂笔记 Computer Systems from a Programmer’s Perspective