search
HomeDatabaseMysql Tutorial小贝_mysqlview视图学习_MySQL

view视图

简要:
1、视图定义
2、创建视图
3、视图与表的关系
4、视图种类

一、视图定义

视图起因: 查询每个栏目最贵的商品=>

selectgoods_id,goods_name,shop_price from goods order by cat_id asc,shop_price desc; 查询结果,当成一张表看

如果某个查询结果出现的非常频繁,也就是说,拿这个结果进行子查询出现的非常频繁.

createtable g2 like goods;insert into g2 select ….

上面两句,是想保存一个查询结果到表里面,供其它查询用。

视图定义: 视图是由查询结果形成的一张虚拟表。

 

二、创建视图

mysql>CREATE TABLE t (qty INT, price INT);

mysql>INSERT INTO t VALUES(3, 50);

mysql>CREATE VIEW v AS SELECT qty, price, qty*price AS value FROM t;

mysql>SELECT * FROM v;

 

为什么需要视图?

a、简化查询语句

b、可以控制列权限

把表的权限封闭,但是开放相对应的视图权限。视图里只开放部分列部分数据

c、大数据分表时可以用视图把所分的表形成一张视图

 

三、视图与表的关系

测试时用到的表结构及数据

create table t

(id int primary keyauto_increment,

type tinyint unsigned,

name char(5) not nulldefault '',

money tinyint unsigned

)engine=myisamcharset=utf8;

insert intot(type,name,money) values(1,'1a',4),

(1,'1b',3),(2,'2a',3),(1,'1c',4),(2,'2b',5),(3,'3a',5);

问题1: 视图是表的查询结果,因此表的数据改变了,会影响视图的结果

\

\

修改原始表t的id为6的数据

\

查看视图:

 

\

问题2: 视图改变了呢?

情况一:视图的数据与表的数据一一对应,如上述例子中的表t与视图t_view1

1、修改视图t_view1的id为6的数据

 

\

查看原始表t

\

2、往视图t_view1插入数据

\

查看原始表t

\

3、删除视图t_view1id为7的数据

\

查看原始表t

\

情况2: 视图只是原始表的统计结果,并不与原始表数据一一对应

(备注: 创建统计t表相同type的money字段总和的视图)

\

试着修改下视图t_view2的数据

\

假设可以进行修改,那么type为1的money总和加上3后,怎么对应原始表各个type为1的数据。显然,这是没办法的。因此报错

从上面这两种情况,得到:

1、视图增删改也会影响表,但是,视图并不总能增删改

2、视图的数据与表的数据一一对应时,则可以

3、对于视图insert还应注意,视图必须包含表中没有默认值的列

四、视图的种类

4.1、查看视图创建语法

\

 

针对algorithm的用法:

a、undefined: 由系统默认

b、merge:当algorithm为此值时,创建的视图只是单纯的sql语句存在而不是以虚拟结果表的形式存在。但使用此视图时,创建视图的sql语句会与后面的sql语句进行优化,最后得到一条新的sql语句

以merge视图的方式,求得表t中type相同的money最大值

 

\

再对视图t_view3进行分组

\

显然,这个结果不是我们想要的结果。运行 上述sql语句等同于

\

 

这是因为merge不是以虚拟结果表存在,而仅仅是sql语句,因此会与后面的sql语句进行优化后,再进行执行。

c、temptable:会把视图当做虚拟结果表

以temptable视图的方式,求得表t中type相同的money最大值

\

再进行对type进行分组

\

 

从上面这两种情况,得到:

创建视图建议指定视图的类型为临时表

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
如何在Vue中实现可编辑的表格如何在Vue中实现可编辑的表格Nov 08, 2023 pm 12:51 PM

在许多Web应用程序中,表格是必不可少的一个组件。表格通常具有大量数据,因此表格需要一些特定的功能来提高用户体验。其中一个重要的功能是可编辑性。在本文中,我们将探讨如何使用Vue.js实现可编辑的表格,并提供具体的代码示例。步骤1:准备数据首先,我们需要为表格准备数据。我们可以使用JSON对象来存储表格的数据,并将其存储在Vue实例的data属性中。在本例中

iOS 17 的待机模式将正在充电的 iPhone 变成家庭集线器iOS 17 的待机模式将正在充电的 iPhone 变成家庭集线器Jun 06, 2023 am 08:20 AM

