連接表、視圖和存儲過程

1. 視圖

1.1. 視圖的概念

視圖(View):虛擬表,本身不存儲數據,而是封裝了一個 SQL 查詢的結果集。

用途

  • 只顯示部分數據,提高數據訪問的安全性
  • 簡化復雜查詢,提高復用性可維護性
  • 可為不同用戶提供不同的數據視圖。

虛擬表的創建連接了一個或多個數據表,不同的查詢應用都可以建立在虛擬表之上。

1.2. 創建、更新和刪除視圖

1. 創建視圖:CREATE VIEW

CREATE VIEW view_name AS
SELECT column1, column2
FROM table
WHERE condition;

嵌套視圖:

當創建好一張視圖之后,還可以在它的基礎上繼續創建視圖。

2. 修改視圖:ALTER VIEW

ALTER VIEW view_name AS
SELECT column1, column2
FROM table
WHERE condition

3. 刪除視圖:DROP VIEW

DROP VIEW view_name

1.3. 用視圖簡化SQL操作

1. 復雜連接視圖封裝

? 示例:封裝球員與身高等級的連接

CREATE VIEW player_height_grades AS
SELECT p.player_name, p.height, h.height_level
FROM player AS p
JOIN height_grades AS h
ON p.height BETWEEN h.height_lowest AND h.height_highest;

查詢:

SELECT * FROM player_height_grades WHERE height BETWEEN 1.90 AND 2.08;

2. 格式化輸出視圖

? 示例:拼接球員姓名和球隊名稱

CREATE VIEW player_team AS
SELECT CONCAT(player_name, '(', team.team_name, ')') AS player_team
FROM player JOIN team
ON player.team_id = team.team_id;

3. 計算字段封裝

? 示例:統計球員比賽得分組成

CREATE VIEW game_player_score AS
SELECT game_id, player_id,(shoot_hits - shoot_3_hits)*2 AS shoot_2_points,shoot_3_hits*3 AS shoot_3_points,shoot_p_hits AS shoot_p_points,score
FROM player_score;

1.4. 視圖的優點、與臨時表的區別

視圖的優點:

1. 安全性:

  • 視圖通常為只讀,避免誤改數據。
  • 可基于權限控制字段訪問。

2. 簡潔性與復用性:

  • 簡化復雜 SQL。
  • 可嵌套定義,便于模塊化管理。

視圖與臨時表的區別:

特性

視圖(View)

臨時表(Temporary Table)

是否存儲數據

否,虛擬表,實時查詢結果

是,存儲在臨時空間

生命周期

持久存在(除非 DROP)

僅當前會話存在,連接關閉即消失

用途

封裝查詢邏輯,數據隔離

存放臨時數據,如中間計算結果

支持修改數據

限制較多(如包含聚合、連接)

支持普通數據操作(增刪改查)

索引支持

大多不支持索引

通常支持索引

示例應用場景:

視圖:給銷售人員只顯示價格、銷量,不顯示成本。

臨時表:購物車臨時保存每個用戶選購的商品數據。

2. 存儲過程 Stored Procedure

2.1. 存儲過程的定義

定義:SQL 中對一組語句的封裝,可通過一次定義,多次調用,像函數一樣執行。

結構組成:包含 SQL 語句、流控制語句(如循環、條件判斷等)。

使用方式

CREATE PROCEDURE proc_name ([參數])
BEGIN-- 語句塊
END

2.2. 存儲過程的優缺點

優點:

? 1. 一次編譯,多次執行

提前編譯后存儲在數據庫中,后續調用無需重新解析,提高執行效率

? 2. 封裝邏輯,提升復用性

可將復雜邏輯封裝成過程,結構清晰、易于維護與復用,有利于模塊化開發。

? 3. 減少開發工作量

開發者只需調用過程,避免重復寫 SQL,提高開發效率

? 4. 增強數據安全性

可設置權限控制,用戶只能訪問授權存儲過程,不直接操作底層表。

? 5. 降低網絡通信成本

客戶端只需一次調用,無需多次發送復雜 SQL,節省網絡帶寬與響應時間。

? 6. 適合執行復雜業務邏輯

