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
  • JWT(JSON Web Token)是一種用於在網路應用之間傳遞信息的開放標準(RFC 7519)。它使用 JSON 對象在安全可靠的方式下傳遞信息,通常用於身份驗證和信息交換。 在Web API中,JWT通常用於對用戶進行身份驗證和授權。當用戶登錄成功後,伺服器會生成一個Token並返回給客戶端 ...
  • 老周在幾個世紀前曾寫過樹莓派相關的 iOT 水文,之所以沒寫 Nano Framework 相關的內容,是因為那時候這貨還不成熟,可玩性不高。不過,這貨現在已經相對完善,老周都把它用在項目上了——第一個是自製的智能插座,這個某寶上50多塊可以買到,搜“esp32 插座”就能找到。一種是 86 型盒子 ...
  • 引言 上一篇我們創建了一個Sample.Api項目和Sample.Repository,並且帶大家熟悉了一下Moq的概念,這一章我們來實戰一下在xUnit項目使用依賴註入。 Xunit.DependencyInjection Xunit.DependencyInjection 是一個用於 xUnit ...
  • 在 Avalonia 中,樣式是定義控制項外觀的一種方式,而控制項主題則是一組樣式和資源,用於定義應用程式的整體外觀和感覺。本文將深入探討這些概念,並提供示例代碼以幫助您更好地理解它們。 樣式是什麼? 樣式是一組屬性,用於定義控制項的外觀。它們可以包括背景色、邊框、字體樣式等。在 Avalonia 中,樣 ...
  • 在處理大型Excel工作簿時,有時候我們需要在工作表中凍結窗格,這樣可以在滾動查看數據的同時保持某些行或列固定不動。凍結窗格可以幫助我們更容易地導航和理解複雜的數據集。相反,當你不需要凍結窗格時,你可能需要解凍它們以獲得完整的視野。 下麵將介紹如何使用免費.NET庫通過C#實現凍結Excel視窗以鎖 ...
  • .NET 部署 IIS 的簡單步驟一: 下載 dotnet-hosting-x.y.z-win.exe ,下載地址:.NET Downloads (Linux, macOS, and Windows) (microsoft.com) .NET 部署 IIS 的簡單步驟二: 選擇對應的版本,點擊進入詳 ...
  • 拓展閱讀 資料庫設計工具-08-概覽 資料庫設計工具-08-powerdesigner 資料庫設計工具-09-mysql workbench 資料庫設計工具-10-dbdesign 資料庫設計工具-11-dbeaver 資料庫設計工具-12-pgmodeler 資料庫設計工具-13-erdplus ...
  • 初識STL STL,(Standard Template Library),即"標準模板庫",由惠普實驗室開發,STL中提供了非常多對信息學奧賽很有用的東西。 vector vetor是STL中的一個容器,可以看作一個不定長的數組,其基本形式為: vector<數據類型> 名字; 如: vector ...
  • 前言 最近自己做了個 Falsk 小項目,在部署上伺服器的時候,發現雖然不乏相關教程,但大多都是將自己項目代碼複製出來,不講核心邏輯,不太簡潔,於是將自己部署的經驗寫成內容分享出來。 uWSGI 簡介 uWSGI: 一種實現了多種協議(包括 uwsgi、http)並能提供伺服器搭建功能的 Pytho ...
  • 1 文本Embedding 將整個文本轉化為實數向量的技術。 Embedding優點是可將離散的詞語或句子轉化為連續的向量,就可用數學方法來處理詞語或句子,捕捉到文本的語義信息,文本和文本的關係信息。 ◉ 優質的Embedding通常會讓語義相似的文本在空間中彼此接近 ◉ 優質的Embedding相 ...