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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

abap视图字段限制_【第八章】视图

發布時間:2025/3/11 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 abap视图字段限制_【第八章】视图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一級目錄:Mosh_完全掌握SQL課程_學習筆記

其它相關:數據概要


【第八章】視圖

Views (時長18分鐘)

1. 創建視圖

Creating Views (5:36)

小結

就是創建虛擬表,自動化一些重復性的查詢模塊,簡化各種復雜操作(包括復雜的子查詢和連接等)

注意視圖雖然可以像一張表一樣進行各種操作,但并沒有真正儲存數據,數據仍然儲存在原始表中,視圖只是儲存起來的模塊化的查詢結果,是為了方便和簡化后續進一步操作而儲存起來的虛擬表。

案例

創建 sales_by_client 視圖

USE sql_invoicing;CREATE VIEW sales_by_client ASSELECT client_id,name,SUM(invoice_total) AS total_salesFROM clients cJOIN invoices i USING(client_id)GROUP BY client_id, name;-- 雖然實際上這里加不加上name都一樣

若要刪掉該視圖用 DROP VIEW sales_by_client 或右鍵

創建視圖后可就當作 sql_invoicing 庫下一張表一樣進行各種操作

USE sql_invoicing;SELECT s.name,s.total_sales,phone FROM sales_by_client s JOIN clients c USING(client_id) WHERE s.total_sales > 500

練習

創建一個客戶差額表視圖,可以看到客戶的id,名字以及差額(發票總額-支付總額)

USE sql_invoicing;CREATE VIEW clients_balance ASSELECT client_id,c.name,SUM(invoice_total - payment_total) AS balanceFROM clients cJOIN invoices USING(client_id)GROUP BY client_id

2. 更新或刪除視圖

Altering or Dropping Views (2:52)

小結

修改視圖可以先DROP在CREATE,但最好是用CREATE OR REPLACE

視圖的查詢語句可以在編輯模式下查看和修改,但最好是保存為sql文件并放在源碼控制妥善管理

案例

想在上一節的顧客差額視圖的查詢語句最后加上按差額降序排列

法1. 先刪除再重建

USE sql_invoicing;DROP VIEW clients_balance; -- 若不存在這個視圖,用DROP會報錯CREATE VIEW clients_balance AS ……ORDER BY balance DESC

法2. 用REPLACE關鍵字,即用 CREATE OR REPLACE VIEW clients_balance AS, 這個比較通用,不管現在這個視圖現在是否已經存在都不會出問題,推薦使用種這種方式。

USE sql_invoicing;CREATE OR REPLACE VIEW clients_balance AS……ORDER BY balance DESC

方法

如何保存視圖的原始查詢語句?

法1.

(推薦方法) 將原始查詢語句保存為 views 文件夾下的和與視圖同名的 clients_balance.sql 文件,然后將這個文件夾放在源碼控制下(put these files under source control), 通常放在 git repository(倉庫)里與其它人共享,團隊其他人因此能在自己的電腦上重建這個數據庫

法2.

若丟失了原始查詢語句,要修改的話可點擊視圖的扳手按鈕打開編輯模式,可看到如下被MySQL處理了的查詢語句

MySQL在前面加了些莫名其妙的東西并且在所有庫名表名字段名外套上反引號防止名稱沖突(當對象名和MySQL里的關鍵字相同時確保被當作對象名而不是關鍵字),但這都不影響

直接做我們需要的修改,如加上ORDER BY balance DESC 然后點apply就行了

CREATE ALGORITHM = UNDEFINED DEFINER = `root`@`localhost` SQL SECURITY DEFINER VIEW `clients_balance` ASSELECT `c`.`client_id` AS `client_id`,`c`.`name` AS `name`,SUM((`invoices`.`invoice_total` - `invoices`.`payment_total`)) AS `balance`FROM(`clients` `c`JOIN `invoices` ON ((`c`.`client_id` = `invoices`.`client_id`)))GROUP BY `c`.`client_id`ORDER BY balance DESC

法2是沒有辦法的辦法,當然最好還是將 views 保存為 sql 文件并放入源碼控制

3. 可更新視圖

Updatable Views (5:12)

小結

視圖除了可用在查詢語句SELECT中,也可以用在增刪改(INSERT DELETE UPDATE)語句中,但后者有一定的前提條件。

如果一個視圖的原始查詢語句中沒有如下元素:
1. DISTINCT 去重
2. 聚合函數/GROUP BY/HAVING (聚合函數和HAVING篩選通常是伴隨GROUP BY分組出現的)
3. UNION 縱向連接

則該視圖是可更新視圖(Updatable Views),可以增刪改,否則只能查。

另外,增(INSERT)還要滿足附加條件:視圖必須包含底層原表的所有必須字段

總之,一般通過原表修改數據,但當出于安全考慮或其他原因沒有某表的直接權限時,可以通過視圖來修改底層數據(?),前提是視圖是可更新的。

之后會將關于安全和權限的內容

案例

創建視圖(新虛擬表)invoices_with_balance(帶差額的發票記錄表)

USE sql_invoicing;CREATE OR REPLACE VIEW invoices_with_balance AS SELECT /* 這里有個小技巧,要插入表中的多列列名時,可從左側欄中連選并拖入相關列 */invoice_id, number, client_id, invoice_total, payment_total, invoice_date,invoice_total - payment_total AS balance,-- 新增列due_date, payment_date FROM invoices WHERE (invoice_total - payment_total) > 0 /* 這里不能用列別名balance,會報錯說不存在, 必須用原列名的表達式 之前講WHERE和HAVING作為事前篩選和事后篩選的區別時提到過 */