iOS17中的Apple正在引入待机模式,这是一种新的显示体验,专为水平方向的充电iPhone而设计。处于这个位置的iPhone能够显示一系列全屏小部件,将其变成一个有用的家庭中心。待机模式会在水平放置在充电器上运行iOS17的iPhone上自动激活。您可以查看时间、天气、日历、音乐控制、照片等信息。您可以通过可用的待机选项向左或向右滑动,然后长按或向上/向下滑动以进行自定义。例如,随着时间的流逝,您可以从模拟视图、数字视图、气泡字体和日光视图中进行选择,其中背景颜色会根据时间而变化。有一些选项

理解SpringBoot和SpringMVC之间的差异及比较理解SpringBoot和SpringMVC之间的差异及比较Dec 29, 2023 am 09:20 AM

对比SpringBoot与SpringMVC,了解它们的差异随着Java开发的不断发展,Spring框架已经成为了许多开发人员和企业的首选。在Spring的生态系统中,SpringBoot和SpringMVC是两个非常重要的组件。虽然它们都是基于Spring框架的,但在功能和使用方式上却有一些区别。本文将重点对比一下SpringBoot与Sprin

Laravel开发:如何使用Laravel View生成视图?Laravel开发:如何使用Laravel View生成视图?Jun 14, 2023 pm 03:28 PM

Laravel是目前最流行的PHP框架之一,其强大的视图生成能力是让人印象深刻的一点。视图是Web应用程序中展示给用户的页面或视觉元素,其中包含HTML、CSS和JavaScript等代码。LaravelView允许开发者使用结构化的模板语言来构建网页,同时通过控制器和路由生成相应的视图。在本文中,我们将探讨如何使用LaravelView生成视图。一、什

php如何使用CodeIgniter4框架?php如何使用CodeIgniter4框架?May 31, 2023 pm 02:51 PM

PHP是一种非常流行的编程语言,而CodeIgniter4是一种常用的PHP框架。在开发Web应用程序时,使用框架是非常有帮助的,它可以加速开发过程、提高代码质量、降低维护成本。本文将介绍如何使用CodeIgniter4框架。安装CodeIgniter4框架CodeIgniter4框架可以从官方网站(https://codeigniter.com/)下载。下

Word视图有哪几种Word视图有哪几种Mar 19, 2024 pm 06:10 PM

我猜想,很多同学都想学习word的排版技巧,但小编偷偷告诉大家,在学习排版技巧之前需要先了解清楚word视图,在Word2007中提供了5种视图供用户选择,这5种视图包括页面视图、阅读版式视图、Web版式视图、大纲视图和普通视图,今天和小编了解一下这5种word视图吧。1.页面视图页面视图可以显示Word2007文档的打印结果外观,主要包括页眉、页脚、图形对象、分栏设置、页面边距等元素,是最接近打印结果的页面视图。2.阅读版式视图阅读版式视图以图书的分栏样式显示Word2007文档,Office

Django框架中的视图详解Django框架中的视图详解Jun 17, 2023 am 10:18 AM

Django是一个高度可定制的Web框架,它提供了许多方便的工具和库,来帮助开发者快速创建高性能的、可扩展的Web应用程序。其中,视图是Django框架中最重要的组成部分之一。视图负责处理来自客户端的请求,并返回相应的响应。在本文中,我们将深入探讨Django框架中的视图,并介绍如何使用它来创建高性能、可定制的Web应用程序。一、视图的基本概念在Django

微软更新 Visual Studio Code 1.80微软更新 Visual Studio Code 1.80Jul 10, 2023 pm 08:13 PM

微软近日推出了VisualStudioCode1.80,虽然本次更新于7月发布,官方依然将其称之为6月更新。用户安装本次更新之后,内置终端可以直接显示图片,此外还优化了辅助功能。VisualStudioCode此前发布的预览版中,已支持在终端中支持图像,而在新的1.80版本中默认为启用状态。为了能够在终端中可以显示图像,图像像素数据再通过特殊的转义序列转换为文本,最终写入终端。如果要将典型的PNG,GIF或JPEG文件传递到终端,则需要安装imgcatpython软件包,然后在终端中运行imgc

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor