視圖

視圖是虛表,是從一個或幾個基本表(或視圖)中導出的表,在系統的數據字典中僅存放了視圖的定義,不存放視圖對應的數據。
視圖是原始數據庫數據的一種變換,是查看表中數據的另外一種方式。可以將視圖看成是一個移動的窗口,通過它可以看到感興趣的數據。 視圖是從一個或多個實際表中獲得的,這些表的數據存放在數據庫中。那些用于產生視圖的表叫做該視圖的基表。一個視圖也可以從另一個視圖中產生。
視圖的定義存在數據庫中,與此定義相關的數據并沒有再存一份于數據庫中。通過視圖看到的數據存放在基表中。
視圖看上去非常像數據庫的物理表,對它的操作同任何其它的表一樣。當通過視圖修改數據時,實際上是在改變基表中的數據;相反地,基表數據的改變也會自動反映在由基表產生的視圖中。由于邏輯上的原因,有些視圖可以修改對應的基表,而有些則不能(僅僅能查詢)。

一、視圖的創建:

1 創建信息系學生信息的視圖 (is_view) ;
create view is_view(sno,sname,ssex,sage,sdept)
as
select *
from student
where sdept='IS';

2 創建信息系選修了1號課程的學生的視圖;
create view is_1_view(sno,sname,ssex,sage,sdept)
as
select student.*
from student,sc
where student.sdept='IS' and sc.sno=student.sno and sc.cno=1;

3 建立信息系選修了1號課程且成績在90分以上的學生的視圖;
create view cs_1_90_view(sno,sname,ssex,sage,sdept)
as
select student.*
from student,sc
where student.sdept='IS' and sc.sno=student.sno and sc.cno=1 and sc.grade>90;

4 創建一個反映學生出生年份的視圖
create view birth_view (sno,birth)
as
select sno,Year(GetDate())-sage
from student;

5 將所有女生的記錄定義為一個視圖;

create view nv_view(sno,sname,ssex,sage,sdept)
as
select *
from student
where ssex='女';
6 將所有學生的學號和他的平均成績定義為一個視圖S_G。
create view S_G(sno,savg)
as
select sno,avg(grade)
from sc
group by sno;

二、 視圖結構的修改:

1 將視圖 is_view 修改為信息系的所有女生的視圖;
drop view is_view;

create view is_view(sno,sname,ssex,sage,sdept)
as
select *
from student
where sdept='IS' and ssex='女';
或者
alter view is_view
as
select sno,sname,ssex,sage,sdept
from student
where sdept='IS' and ssex='女';
?
三、查詢視圖

1 在信息系的學生視圖中查詢年齡小于20歲的學生:
select sno
from is_view
where sage<20;

2 查詢信息系選修了1號課程的學生:

select sno
from is_1_view;
3 在視圖S_G中查詢平均成績在90分以上的學生的學號和平均成績:
select sno,savg
from S_G
where savg>90;

四、更新視圖:

1 將信息系學生視圖is_view中學號為“95002”學生姓名改為”劉辰”;

update is_view
set sname='劉辰'
where sno=95002;

2 向信息系學生視圖is_view中插入一個新的學生記錄, 學號為95029,姓名為”趙新”, 年齡為20歲;
insert
into is_view(sno,sname,ssex,sage,sdept)
values(95029,'趙新','男',20,'IS');

3 刪除信息系學生視圖is_view中學號為95004的學生的記錄。
delete
from is_view
where sno=95004;
五、刪除視圖

1 刪除視圖is_view
drop view is_view;


另外視圖表的查詢和普通表的查詢沒有區別,視圖表的更新會有一些限制。

由于視圖是基于基本表的虛表,所以當基本表變化時視圖也會跟著更新,因此一些復雜的連表查詢可以直接把需要的數據生成一個視圖


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/273465.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273465.shtml
英文地址,請注明出處:http://en.pswp.cn/news/273465.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

選擇器的并發性

4.3.4 并發性 選擇器對象是線程安全的&#xff0c;但它們包含的鍵集合不是。通過keys( )和selectKeys( )返回的鍵的集合是Selector對象內部的私有的Set對象集合的直接引用。這些集合可能在任意時間被改變。已注冊的鍵的集合是只讀的。如果您試圖修改它&#xff0c;那么您得到的…

mysql 自定義函數之判斷

DELIMITER $$CREATE DEFINERrootlocalhost FUNCTION getMin(a int,b int) RETURNS int(11)BEGINdeclare min int;if(a>b)then set min b;elseif(b>a)then set min a;else set min 0;#end if;end if;RETURN min;END 調用該函數可以如下方式 select getMin(1,2); 返回值…

C/C++的數組名

數組名相當于指向數組第一個元素的地址。數組名不是變量&#xff0c;是地址常量&#xff0c;不能為其賦值。如下&#xff1a;1&#xff09;一維數組中對于數組 a[5] {1, 2, 3, 4, 5};數組名a相當于指向第一個元素a[0]的指針。即 a 與 &a[0] 等價。2&#xff09;二維數組中…

mysql的運算法

一、算術運算符1、加 www.2cto.com mysql> select 12;-----| 12 |-----| 3 |-----2、減mysql> select 1-2;-----| 1-2 |-----| -1 |-----3、乘mysql> select 2*3;-----| 2*3 |-----| 6 |-----4、除mysql> select 2/3;--------| 2/3 |--------| 0.6667 |-…

轉-- iOS 30多個iOS常用動畫,帶詳細注釋

// // CoreAnimationEffect.h // CoreAnimationEffect // // Created by VincentXue on 13-1-19. // Copyright (c) 2013年 VincentXue. All rights reserved. //#import <Foundation/Foundation.h>/**! 導入QuartzCore.framework** Example:** Step.1** #imp…

Java中abstract與interface

抽象類&#xff08;abstract class&#xff09;的特點&#xff1a; 1.抽象類、抽象方法都必須使用abstract修飾。 2.抽象類中&#xff0c;可以有非抽象方法&#xff0c;甚至可以是沒有任何方法或變量的空類。 對于抽象類中不定義抽象方法的用意在于&#xff1a;使該類不能被創建…

按位與、或、異或等運算方法

按位與運算符&#xff08;&&#xff09; 參加運算的兩個數據&#xff0c;按二進制位進行“與”運算。 運算規則&#xff1a;0&00; 0&10; 1&00; 1&11; 即&#xff1a;兩位同時為“1”&#xff0c;結果才為“1”&#xff0c;否則為0 例如&#xff1…

JavaScript驗證

<script type"text/javascript"> /*密碼*/ function password() { var password document.getElementById("password").value; var ts document.getElementById("tsPassword"); if (password.length >…

mysql數據庫根據上傳的經緯度計算距離

select 6371.393*ACOS(COS(RADIANS(latitude))*COS(RADIANS(47.02))*COS(RADIANS(longitude)-RADIANS(114.100))SIN(RADIANS(latitude))*SIN(RADIANS(47.02))) as distancefrom location

emacs配置

; 指針顏色設置為白色(set-cursor-color "white");; 鼠標顏色設置為白色(set-mouse-color "white") ;; 從color-theme中獲取;; 網上下載color-theme.el&#xff0c;放到加載路徑(&#xff0f;usr/share/emacs/site-lisp )下;; M-x color-theme-select,鼠標…

自然連接(NATURAL JOIN)

自然連接&#xff08;NATURAL JOIN&#xff09;是一種特殊的等價連接&#xff0c;它將表中具有相同名稱的列自動進行記錄匹配。自然連接不必指定任何同等連接條件。圖9.9給出了典型的自然連接示意圖。 圖9.9 自然連接 自然連接自動判斷相同名稱的列&#xff0c;而后形成匹配。…

iis express8 自動關閉

引用&#xff1a;http://www.cnblogs.com/chunCui/p/3522619.html 問題&#xff1a;最近使用vs2013開發個web &#xff0c; 每次調試結束時iis express 8 也會自動關閉 解決方法&#xff1a;web項目-屬性-web-調試器-只選中ASP.Net就可以了 轉載于:https://www.cnblogs.com/qqq…

自連接

9.3 表的連接類型 9.3.1 自連接 自連接是指表與其自身進行連接&#xff0c;這就需要用到前面介紹的表別名。下面通過一個具體實例來講解自連接的應用。 實例5 自連接的使用方法 查詢成績中存在不及格課程的學生的姓名、所在系、所有的課程及成績信息。如果采用前面介紹的…

從此記錄

從此記錄工作、學習、生活的那些事兒&#xff01;轉載于:https://www.cnblogs.com/alwaysjava/p/4221362.html

LIKE運算符

6.5 使用LIKE進行模糊查詢 當只知道部分字符串時&#xff0c;可使用LIKE運算符來查詢數據庫&#xff0c;找出與其相關的整個字符串。因此&#xff0c;當把關鍵字LIKE用在WHERE子句中時&#xff0c;可以比較兩個字符串的部分匹配。當對字符串內容有些印象&#xff0c;但并不知…

AND運算符

6.2 組合查詢條件 在前一章提到的WHERE子句進行查詢時&#xff0c;WHERE子句后面的搜索條件只是單一的。實際上&#xff0c;可以通過布爾運算符AND和OR&#xff0c;將多個單獨的搜索條件結合在一個WHERE子句中&#xff0c;形成一個復合的搜索條件。當對復合搜索條件求值時&a…

Cron表達式【一】

Cron表達式【一】 Cron表達式被用來配置CronTrigger實例。 Cron表達式是一個由 7個子表達式組成的字符串。每個子表達式都描述了一個單獨的日程細節。這些子表達式用空格分隔&#xff0c;分別表示&#xff1a; 1. Seconds 秒 2. Minutes 分鐘 3. Hours 小時 4. Day-of-Month 月…

OR運算符

6.2.2 OR運算符 OR運算符表示“或”的關系。當可能有多個條件為True&#xff0c;但只要有一個為True就滿足搜索要求時&#xff0c;可以使用OR運算符來組合搜索條件。OR在結合兩個布爾表達式時&#xff0c;只要其中一個條件為True時&#xff0c;便傳回True。OR運算符的真值表…

Java基礎---網絡編程

第一講 概述 1、網絡模型&#xff1a;OSI參考模型和TCP/IP參考模型 圖示&#xff1a; 一般來說開發處于傳輸層和網際層&#xff0c;應用層為&#xff1a;FTP和HTTP協議等&#xff0c;傳輸層為&#xff1a;UDP和TCP等&#xff0c;網際層為&#xff1a;IP。 通常用戶操作的是…

AND、OR運算符的組合使用

6.2.3 AND、OR運算符的組合使用 在WHERE子句中&#xff0c;通過AND、OR運算符可以同時連接多個條件&#xff0c;當然AND、OR運算符也可以同時使用。但是當AND、OR運算符同時存在時&#xff0c;其優先級如何確定呢&#xff1f;與大多數語言一樣&#xff0c;SQL語言認為AND運算…