国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【MySQL 數(shù)據(jù)庫】8、視圖

這篇具有很好參考價值的文章主要介紹了【MySQL 數(shù)據(jù)庫】8、視圖。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、什么是視圖

  • 視圖(View)是一種虛擬存在的表
  • 視圖中的數(shù)據(jù)并不在數(shù)據(jù)庫中真實存在
  • 行和列數(shù)據(jù)來自定義視圖的查詢中使用的表,并且是在使用視圖時動態(tài)生成的

二、視圖語法

【MySQL 數(shù)據(jù)庫】8、視圖

--- 創(chuàng)建視圖
CREATE 
	OR REPLACE VIEW student_view AS SELECT
	id,
	`name`,
	money 
FROM
	student;
	
--- 查看視圖的創(chuàng)建語句
show create view student_view;

--- 查看視圖中的數(shù)據(jù)
select * from student_view;
select * from student_view where id <= 10;

--- 修改視圖
create or replace view student_view as select id, `name` from student;
alter view student_view as select id, `name`, money from student;

--- 刪除視圖
drop view if exists student_view;

三、檢查選項

當使用 WITH CHECK OPTION 子句創(chuàng)建視圖時,MySQL 會通過視圖檢查正在更改的每個行,例如 插入,更新,刪除,以使其符合視圖的定義。

MySQL 允許基于一個視圖創(chuàng)建另一個視圖,它還會檢查依賴視
圖中的規(guī)則以保持一致性
。

為了確定檢查的范圍,MySQL 提供了兩個選項: CASCADEDLOCAL,默認值為 CASCADED

?? 沒有添加 with check option 的時候是直接插入,不做校驗


# ① 基于 student 表創(chuàng)建了一個視圖
# ② 該視圖沒有添加【檢查選項】
# ③ 當使用視圖插入的數(shù)據(jù)不符合視圖創(chuàng)建的條件(id <= 20)的時候,數(shù)據(jù)依然可以插入到 student 表中
create or replace view stu_v1 as select id, `name`, money from student where id <= 20;
select * from stu_v1;

# 沒有檢查 id 是否符合視圖創(chuàng)建的條件(id <= 20)
insert into stu_v1 values (8, 'Happy', 66666);

# 沒有檢查 id 是否符合視圖創(chuàng)建的條件(id <= 20)
# id 不符合視圖創(chuàng)建的條件(id <= 20),但依然可以插入到 student 表中
# 但在 stu_v1 中是不存在該條記錄的
insert into stu_v1 values (99, 'Nice', 88888);

(1) cascaded(級聯(lián))

當視圖使用 WITH CASCADED CHECK OPTION WITH CHECK OPTION時,會循環(huán)檢查視圖的規(guī)則以及底層視圖的規(guī)則

create or replace view stu_v1 as select id, `name`, money from student where id <= 20;

# 可插入到基表中, 可插入到 stu_v1 視圖中
insert into stu_v1 values (8, 'eight', 88888); 
# 可插入到基表中, 【不】可插入到 stu_v1 視圖中
insert into stu_v1 values (22, '22', 22222);
# 可插入到基表中, 可插入到 stu_v1 視圖中
insert into stu_v1 values (20, '20', 20000);

# 基于 stu_v1 視圖創(chuàng)建有檢查選項的視圖
create view stu_v2 as select id, `name`, money from stu_v1 where id >= 10 with cascaded check option;
insert into stu_v2 values (6, '6', 66666); # failed
insert into stu_v2 values (21, '21', 21111); # failed(不符合 stu_v1 視圖的條件)
insert into stu_v2 values (15, '15', 15555); # OK

# 基于 stu_v2 視圖創(chuàng)建【沒有】檢查選項的視圖
create view stu_v3 as select id, `name`, money from stu_v2 where id <= 15;
insert into stu_v3 values (11, '11', 11111); # OK
insert into stu_v3 values(17, '17', 17000); # OK 
insert into stu_v3 values(28, '28888', 28888); # failed

(2) local

?? 當視圖使用 WITH LOCAL CHECK OPTION 時,會遞歸查找當前視圖所依賴的視圖是否有檢查選項?
?? 如果有,則檢查;如果沒有,就不檢查

create or replace view stu_v1 as select id, `name`, money from student where id <= 20;

# 基于 stu_v1 視圖創(chuàng)建有檢查選項的視圖
create or replace view stu_v2 as select id, `name`, money from stu_v1 where id >= 10 with local check option;
insert into stu_v2 values (6, '6', 66666); # failed
insert into stu_v2 values (21, '21', 21111); # OK
insert into stu_v2 values (15, '15', 15555); # OK