封裝控制流程(IF、LOOP、CASE)更容易組織復雜業務規則。

缺點:

?? 1. 可移植性差

不同數據庫的語法和支持程度不同(如 MySQL 與 Oracle 存儲過程差異大),跨平臺遷移困難

?? 2. 調試不方便

多數數據庫缺少完善的調試工具,過程內錯誤排查困難,調試成本高

?? 3. 版本管理困難

存儲過程通常不受代碼版本控制系統(如 Git)管理,迭代不透明、易錯難追蹤

?? 4. 維護成本高

對團隊協作和文檔要求高,邏輯變更需謹慎更新過程,否則容易造成邏輯失效。

?? 5. 不適合高并發環境

高并發場景更強調可擴展性與解耦,存儲過程綁定數據庫邏輯,難以靈活應對分庫分表等架構。

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

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

相關文章

微信小程序中,解決lottie動畫在真機不顯示的問題

api部分 export function getRainInfo() {return onlineRequest({url: /ball/recruit/getRainInfo,method: get}); }data存儲json數據 data:{rainJson:{} }onLoad方法獲取json數據 onLoad(options) {let that thisgetRainInfo().then((res)>{that.setData({r…

從加密到信任|密碼重塑車路云一體化安全生態

目錄 一、密碼技術的核心支撐 二、典型應用案例 三、未來發展方向 總結 車路云系統涉及海量實時數據交互,包括車輛位置、傳感器信息、用戶身份等敏感數據。其安全風險呈現三大特征: 開放環境威脅:V2X(車與萬物互聯&#xff0…

光譜相機在地質勘測中的應用

一、?礦物識別與蝕變帶分析? ?光譜特征捕捉? 通過可見光至近紅外(400-1000nm)的高光譜分辨率(可達3.5nm),精確識別礦物的“光譜指紋”。例如: ?銅礦?:在400-500nm波段反射率顯著低于圍…

理論篇三:如何編寫自定義的Webpack Loader或Plugin插件

在 Webpack 中,自定義 Loader 和 Plugin 是擴展構建能力的關鍵方式。以下是它們的實現方法和核心邏輯,通過代碼示例和步驟拆解幫助你快速掌握。 一、自定義 Loader 1. Loader 的本質 作用:將非 JS 文件轉換為 Webpack 能處理的模塊。特點:純函數,接收源文件內容,返回處理…

【算法】力扣體系分類

第一章 算法基礎題型 1.1 排序算法題 1.1.1 冒泡排序相關題 冒泡排序是一種簡單的排序算法,它重復地走訪過要排序的數列,一次比較兩個元素,如果它們的順序錯誤就把它們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換&#xff0c…

C11 日期時間處理案例

文章目錄 顯示當前日期時間得到當前日期時間的17位數字形式(YYYYmmddHHMMSSsss)從日期時間字符串得到time_t 類型時間戳從時期時間字符串得到毫秒單位的時間戳得到當前日期時間以毫秒為單位的時間戳一個綜合案例 所有例子在VS2019上編譯運行通過 顯示當前日期時間 #include &…

Python 訓練營打卡 Day 34

GPU訓練及類的call方法 一、GPU訓練 與day33采用的CPU訓練不同,今天試著讓模型在GPU上訓練,引入import time比較兩者在運行時間上的差異 import torch # 設置GPU設備 device torch.device("cuda:0" if torch.cuda.is_available() else &qu…

Ubuntu22.04 系統安裝Docker教程

1.更新系統軟件包 #確保您的系統軟件包是最新的。這有助于避免安裝過程中可能遇到的問題 sudo apt update sudo apt upgrade -y 2.安裝必要的依賴 sudo apt install apt-transport-https ca-certificates curl software-properties-common -y 3.替換軟件源 原來/etc/apt/s…

深入解析前端 JSBridge:現代混合開發的通信基石與架構藝術

引言:被低估的通信革命 在移動互聯網爆發式增長的十年間,Hybrid App(混合應用)始終占據著不可替代的地位。作為連接 Web 與 Native 的神經中樞,JSBridge 的設計質量直接決定了應用的性能上限與開發效率。本文將突破傳…

ES 面試題系列「三」

1、在設計 Elasticsearch 索引時,如何考慮數據的建模和映射? 需要根據業務需求和數據特點來確定索引的結構。首先要分析數據的類型,對于結構化數據,如數字、日期等,要明確其數據格式和范圍,選擇合適的字段…

HTML5快速入門-常用標簽及其屬性(三)

HTML5快速入門-常用標簽及其屬性(三) 文章目錄 HTML5快速入門-常用標簽及其屬性(三)音視頻標簽&#x1f3a7; <audio> 標簽 — 插入音頻使用 <source> 提供多格式備選&#xff08;提高兼容性&#xff09;&#x1f3a5; <video> 標簽 — 插入視頻&#x1f3b5…

Qt文件:XML文件

XML文件 1. XML文件結構1.1 基本結構1.2 XML 格式規則1.3 XML vs HTML 2. XML文件操作2.1 DOM 方式&#xff08;QDomDocument&#xff09;讀取 XML寫入XML 2.2 SAX 方式&#xff08;QXmlStreamReader/QXmlStreamWriter&#xff09;讀取XML寫入XML 2.3 對比分析 3. 使用場景3.1 …

day24Node-node的Web框架Express

1. Express 基礎 1.1 什么是Express node的web框架有Express 和 Koa。常用Express 。 Express 是一個基于 Node.js 的快速、極簡的 Web 應用框架,用于構建 服務器端應用(如網站后端、RESTful API 等)。它是 Node.js 生態中最流行的框架之一,以輕量、靈活和易用著稱。 …

uniapp實現的簡約美觀的票據、車票、飛機票模板

采用 uniapp 實現的一款簡約美觀的票據模板&#xff0c;純CSS、HTML實現&#xff0c;用戶完全可根據自身需求進行更改、擴展&#xff1b;支持web、H5、微信小程序&#xff08;其他小程序請自行測試&#xff09;&#xff0c; 可到插件市場下載嘗試&#xff1a; https://ext.dclo…

esp32+IDF V5.1.1版本編譯freertos報錯

error: portTICK_RATE_MS undeclared (first use in this function); did you mean portTICK_PERIOD_MS 解決方法: 使用命令 idf.py menuconfig 打開配置界面配置freeRtos 使能configENABLE_BACKWARD_COMPATIBLITY

vue 水印組件

Watermark.vue <script setup lang"ts"> import { ref, onMounted, onUnmounted, watch } from vue;interface Props {text?: string;fontSize?: number;color?: string;rotate?: number;zIndex?: number;gap?: number; }const props withDefaults(def…

hbuilder中h5轉為小程序提交發布審核

【注意】 [HBuilder] 11:59:15.179 此應用 DCloud appid 為 __UNI__9F9CC77 &#xff0c;您不是這個應用的項目成員。1、聯系這個應用的所有者&#xff0c;請求加入項目成員&#xff08;https://dev.dcloud.net.cn "成員管理"-"添加項目成員"&#xff09;…

QT之INI、JSON、XML處理

文章目錄 INI文件處理寫配置文件讀配置文件 JSON 文件處理寫入JSON讀取JSON XML文件處理寫XML文件讀XML文件 INI文件處理 首先得引入QSettings QSettings 是用來存儲和讀取應用程序設置的一個類 #include "wrinifile.h"#include <QSettings> #include <QtD…

道德經總結

道德經 《道德經》是中國古代偉大哲學家老子所著&#xff0c;全書約五千字&#xff0c;共81章&#xff0c;分為“道經”&#xff08;1–37章&#xff09;和“德經”&#xff08;38–81章&#xff09;兩部分。 《道德經》是一部融合哲學、政治、人生智慧于一體的經典著作。它提…

行為型:迭代器模式

目錄 1、核心思想 2、實現方式 2.1 模式結構 2.2 實現案例 3、優缺點分析 4、適用場景 1、核心思想 目的&#xff1a;將遍歷邏輯與數據存儲結構解耦 概念&#xff1a;提供一種機制來按順序訪問集合中的各元素&#xff0c;而不需要知道集合內部的構造 舉例&#xff1a;…