MySQL視圖

原文連接http://zhhll.icu/2021/01/02/%E6%95%B0%E6%8D%AE%E5%BA%93/%E5%85%B3%E7%B3%BB%E5%9E%8B%E6%95%B0%E6%8D%AE%E5%BA%93/MySQL/MySQL%E8%A7%86%E5%9B%BE/mysql

MySQL視圖

視圖的概念

視圖是一種虛擬存在的表,行和列的數據來自於定義的視圖的查詢中使用的表,而且是在使用視圖中動態生成的,只保存sql邏輯,不保存數據sql

應用場景

  • 多個地方使用一樣的查詢結果
  • 該查詢結果使用的sql語句較爲複雜

視圖

建立視圖

#語法結構
create view 視圖名
as 查詢語句

create view my_view as select s.name as student_name,c.name as class_name from student s join class c on s.classid = c.id;

#查看視圖  此時視圖裏只有兩個字段
desc my_view;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| student_name | varchar(20) | NO   |     | NULL    |       |
| class_name   | varchar(20) | NO   |     | NULL    |       |
+--------------+-------------+------+-----+---------+-------+

使用視圖查詢

#注意:查詢時只能夠使用視圖中的字段進行查詢
select * from  my_view where student_name = '張三';

修改視圖

有兩種方式修改視圖函數

方式一:有則修改,沒有則建立code

create or replace view 視圖名
as 查詢語句

方式二:get

alter view 視圖名 as 查詢語句

刪除視圖

drop view 視圖名,視圖名,...

視圖中數據更新

在使用簡單地查詢語句做爲視圖時,能夠對視圖進行增刪改操做,並且對視圖的操做也會一樣使數據表完成相應的變化博客

可是包含如下特色的視圖不容許更新io

  • 分組函數、distinct、group by、having、union、union all
  • 常量視圖
  • select中包含子查詢
  • join語句(能夠update可是不能夠insert和delete)
  • 數據來自於一個不可更新的視圖
  • Where 子句的子查詢引用了from子句中的表

因爲自己的博客百度沒有收錄,博客地址http://zhhll.icuclass

相關文章
相關標籤/搜索