日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

SQLserver数据库之视图及其他查询

發布時間:2024/6/21 综合教程 38 生活家
生活随笔 收集整理的這篇文章主要介紹了 SQLserver数据库之视图及其他查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.sql數據庫-視圖的概念

基表

基表是真實存在于數據庫中的表對象,是視圖的數據來源表。

視圖

視圖是一個虛擬表,是根據需要從一個或多個基表中查詢的結果集。視圖只是保存在數據庫中的 SELECT 查詢,數據來源于基表,可像表一樣進行查詢、添加、刪除和修改數據。

視圖的用途

(1)為用戶集中數據,簡化用戶的數據查詢和處理。

(2)屏蔽數據庫的復雜性。

(3)簡化用戶權限的管理。

(4)便于數據共享。

(5)可以重新組織數據以便輸出到其他應用程序中。

視圖使用說明

(1)只有在當前數據庫中才能創建視圖。

(2)視圖的命名必須遵循標識符命名規則,不能與表同名,且對每個用戶視圖名必須是唯一的,即對不同用戶,即使是定義相同的視圖,也必須使用不同的名字。

(3)不能把規則、默認值或觸發器與視圖相關聯。

(4)不能在視圖上建立任何索引,包括全文索引。

2.sql數據庫-視圖操作

創建視圖

基本語法:

Create View 視圖名

As

select查詢語句

注意:

(1)只有在當前數據庫中才能創建視圖。

(2)視圖的命名必須遵循標識符命名規則,不能與表同名,且對每個用戶視圖名必須是唯一的,即對不同用戶,即使是定義相同的視圖,也必須使用不同的名字。

(3)不能把規則、默認值或觸發器與視圖相關聯。

(4)不能在視圖上建立任何索引,包括全文索引。

【例1】創建查詢學生姓名、身份證號、性別的視圖(v_stuInfo)。

 CREATE VIEW v_stuInfo

 AS

 SELECT stuName,stuIdentity,stuSex FROM stuInfo

【例2】創建查詢學生姓名、學校名稱、區縣名稱的視圖(v_stu_area)。

 CREATE VIEW v_stu_area

 AS

 SELECT stuName,schName,areaName

 From schoolInfo,stuInfo,areaInfo

 INNER JOIN stuInfo ON schoolInfo.schId=stuInfo.stuId

 INNER JOIN areaInfo ON schoolInfo.areaId=areaInfo.areaId

在執行上面的查詢代碼的時候 應該會出現下圖這樣的情況

sql數據庫報錯

我們只需要 將上面代碼中的第3行 中的 schName與areaInfo刪除然后再點擊執行即可!

修改視圖

基本語法:

Alter View 視圖名

As

select查詢語句

注意:修改視圖即是使用新的查詢語句替換原有的視圖查詢語句。

【例3】修改視圖v_stuInfo為查詢學生編號、姓名、身份證號碼、性別。

 Alter view v_stuInfo

 AS

 SELECT AutoId, stuName,stuIdentity,stuSex FROM stuInfo

刪除視圖

基本語法:

Drop View 視圖名

注意:刪除視圖不影響基表數據。

【例4】刪除視圖v_stuInfo。

 Drop view v_stuInfo

從視圖查詢數據

視圖一經建立,可像一個普通表一樣從視圖查詢數據。

【例5】從視圖v_stu_area查詢船山區的學生數據。

  Select * from v_stu_area

  Where areaName=‘船山區’

查詢視圖依賴的基表

sp_depends 視圖名

如:查看v_stu_area依賴的基表:

 sp_depends v_stu_area

3.sql數據庫-視圖綜合案例

【例6】創建學校人數視圖V_SchCounts,包括學校號、學校名、性別和人數;再通過該視圖查詢女生人數最多的學校名。

 CREATE VIEW V_SchCounts

 AS

 SELECT sch.schId,schName,stuSex,count(*) as counts

 FROM schoolInfo sch left join stuInfo stu

 ON sch.schID=stu.schID

 GROUP BY sch.schID,schName

 GO



 Select schName from V_schCounts

 where counts=(select max(counts)

 from V_SchCounts

 where stuSex='女')

除了上面一些師徒操作我們還可以進行下面的這些操作,這些操作叫做排名次!

sql數據庫排名次

RANK() over(order by ….):有同名次,有斷號

DENSE_RANK() over(order by ….):有同名次,無斷號

【例7】查詢stuScores表信息,給每個記錄按照總分降序排名次。

 select *,名次=Rank() over (order by total desc)

 from stuScores

sql數據庫排序號

ROW_NUMBER ( )over(order by ….)

【例8】查詢stuScores表信息,給每條記錄按照總分降序排序號。

select *,序號=Row_Number() over (order by total desc)

from stuScores

sql數據庫排頁號

Ntile(…) over(order by ….)

【例9】查詢stuInfo表信息,給每條記錄按照autoID降序排序號。

select *,頁號=NTILE(100) OVER(ORDER BY autoID desc)

from stuInfo

來源:https://zzzjtd.com/rjkf/sqljc

總結

以上是生活随笔為你收集整理的SQLserver数据库之视图及其他查询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。