# 基于 stu_v2 視圖創(chuàng)建【沒有】檢查選項的視圖
create or replace view stu_v3 as select id, `name`, money from stu_v2 where id <= 15;
insert into stu_v3 values (9, '9', 99999); # failed
insert into stu_v3 values(17, '17', 17000); # OK 
insert into stu_v3 values(28, '28888', 28888); # OK

四、視圖的作用

?? 要使視圖可更新,視圖中的行與基表中的行必須存在一對一的關系


?? 視圖不僅可以簡化用戶對數(shù)據(jù)的理解,也可以簡化它們的操作。那些被經常使用的查詢可以被定義為視圖,從而使得用戶不必為以后的操作每次指定全部的條件。

?? 數(shù)據(jù)庫可以授權,但不能授權到數(shù)據(jù)庫特定行和特定的列上。通過視圖用戶只能查詢和修改他們所能見到的數(shù)據(jù),有一定的權限控制作用。

?? 視圖可幫助用戶屏蔽真實表結構變化帶來的影響【數(shù)據(jù)獨立】

五、視圖案例

?? 為了保證數(shù)據(jù)庫表的安全性,開發(fā)人員在操作 tb_user 表時,只能看到的用戶的基本字段(屏蔽手機號和郵箱兩個字段)

CREATE 
	OR REPLACE VIEW user_basic_info_view AS SELECT
	id,
	`name`,
	profession,
	age,
	gender,
	`status`,
	createtime 
FROM
	tb_user;

?? 查詢每個學生所選修的課程(三張表聯(lián)查),這個功能在很多的業(yè)務中都有使用到,為了簡化操作,定義一個視圖。

CREATE 
	OR REPLACE VIEW student_course_view AS (
SELECT
	s.id '學生編號',
	s.`name`,
	s.`no`,
	c.id '課程編號',
	c.`name` '課程名' 
FROM
	student s
	LEFT JOIN student_course sc ON sc.studentid = s.id
	LEFT JOIN course c ON c.id = sc.courseid 
	);

create table student(
id int auto_increment primary key comment '主鍵ID',
name varchar(10) comment '姓名',
no varchar(10) comment '學號'
) comment '學生表';
insert into student values (null, '黛綺絲', '2000100101'),(null, '謝遜',
'2000100102'),(null, '殷天正', '2000100103'),(null, '韋一笑', '2000100104');

create table course(
id int auto_increment primary key comment '主鍵ID',
name varchar(10) comment '課程名稱'
) comment '課程表';
insert into course values (null, 'Java'), (null, 'PHP'), (null , 'MySQL') ,
(null, 'Hadoop');

CREATE TABLE student_course (
id INT auto_increment COMMENT '主鍵' PRIMARY KEY,
studentid INT NOT NULL COMMENT '學生ID',
courseid INT NOT NULL COMMENT '課程ID',
CONSTRAINT fk_courseid FOREIGN KEY ( courseid ) REFERENCES course ( id ),
CONSTRAINT fk_studentid FOREIGN KEY ( studentid ) REFERENCES student ( id ) 
) COMMENT '學生課程中間表';

insert into student_course values (null,1,1),(null,1,2),(null,1,3),(null,2,2),
(null,2,3),(null,3,4);

學習筆記基于黑馬程序員的課程,阿里嘎多文章來源地址http://www.zghlxwxcb.cn/news/detail-478066.html

