萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 視圖操作全攻略:創建、刪除、查看、權限與 PHP 調用示例

視圖本質

視圖是虛擬表,不存儲物理數據,內容由 SELECT 定義動態生成。作用:安全隔離(隱藏敏感列)、簡化復雜查詢、邏輯復用。

核心 SQL 語法

創建/替換視圖

CREATE [OR REPLACE] 
[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION];
  • ALGORITHM:MERGE(合併查詢,可更新)、TEMPTABLE(物化臨時表、不可更新)、UNDEFINED(默認,優化器決定)。
  • WITH CHECK OPTION:插入/更新時檢查是否符合視圖定義條件。

刪除視圖

DROP VIEW [IF EXISTS] view_name [, view_name] ... [RESTRICT | CASCADE];

查看視圖定義

SHOW CREATE VIEW view_name;

查看所有視圖

SHOW TABLES;              -- 混合顯示表與視圖
SHOW FULL TABLES WHERE Table_type = 'VIEW';  -- 僅視圖

PHP mysqli 調用示例

<?php
$mysqli = new mysqli("localhost", "root", "123456", "xiaoqiangdb");
$sql = "SELECT * FROM myview ORDER BY chengji";
$result = $mysqli->query($sql);

echo '<table align="center" border="1">';
while ($row = $result->fetch_assoc()) {
    echo '<tr>';
    foreach ($row as $col) {
        echo '<td>' . htmlspecialchars($col) . '</td>';
    }
    echo '</tr>';
}
echo '</table>';
$mysqli->close();
?>

權限控制

  • 創建視圖需 CREATE VIEW 權限。
  • 查詢視圖需 SELECT 權限(基表也需)。
  • 可更新視圖需對基表有 INSERT/UPDATE/DELETE 權限。
  • 刪除視圖需 DROP 權限。

進階:可更新視圖條件

視圖可更新需滿足:無聚合/去重/分組/聯合/子查詢(FROM 子句)、無非確定性函數、基表有主鍵且視圖包含主鍵列等。詳細見官方文檔「Updatable Views」。

copyright © 萬盛學電腦網 all rights reserved