mysql視圖詳細筆記

来源:https://www.cnblogs.com/deyo/archive/2020/07/24/13371127.html
-Advertisement-
Play Games

1 #視圖 2 /* 3 含義:虛擬表,和普通表一樣使用 4 mysql5.1版本出現的新特性,是通過表動態生成的數據 5 6 比如:舞蹈班和普通班級的對比 7 創建語法的關鍵字 是否實際占用物理空間 使用 8 9 視圖 create view 只是保存了sql邏輯 增刪改查,只是一般不能增刪改 1 ...


  1 #視圖
  2 /*
  3 含義:虛擬表,和普通表一樣使用
  4 mysql5.1版本出現的新特性,是通過表動態生成的數據
  5 
  6 比如:舞蹈班和普通班級的對比
  7     創建語法的關鍵字    是否實際占用物理空間    使用
  8 
  9 視圖    create view        只是保存了sql邏輯    增刪改查,只是一般不能增刪改
 10 
 11 表    create table        保存了數據        增刪改查
 12 
 13 
 14 */
 15 
 16 #案例:查詢姓張的學生名和專業名
 17 SELECT stuname,majorname
 18 FROM stuinfo s
 19 INNER JOIN major m ON s.`majorid`= m.`id`
 20 WHERE s.`stuname` LIKE '張%';
 21 
 22 CREATE VIEW v1
 23 AS
 24 SELECT stuname,majorname
 25 FROM stuinfo s
 26 INNER JOIN major m ON s.`majorid`= m.`id`;
 27 
 28 SELECT * FROM v1 WHERE stuname LIKE '張%';
 29 
 30 
 31 #一、創建視圖
 32 /*
 33 語法:
 34 create view 視圖名
 35 as
 36 查詢語句;
 37 
 38 */
 39 USE myemployees;
 40 
 41 #1.查詢姓名中包含a字元的員工名、部門名和工種信息
 42 #①創建
 43 CREATE VIEW myv1
 44 AS
 45 
 46 SELECT last_name,department_name,job_title
 47 FROM employees e
 48 JOIN departments d ON e.department_id  = d.department_id
 49 JOIN jobs j ON j.job_id  = e.job_id;
 50 
 51 
 52 #②使用
 53 SELECT * FROM myv1 WHERE last_name LIKE '%a%';
 54 
 55 
 56 
 57 
 58 
 59 
 60 #2.查詢各部門的平均工資級別
 61 
 62 #①創建視圖查看每個部門的平均工資
 63 CREATE VIEW myv2
 64 AS
 65 SELECT AVG(salary) ag,department_id
 66 FROM employees
 67 GROUP BY department_id;
 68 
 69 #②使用
 70 SELECT myv2.`ag`,g.grade_level
 71 FROM myv2
 72 JOIN job_grades g
 73 ON myv2.`ag` BETWEEN g.`lowest_sal` AND g.`highest_sal`;
 74 
 75 
 76 
 77 #3.查詢平均工資最低的部門信息
 78 
 79 SELECT * FROM myv2 ORDER BY ag LIMIT 1;
 80 
 81 #4.查詢平均工資最低的部門名和工資
 82 
 83 CREATE VIEW myv3
 84 AS
 85 SELECT * FROM myv2 ORDER BY ag LIMIT 1;
 86 
 87 
 88 SELECT d.*,m.ag
 89 FROM myv3 m
 90 JOIN departments d
 91 ON m.`department_id`=d.`department_id`;
 92 
 93 
 94 
 95 
 96 #二、視圖的修改
 97 
 98 #方式一:
 99 /*
100 create or replace view  視圖名
101 as
102 查詢語句;
103 
104 */
105 SELECT * FROM myv3 
106 
107 CREATE OR REPLACE VIEW myv3
108 AS
109 SELECT AVG(salary),job_id
110 FROM employees
111 GROUP BY job_id;
112 
113 #方式二:
114 /*
115 語法:
116 alter view 視圖名
117 as 
118 查詢語句;
119 
120 */
121 ALTER VIEW myv3
122 AS
123 SELECT * FROM employees;
124 
125 #三、刪除視圖
126 
127 /*
128 
129 語法:drop view 視圖名,視圖名,...;
130 */
131 
132 DROP VIEW emp_v1,emp_v2,myv3;
133 
134 
135 #四、查看視圖
136 
137 DESC myv3;
138 
139 SHOW CREATE VIEW myv3;
140 
141 
142 #五、視圖的更新
143 
144 CREATE OR REPLACE VIEW myv1
145 AS
146 SELECT last_name,email,salary*12*(1+IFNULL(commission_pct,0)) "annual salary"
147 FROM employees;
148 
149 CREATE OR REPLACE VIEW myv1
150 AS
151 SELECT last_name,email
152 FROM employees;
153 
154 
155 SELECT * FROM myv1;
156 SELECT * FROM employees;
157 #1.插入
158 
159 INSERT INTO myv1 VALUES('張飛','[email protected]');
160 
161 #2.修改
162 UPDATE myv1 SET last_name = '張無忌' WHERE last_name='張飛';
163 
164 #3.刪除
165 DELETE FROM myv1 WHERE last_name = '張無忌';
166 
167 #具備以下特點的視圖不允許更新
168 
169 
170 #①包含以下關鍵字的sql語句:分組函數、distinctgroup  byhaving、union或者union all
171 
172 CREATE OR REPLACE VIEW myv1
173 AS
174 SELECT MAX(salary) m,department_id
175 FROM employees
176 GROUP BY department_id;
177 
178 SELECT * FROM myv1;
179 
180 #更新
181 UPDATE myv1 SET m=9000 WHERE department_id=10;
182 
183 #②常量視圖
184 CREATE OR REPLACE VIEW myv2
185 AS
186 
187 SELECT 'john' NAME;
188 
189 SELECT * FROM myv2;
190 
191 #更新
192 UPDATE myv2 SET NAME='lucy';
193 
194 
195 
196 
197 
198 #③Select中包含子查詢
199 
200 CREATE OR REPLACE VIEW myv3
201 AS
202 
203 SELECT department_id,(SELECT MAX(salary) FROM employees) 最高工資
204 FROM departments;
205 
206 #更新
207 SELECT * FROM myv3;
208 UPDATE myv3 SET 最高工資=100000;
209 
210 
211 #④join
212 CREATE OR REPLACE VIEW myv4
213 AS
214 
215 SELECT last_name,department_name
216 FROM employees e
217 JOIN departments d
218 ON e.department_id  = d.department_id;
219 
220 #更新
221 
222 SELECT * FROM myv4;
223 UPDATE myv4 SET last_name  = '張飛' WHERE last_name='Whalen';
224 INSERT INTO myv4 VALUES('陳真','xxxx');
225 
226 
227 
228 #⑤from一個不能更新的視圖
229 CREATE OR REPLACE VIEW myv5
230 AS
231 
232 SELECT * FROM myv3;
233 
234 #更新
235 
236 SELECT * FROM myv5;
237 
238 UPDATE myv5 SET 最高工資=10000 WHERE department_id=60;
239 
240 
241 
242 #⑥where子句的子查詢引用了from子句中的表
243 
244 CREATE OR REPLACE VIEW myv6
245 AS
246 
247 SELECT last_name,email,salary
248 FROM employees
249 WHERE employee_id IN(
250     SELECT  manager_id
251     FROM employees
252     WHERE manager_id IS NOT NULL
253 );
254 
255 #更新
256 SELECT * FROM myv6;
257 UPDATE myv6 SET salary=10000 WHERE last_name = 'k_ing';

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 軟體下載地址:https://www.mongodb.com/try/download/community 提供了二進位執行版,不需要make安裝,將解壓好的內容,直接移動到軟體安裝目錄即可。 在軟體安裝目錄(/usr/local/src)下創建一個名為mongodb的軟連接 ln -s mongo ...
  • 資料庫 多個集合可以組成資料庫。一個MongoDB實例可以承載多個資料庫,他們之間完全獨立。 MongoDB中的資料庫和MySQL中的資料庫概念類似,只是無需創建。 一個資料庫中可以有多個集合,一個集合中可以有多個文檔。 集合 集合就是一組文檔,多個文檔組成一個集合,集合類似於MySQL裡面的表。 ...
  • 基本簡介 MongoDB是一個介於關係資料庫和非關係資料庫之間的產品,是非關係資料庫當中功能最豐富,最像關係資料庫的,語法有點類型javascript面向對象的查詢語言,它是一個買你想幾核的,模式自由的文檔型資料庫。實現類似關係資料庫單表查詢的絕大部門功能,而且還支持對資料庫建立素偶姻。它的特點是高 ...
  • -- 危險操作,處理前記得先備份資料庫 1 declare @sql varchar(500),@tbname varchar(100) 2 begin 3 4 -- 創建游標 5 declare cursor_item cursor fast_forward for select [name] f ...
  • 當我們剛開始接觸一些已經成型的項目時,不複雜還好,複雜的話,比如說ERP項目,其中業務邏輯複雜可能會各種存儲過程之間來回調用,我們可以用 --查詢哪裡調用該表或存儲過程 select distinct object_name(id) from syscomments where id in (sel ...
  • 想把mlsql卸載了重裝,看了許多文章試了很多方法都沒辦法完全卸載,直到看到了這篇文章, 可以完全卸載mysql,在這裡謝謝博主,也拿出來分享給大家 原文鏈接:https://blog.csdn.net/qq_41140741/article/details/81489531 快捷鍵win+r輸入r ...
  • 這三個對象都可以實現自增,這裡從如下幾個維度來看看這幾個對象有哪些不同,其中功能性上看,大部分特性都是一致的或者類似的。 1,sequence在所有資料庫中的性質都一樣,它是跟具體的欄位不是強綁定的,其特點是支持多個對個對象之間共用。 sequence作為自增欄位值的時候,對錶的寫入需要另外單獨授權 ...
  • 1 #變數 2 /* 3 系統變數: 4 全局變數 5 會話變數 6 7 自定義變數: 8 用戶變數 9 局部變數 10 11 */ 12 #一、系統變數 13 /* 14 說明:變數由系統定義,不是用戶定義,屬於伺服器層面 15 註意:全局變數需要添加global關鍵字,會話變數需要添加sessi ...
一周排行
    -Advertisement-
    Play Games
  • 比如要拆分“呵呵呵90909086676喝喝999”,下麵當type=0返回的是中文字元串“呵呵呵,喝喝”,type=1返回的是數字字元串“90909086676,999”, private string GetStrings(string str,int type=0) { IList<strin ...
  • Swagger一個優秀的Api介面文檔生成工具。Swagger可以可以動態生成Api介面文檔,有效的降低前後端人員關於Api介面的溝通成本,促進項目高效開發。 1、使用NuGet安裝最新的包:Swashbuckle.AspNetCore。 2、編輯項目文件(NetCoreTemplate.Web.c ...
  • 2020 年 7 月 30 日, 由.NET基金會和微軟 將舉辦一個線上和為期一天的活動,包括 微軟 .NET 團隊的演講者以及社區的演講者。本次線上大會 專註.NET框架構建微服務,演講者分享構建和部署雲原生應用程式的最佳實踐、模式、提示和技巧。有關更多信息和隨時瞭解情況:https://focu... ...
  • #abp框架Excel導出——基於vue #1.技術棧 ##1.1 前端採用vue,官方提供 UI套件用的是iview ##1.2 後臺是abp——aspnetboilerplate 即abp v1,https://github.com/aspnetboilerplate/aspnetboilerp ...
  • 前言 本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。 作者:碧茂大數據 PS:如有需要Python學習資料的小伙伴可以加下方的群去找免費管理員領取 input()輸入 Python提供了 input() 內置函數從標準輸入讀入一 ...
  • 從12年到20年,python以肉眼可見的趨勢超過了java,成為了當今It界人人皆知的編程語言。 python為什麼這麼火? 網路編程語言搜索指數 適合初學者 Python具有語法簡單、語句清晰的特點,這就讓初學者在學習階段可以把精力集中在編程對象和思維方法上。 大佬都在用 Google,YouT ...
  • 在社會上存在一種普遍的對培訓機構的學生一種歧視的現象,具體表現在,比如:當你去公司面試的時候,一旦你說了你是培訓機構出來的,那麼基本上你就涼了,那麼你瞞著不說,然後又通過了面試成功入職,但是以後一旦在公司被髮現有培訓經歷,可能會面臨被降薪,甚至被辭退,培訓機構出來的學生,在用人單位眼裡就是能力低下的 ...
  • from typing import List# 這道題看了大佬寫的代碼,經過自己的理解寫出來了。# 從最外圍的四周找有沒有為O的,如果有的話就進入深搜函數,然後深搜遍歷# 判斷上下左右的位置是否為Oclass Solution: def solve(self, board: List[List[s ...
  • import requests; import re; import os; # 1.請求網頁 header = { "user-agent":'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, li ...
  • import requests; import re; import os; import parsel; 1.請求網頁 header = { "user-agent":'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537. ...