該視圖滿足條件,是可更新視圖,故可以增刪改:

  • 刪:
  • 刪掉id為1的發票記錄

    DELETE FROM invoices_with_balance WHERE invoice_id = 1
  • 改:
  • 將2號發票記錄的期限延后兩天

    UPDATE invoices_with_balance SET due_date = DATE_ADD(due_date, INTERVAL 2 DAY) WHERE invoice_id = 2
  • 增:
  • 在視圖中用INSERT新增記錄的話還有另一個前提,即視圖必須包含其底層所有原始表的所有必須字段
    例如,若這個 invoices_with_balance 視圖里沒有 invoice_date 字段(invoices 中的必須字段),那就無法通過該視圖向 invoices 表新增記錄,因為 invoices 表不會接受 invoice_date 字段為空的記錄

    4. WITH CHECK OPTION 子句

    THE WITH CHECK OPTION Clause (2:18)

    小結

    在視圖的原始查詢語句最后加上 WITH CHECK OPTION 可以防止執行那些會讓視圖中某些行(記錄)消失的修改語句。

    案例

    接前面的 invoices_with_balance 視圖的例子,該視圖與原始的 orders 表相比增加了balance(invouce_total - payment_total) 列,且只顯示 balance 大于0的行(記錄),若將某記錄(如2號訂單)的 payment_total 改為和 invouce_total 相等,則 balance 為0,該記錄會從視圖中消失:

    UPDATE invoices_with_balance SET payment_total = invoice_total WHERE invoice_id = 2

    更新后會發現invoices_with_balance視圖里2號訂單消失。

    但在視圖原始查詢語句最后加入 WITH CHECK OPTION 后,對3號訂單執行類似上面的語句后會報錯:

    UPDATE invoices_with_balance SET payment_total = invoice_total WHERE invoice_id = 3-- Error Code: 1369. CHECK OPTION failed 'sql_invoicing.invoices_with_balance'

    5. 視圖的其他優點

    Other Benefits of Views (2:37)

    小結

    三大優點:

    簡化查詢、增加抽象層和減少變化的影響、數據安全性

    具體來講:

  • (首要優點)簡化查詢 simplify queries
  • 增加抽象層,減少變化的影響 Reduce the impact of changes:視圖給表增加了一個抽象層(模塊化),這樣如果數據庫設計改變了(如一個字段從一個表轉移到了另一個表),只需修改視圖的查詢語句使其能保持原有查詢結果即可,不需要修改使用這個視圖的那幾十個查詢。相反,如果沒有視圖這一層的話,所有查詢將直接使用指向原表的原始查詢語句,這樣一旦更改原表設計,就要相應地更改所有的這些查詢。
  • 限制對原數據的訪問權限 Restrict access to the data:在視圖中可以對原表的行和列進行篩選,這樣如果你禁止了對原始表的訪問權限,用戶只能通過視圖來修改數據,他們就無法修改視圖中未返回的那些字段和記錄。但注意這通常并不簡單,需要良好的規劃,否則最后可能搞得一團亂。
  • 了解這些優點,但不要盲目將他們運用在所有的情形中。

    導航

    下一章將講解儲存過程和函數


    上一級目錄:Mosh_完全掌握SQL課程_學習筆記

    其它相關:數據概要

    總結

    以上是生活随笔為你收集整理的abap视图字段限制_【第八章】视图的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 琪琪射| 精品自拍视频 | 日日碰日日操 | 在线亚洲色图 | 俺来也在线视频 | 国产成人aa| 91麻豆蜜桃一区二区三区 | www.男人天堂.com| 精品人妻一区二区色欲产成人 | 国产真实乱在线更新 | 老司机在线免费视频 | 亚洲另类在线观看 | 97人妻人人澡人人爽人人精品 | 少妇媚药按摩中文字幕 | 国产在线视频99 | 日韩欧美中字 | 男女性网站 | 国产农村妇女精品久久久 | 青娱乐毛片 | 国产又粗又猛又黄又爽的视频 | 美日韩在线观看 | 一级黄色网址 | 95看片淫黄大片一级 | 激情五月在线观看 | 国产九九热视频 | 国产日产欧美一区二区 | 日本一级视频 | 韩国精品视频在线观看 | 综合色婷婷 | 久久久久网站 | 天堂伊人网 | 久久精品片 | aaa国产 | 免费观看成人av | 国产成人av无码精品 | 黄色国产片 | 日韩欧美国产成人精品免费 | 丰满大乳少妇在线观看网站 | 欧美人吸奶水吃奶水 | 在线三级av | 一本久久久 | 打屁股av| 主人性调教le百合sm | 国产精品久久久久无码av色戒 | 五月婷婷激情 | 超碰77 | 天天爽夜夜爽夜夜爽精品视频 | 理论片久久 | 国产免费91| 亚洲第一成肉网 | 秋霞网av | 少妇2做爰hd韩国电影 | 激情网站视频 | 激情开心成人网 | 朝桐光av一区二区三区 | 在线看中文字幕 | 亚洲经典三级 | av网站网址| 国产欧美精品一区二区 | 国产在线精品二区 | 中文字幕 欧美日韩 | 越南av| 黑人多p混交群体交乱 | 日本一级一片免费视频 | 国产精品国产自产拍高清av | 日本成人午夜视频 | 韩国久久精品 | 少妇激情偷人三级 | 在线免费观看黄视频 | 公交上高潮的丁芷晴 | 日韩视频精品在线 | 国产精品免费无遮挡无码永久视频 | 日韩一区二区在线观看视频 | 西西大胆午夜视频 | 欧美日韩精品在线播放 | 操欧美美女 | 国产视频四区 | 亚洲欧美日韩国产综合 | 视色影视 | 午夜精品在线 | 国产人妖av | 友田真希一区二区 | 波多野结衣av在线免费观看 | 天天操国产 | 日韩精品一区二区三区高清免费 | 一区二区三区久久久久 | 中文字幕高清在线观看 | 另类国产 | 伊人久久国产精品 | 无码无遮挡又大又爽又黄的视频 | 伊人久久婷婷 | 免费爱爱视频网站 | 乱色专区| 亚洲色图欧美 | xnxx国产| 亚洲精品成人片在线观看精品字幕 | 综合网亚洲| 少妇系列av | 激情春色网 |