什么是嵌入式SQL和動態SQL?SQL語句是如何處理的?

      許多人在使用數據庫,但他們實際上并不了解靜態 SQL 和動態 SQL 之間的區別。它們的目的是獲取查詢的輸出,無論是靜態的還是動態的。在本文中,您將通過詳細討論了解靜態與動態 SQL 查詢、SQL 語句的處理方式、動態 DBMS(數據庫管理系統)、靜態與動態報告以及應用程序的嵌入式 SQL 示例。

      什么是嵌入式SQL和動態SQL?SQL語句是如何處理的?-南華中天

      什么是嵌入式 SQL?

      嵌入式或靜態 SQL 查詢是那些在執行或運行時不會更改并且可以硬編碼(其中數據或參數不能更改)到不同應用程序中的指令。

      嵌入式 SQL 應用程序

      考慮一個嵌入式應用程序的示例,其中語句主要嵌入在 C++ 源文件中,其中預處理器將語句轉換為對運行時庫的調用。它可移植到其他環境,并為每個操作環境提供相同的功能。

      嵌入式 SQL 應用程序由 SQL 語句組成,這些語句在編譯之前被轉換為 C 或 C++ 代碼。如圖所示,運行時的應用程序使用 SAP IQ 接口庫,該庫稱為 DBLIB,用于與數據庫服務器進行通信。DBLIB 是一個動態鏈接庫 (DLL),可以在所有主要平臺上共享。

      什么是動態 SQL?

      顧名思義,它是一種允許專業人員構建可在運行時動態更改的 SQL 語句的技術。動態查詢是可以在執行或運行時構造的語句;例如,應用程序可能允許用戶在執行時運行他們自己的查詢。

      什么是動態數據庫管理系統?

      動態 DBMS 是一個具有“基于值”的對象關系的數據庫,它在檢索時指定,并且在檢索期間發現相關記錄的位置。

      下列關于靜態和動態報表的說法不準確的是?

      打印的銷售分析是動態報告的一個例子,是關于靜態和動態報告的錯誤陳述。以下關于報告的陳述屬實:

      • 靜態報告作為 PDF 文檔或在創建時固定的商業智能 (BI) 文檔發布,因此這些報告不會被修改。
      • 發布動態報表需要商業智能 (BI) 應用程序在交付給用戶時訪問數據源。
      • 永遠記住,印刷銷售分析是靜態報告的一個例子。
      • 動態報告是商業智能 (BI) 文檔,并在用戶請求此文件時更新。

      SQL 語句是如何處理的?

      在繼續下一步之前,有必要了解結構化查詢語言語句是如何處理的。

      1.解析語句

      例如,用戶想要運行以下查詢:

      選擇 P、Q、R

      從甲,乙

      其中 P> 800

      和 R = 'XYZ'

      DBMS 會將查詢解析為單個單詞,稱為標記,以確保語句沒有拼寫錯誤和語法錯誤。這將很快完成,因為在解析語句時無需訪問數據庫。

      2. 驗證聲明

      數據庫管理系統將檢查表(在我們的示例表 A 和 B 的情況下)是否存在于數據庫(系統目錄)中?用戶是否有權運行這些語句?DBMS 驗證列名沒有歧義并且存在。

      3.優化語句

      DBMS 通過探索不同的方式來優化語句。可以使用索引(主鍵)來加快搜索速度嗎?數據庫管理系統應該先對第一個表應用搜索條件,然后將其連接到第二個表,還是應該從連接開始,然后使用條件?在探索了所有可能的條件之后,DBMS 會選擇一個更合適的。它可能會為同一個查詢探索數千種可能的不同方式,因此它是一個 CPU 密集型過程。

      4.訪問計劃或二進制形式

      在此步驟中,將生成 SQL 語句的訪問計劃或二進制形式。

      5. 訪問計劃的執行

      在最后一步,將執行訪問計劃。

      嵌入式 SQL 和動態 SQL 之間的基本區別

      靜止的 動態的
      在靜態或嵌入式 SQL 中,如何訪問數據庫是在嵌入式 SQL 語句中預先確定的,并由預處理器執行,用戶無法在運行時運行查詢。 如何訪問數據庫是在運行時確定的,用戶還可以在運行時運行結構化查詢語言指令。
      它更快捷、更高效。 它不那么迅速和高效。
      所有數據庫查詢都是在編譯時編譯的。 所有數據庫查詢都是在應用程序運行時編譯的。
      包括解析、驗證、優化和生成應用程序訪問計劃在內的所有過程都在編譯時完成。 所有過程,包括解析、驗證、優化和生成應用程序訪問計劃(SQL 查詢的二進制形式)都在運行時完成。
      它主要用于數據分布一致的情況。 它用于數據分布不均勻的情況。
      不使用 PREPARE、EXECUTE 和 EXECUTE IMMEDIATE 語句。 使用 PREPARE、EXECUTE 和 EXECUTE IMMEDIATE 語句。
      由于硬編碼到應用程序中,它不太靈活。 我們可以在運行時運行我們的 SQL 語句,因此更加靈活。