搜尋
首頁資料庫mysql教程一文詳解mysql視圖
一文詳解mysql視圖Jan 22, 2020 pm 07:56 PM
mysql視圖

一文詳解mysql視圖

mysql檢視概念

檢視本身就是一張虛擬表,不存放任何資料。在使用SQL語句存取視圖的時候,所取得的資料是MySQL從其它表中產生的,而視圖和表在同一個命名空間。視圖查詢資料相對安全,可以隱藏一些資料和結構,只讓使用者看見權限內的數據,使複雜的查詢易於理解和使用。

檢視用法

如下基於使用者和訂單管理示範檢視的基本用法。 (線上學習影片教學分享:mysql影片教學

基礎表結構

CREATE TABLE v01_user (    
id INT(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  user_name VARCHAR(20) DEFAULT NULL COMMENT '用户名',
    phone VARCHAR(20) DEFAULT NULL COMMENT '手机号',
    pass_word VARCHAR(64) DEFAULT NULL COMMENT '密码',
    card_id VARCHAR(18) DEFAULT NULL COMMENT '身份证ID',
    pay_card VARCHAR(25) DEFAULT NULL COMMENT '卡号',
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '用户表';
CREATE TABLE v02_order (    
id INT(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    user_id INT(11) NOT NULL COMMENT '用户ID',
    order_no VARCHAR(32) DEFAULT NULL COMMENT '订单编号',
    good_name VARCHAR(60) DEFAULT NULL COMMENT '商品名称',
    good_id INT(11) DEFAULT NULL COMMENT '商品ID',    
    num INT(11) DEFAULT NULL COMMENT '购买数量',
    total_price DECIMAL(10,2) DEFAULT NULL COMMENT '总价格',
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '订单表';

基本語法

CREATE OR REPLACE VIEW view_name 
AS select_statement

注意事項:表格和檢視共用資料庫中相同的名稱空間,因此,資料庫不能包含具有相同名稱的表格和檢視。

使用者訂單檢視

CREATE OR REPLACE VIEW user_order_view AS SELECT
    t1.id,t1.user_name,t2.order_no,t2.good_id,
    t2.good_name,t2.num,t2.total_price
FROM v01_user t1
LEFT JOIN v02_order t2 ON t2.user_id = t1.id;

檢視呼叫

這裡和MySQL的資料表查詢基本上一致,可以使用各種查詢條件。

SELECT * FROM user_order_view WHERE user_name='Cicada';
查看视图
SHOW CREATE VIEW user_order_view ;
修改视图
ALTER VIEW view_name AS select_statement ;
删除视图
DROP VIEW [IF EXISTS] view_name ;

視圖更新

在指定條件允許的情況下,可以透過在視圖上操作更新,刪除,甚至寫入數據,進而更新視圖所涉及的相關表。

UPDATE user_order_view SET user_name='smile' WHERE id='1';

這裡就透過對視圖執行更新操作,進而更新v01_user表資料。如果視圖定義時使用聚合函數,分組等特殊操作,則無法更新。 MySQL不支援在視圖上建立觸發器。

視圖實作

1、臨時表演算法

#伺服器會把視圖查詢SQL的資料保存在臨時表中,臨時表的結構和視圖字段結構一致,這樣是SQL查詢優化中最忌諱的操作,資料量稍微偏大,就會嚴重影響效能。如果視圖無法和原有表產生一對一的映射關係,就會產生臨時表,由此也可見視圖並不是很簡單,甚至是非常複雜的功能。

2、合併演算法

伺服器基於檢視中使用的資料表執行查詢,最後把查詢結構合併後傳回給客戶端。

3、區別方法

執行如下查詢語句,可以分析執行的效能參數。

EXPLAIN SELECT * FROM user_order_view ;

觀察查詢結果中select_type字段,如果是DERIVED則說明使用臨時表。這裡SQL執行分析的語法後面優化部分再詳解。

注意事項

1、效能問題

MySQL不支援在檢視中建立索引,使用檢視的時候可能會引發許多查詢效能問題,所以建議使用的時候要慎重,多角度檢視測試。

2、特殊用法

基於視圖的查詢,可以修改部分錶結構,只要不是在視圖中使用的字段,就不會影響視圖的查詢。

相關文章教學推薦:mysql教學

#

以上是一文詳解mysql視圖的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:博客园。如有侵權,請聯絡admin@php.cn刪除
图文详解mysql架构原理图文详解mysql架构原理May 17, 2022 pm 05:54 PM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

mysql怎么替换换行符mysql怎么替换换行符Apr 18, 2022 pm 03:14 PM

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

mysql的msi与zip版本有什么区别mysql的msi与zip版本有什么区别May 16, 2022 pm 04:33 PM

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

mysql怎么去掉第一个字符mysql怎么去掉第一个字符May 19, 2022 am 10:21 AM

方法:1、利用right函数,语法为“update 表名 set 指定字段 = right(指定字段, length(指定字段)-1)...”;2、利用substring函数,语法为“select substring(指定字段,2)..”。

mysql怎么将varchar转换为int类型mysql怎么将varchar转换为int类型May 12, 2022 pm 04:51 PM

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

MySQL复制技术之异步复制和半同步复制MySQL复制技术之异步复制和半同步复制Apr 25, 2022 pm 07:21 PM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

带你把MySQL索引吃透了带你把MySQL索引吃透了Apr 22, 2022 am 11:48 AM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了mysql高级篇的一些问题,包括了索引是什么、索引底层实现等等问题,下面一起来看一下,希望对大家有帮助。

mysql怎么判断是否是数字类型mysql怎么判断是否是数字类型May 16, 2022 am 10:09 AM

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境