目次
view视图
一、视图定义
二、创建视图
三、视图与表的关系

小贝_mysqlview视图学习_MySQL

Jun 01, 2016 pm 12:59 PM
ビュー

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进行分组

\

 

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

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Vue で編集可能なテーブルを実装する方法 Vue で編集可能なテーブルを実装する方法 Nov 08, 2023 pm 12:51 PM

テーブルは、多くの Web アプリケーションにおいて不可欠なコンポーネントです。通常、テーブルには大量のデータが含まれるため、ユーザー エクスペリエンスを向上させるためにテーブルにはいくつかの特定の機能が必要です。重要な機能の 1 つは編集可能性です。この記事では、Vue.js を使用して編集可能なテーブルを実装する方法を検討し、具体的なコード例を示します。ステップ 1: データを準備する まず、テーブルのデータを準備する必要があります。 JSON オブジェクトを使用してテーブルのデータを保存し、それを Vue インスタンスの data プロパティに保存できます。この場合

iOS 17のスタンバイモードは充電中のiPhoneをホームハブに変える iOS 17のスタンバイモードは充電中のiPhoneをホームハブに変える Jun 06, 2023 am 08:20 AM

iOS 17 で Apple は、iPhone を水平方向に充電するために設計された新しいディスプレイ エクスペリエンスであるスタンバイ モードを導入します。この位置では、iPhone は一連の全画面ウィジェットを表示でき、便利なホームハブになります。 iOS 17 を実行している iPhone を充電器に水平に置くと、スタンバイ モードが自動的に有効になります。時間、天気、カレンダー、音楽コントロール、写真などを表示できます。左または右にスワイプして利用可能なスタンバイ オプションを選択し、長押しするか上下にスワイプしてカスタマイズできます。たとえば、アナログ ビュー、デジタル ビュー、バブル フォント、および時間の経過とともに背景色が時間に基づいて変化するデイライト ビューから選択できます。いくつかのオプションがあります

SpringBoot と SpringMVC の違いと比較を理解する SpringBoot と SpringMVC の違いと比較を理解する Dec 29, 2023 am 09:20 AM

SpringBoot と SpringMVC を比較し、その違いを理解する Java 開発の継続的な発展に伴い、Spring フレームワークは多くの開発者や企業にとって最初の選択肢となっています。 Spring エコシステムでは、SpringBoot と SpringMVC の 2 つの非常に重要なコンポーネントです。どちらも Spring フレームワークをベースにしていますが、機能や使用方法にいくつかの違いがあります。この記事では、SpringBoot と Spring の比較に焦点を当てます。

PHPでCodeIgniter4フレームワークを使用するにはどうすればよいですか? PHPでCodeIgniter4フレームワークを使用するにはどうすればよいですか? May 31, 2023 pm 02:51 PM

PHP は非常に人気のあるプログラミング言語であり、CodeIgniter4 は一般的に使用される PHP フレームワークです。 Web アプリケーションを開発する場合、フレームワークを使用すると、開発プロセスのスピードアップ、コードの品質の向上、メンテナンス コストの削減が可能になり、非常に役立ちます。この記事ではCodeIgniter4フレームワークの使い方を紹介します。 CodeIgniter4 フレームワークのインストール CodeIgniter4 フレームワークは、公式 Web サイト (https://codeigniter.com/) からダウンロードできます。下

Laravel 開発: Laravel View を使用してビューを生成するには? Laravel 開発: Laravel View を使用してビューを生成するには? Jun 14, 2023 pm 03:28 PM

Laravel は現在最も人気のある PHP フレームワークの 1 つであり、その強力なビュー生成機能は印象的です。ビューは、Web アプリケーションでユーザーに表示されるページまたは視覚要素であり、HTML、CSS、JavaScript などのコードが含まれています。 LaravelView を使用すると、開発者は構造化テンプレート言語を使用して Web ページを構築し、コントローラーとルーティングを通じて対応するビューを生成できます。この記事では、LaravelView を使用してビューを生成する方法を説明します。 1. 何を

Word ではどのようなビューが表示されますか? Word ではどのようなビューが表示されますか? Mar 19, 2024 pm 06:10 PM

Word の組版スキルを学びたい学生は多いと思いますが、編集者は、組版スキルを学ぶ前に Word のビューをしっかり理解する必要があるとこっそり教えてくれます。Word2007 では、ユーザーが選択できる 5 つのビューが用意されています。ビューにはページが含まれます。ビュー、読書レイアウト ビュー、Web レイアウト ビュー、アウトライン ビュー、および通常ビュー、今日はエディターでこれら 5 つの単語ビューについて学びましょう。 1. ページ ビュー ページ ビューは、主にヘッダー、フッター、グラフィック オブジェクト、段組み設定、ページ余白などの要素を含む Word2007 文書の印刷結果の外観を表示することができ、印刷結果に最も近いページ ビューです。 2. 読書レイアウト ビュー 読書レイアウト ビューでは、本の段組みスタイルで Word2007 ドキュメントと Office が表示されます。

Django フレームワークのビューの詳細な説明 Django フレームワークのビューの詳細な説明 Jun 17, 2023 am 10:18 AM

Django は高度にカスタマイズ可能な Web フレームワークであり、開発者が高性能でスケーラブルな Web アプリケーションを迅速に作成できるようにする多くの便利なツールとライブラリを提供します。その中でも、ビューは Django フレームワークの最も重要なコンポーネントの 1 つです。ビューは、クライアントからのリクエストを処理し、対応する応答を返す責任があります。この記事では、Django フレームワークのビューを詳しく説明し、それを使用して高パフォーマンスでカスタマイズ可能な Web アプリケーションを作成する方法を説明します。 1. Django のビューの基本概念

MicrosoftがVisual Studio Code 1.80をアップデート MicrosoftがVisual Studio Code 1.80をアップデート Jul 10, 2023 pm 08:13 PM

Microsoft は最近 Visual Studio Code 1.80 をリリースしました。この更新プログラムは 7 月にリリースされましたが、公式はまだこれを 6 月の更新プログラムと呼んでいます。このアップデートをインストールすると、内蔵端末に画像を直接表示できるようになり、補助機能も最適化されました。以前にリリースされた Visual Studio Code のプレビュー バージョンでは、ターミナル内の画像のサポートがサポートされており、新しい 1.80 バージョンではデフォルトで有効になっています。端末で画像を表示できるようにするために、画像のピクセル データは特別なエスケープ シーケンスを通じてテキストに変換され、最終的に端末に書き込まれます。一般的な PNG、GIF、または JPEG ファイルをターミナルにパイプする場合は、imgcatpython パッケージをインストールしてから、ターミナルで imgc を実行する必要があります。

See all articles