到了這里,關于【MySQL 數(shù)據(jù)庫】8、視圖的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • MySQL中的表與視圖:解密數(shù)據(jù)庫世界的基石

    MySQL中的表與視圖:解密數(shù)據(jù)庫世界的基石

    ??作者簡介,黑夜開發(fā)者,CSDN領軍人物,全棧領域優(yōu)質創(chuàng)作者?,CSDN博客專家,阿里云社區(qū)專家博主,2023年6月CSDN上海賽道top4。 ??數(shù)年電商行業(yè)從業(yè)經驗,歷任核心研發(fā)工程師,項目技術負責人。 ??本文已收錄于PHP專欄:MySQL的100個知識點。 ??歡迎 ??點贊?評論?收

    2024年02月10日
    瀏覽(24)
  • Day04 03-MySQL數(shù)據(jù)庫的DCL(用戶|權限|視圖)

    第十二章 DCL 12.1 DCL的作用 DCL語句主要用來做用戶的創(chuàng)建、管理,權限的授予、撤銷等操作的。 12.2 管理用戶 創(chuàng)建、刪除用戶的操作,必須要使用root用戶才可以完成! 12.3 權限管理 如果在授權遠程登錄的時候,出現(xiàn)如下問題: Unable to load authentication plugin ‘caching_sha2_password’

    2024年02月07日
    瀏覽(18)
  • 數(shù)據(jù)庫系統(tǒng)原理及MySQL應用教程實驗六視圖創(chuàng)建與管理

    數(shù)據(jù)庫系統(tǒng)原理及MySQL應用教程實驗六視圖創(chuàng)建與管理

    1.理解視圖的概念。 2.掌握創(chuàng)建、更改、刪除視圖的方法。 3.掌握使用視圖來訪問數(shù)據(jù)的方法。 1.驗證性實驗:在job數(shù)據(jù)庫中,有聘任人員信息表:Work_lnfo表對其視圖的操作。 2.設計性試驗:在學生管理系統(tǒng)中,有學生信息表studentinfo表對其視圖的操作。 (一)驗證性實驗 在

    2024年02月04日
    瀏覽(100)
  • 數(shù)據(jù)庫 實驗8 視圖

    實驗8 ?視圖 一、實驗目的: (1) 理解視圖的概念。 (2) 掌握創(chuàng)建、更改、刪除視圖的方法。 (3) 掌握使用視圖來訪問數(shù)據(jù)的方法。 二、實驗要求 1、學生提前準備好實驗報告,預習并熟悉實驗步驟; 2、遵守實驗室紀律,在規(guī)定的時間內完成要求的內容; 3、1~2人為1小組,實驗

    2024年02月06日
    瀏覽(42)
  • 數(shù)據(jù)庫強化(1.視圖)

    視圖是指計算機數(shù)據(jù)庫中的視圖,是一個虛擬表,其內容由查詢定義。同真實的表一樣,視圖包含一系列帶有名稱的列和行數(shù)據(jù)。但是,視圖并不在數(shù)據(jù)庫中以存儲的數(shù)據(jù)值集形式存在。行和列數(shù)據(jù)來自由定義視圖的查詢所引用的表,并且在引用視圖時動態(tài)生成。 簡化用戶對

    2024年02月06日
    瀏覽(18)
  • 數(shù)據(jù)庫的視圖

    數(shù)據(jù)庫視圖是一種虛擬的表,它不是一個實際的表,而是根據(jù)一個或多個實際表的查詢結果生成的一個虛擬表,它可以看作是對一個或多個表的一個或多個列的子集的邏輯表示。在數(shù)據(jù)庫中,視圖有以下幾個作用: 數(shù)據(jù)安全:數(shù)據(jù)庫視圖可以隱藏數(shù)據(jù)庫中某些敏感的數(shù)據(jù),只

    2024年02月09日
    瀏覽(16)
  • 數(shù)據(jù)庫實驗:SQL的數(shù)據(jù)視圖

    數(shù)據(jù)庫實驗:SQL的數(shù)據(jù)視圖

    視圖是由數(shù)據(jù)庫中的一個表或多個表導出的虛擬表,其作用是方便用戶對數(shù)據(jù)的操作 視圖是一個虛擬表,其內容由查詢定義。同真實的表一樣,視圖包含一系列帶有名稱的列和行數(shù)據(jù)。但是,數(shù)據(jù)庫中只存放了視圖的定義,而并沒有存放視圖中的數(shù)據(jù),這些數(shù)據(jù)存放在原來的

    2024年02月05日
    瀏覽(94)
  • 數(shù)據(jù)庫實驗3---索引和視圖

    使用SQL語句ALTER TABLE分別刪除studentsdb數(shù)據(jù)庫的student_info表、grade表、curriculum表的主鍵索引。 使用SQL語句為curriculum表的課程編號創(chuàng)建唯一性索引,命名為cno_idx。 使用SQL語句為grade表的“分數(shù)”字段創(chuàng)建一個普通索引,命名為grade_idx。 使用SQL語句為grade表的“學號”和“課程編

    2024年02月05日
    瀏覽(20)
  • 【數(shù)據(jù)庫原理】(13)視圖的使用

    視圖(View) 是一種虛擬的表,它的內容由查詢定義,但不存儲實際的數(shù)據(jù)。視圖是從一個或多個基本表(或其他視圖)生成的。 特點: 虛擬性 :視圖不包含數(shù)據(jù)本身,僅保存了一個查詢,這個查詢在每次訪問視圖時動態(tài)地執(zhí)行。 動態(tài)性 :視圖顯示的數(shù)據(jù)是從基本表中實時

    2024年02月02日
    瀏覽(18)
  • 數(shù)據(jù)庫視圖與索引經典題

    數(shù)據(jù)庫視圖與索引經典題

    https://www.jianshu.com/p/d0aa8ac94f40 可以通過視圖對某些用戶查詢的數(shù)據(jù)進行限制 可以把一些常用的、復雜的統(tǒng)計類的做成視圖 使用視圖 :當做一張?zhí)摂M的表來使用 視圖是從一個或幾個基本表(或視圖)導出的表。它與基本表不同,是一個虛表。 數(shù)據(jù)庫只存放視圖的定義,而不

    2024年02月12日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包