常見的資料庫物件
物件 | 描述 |
---|---|
#表( TABLE) | 表是儲存資料的邏輯單元,以行和列的形式存在,列就是字段,行就是記錄 |
資料字典 | 就是系統表,存放資料庫相關資訊的表。系統表的資料通常由資料庫系統維護, 程式設計師通常不應該修改,只可查看 |
#約束(CONSTRAINT) | 執行資料校驗的規則,用於保證資料完整性的規則 |
視圖(VIEW) | 一個或多個資料表裡的資料的邏輯顯示,視圖並不會儲存資料 |
索引(INDEX) | 用於提高查詢效能,相當於書籍的目錄 |
預存程序(PROCEDURE) | 用於完成一次完整的業務處理,沒有傳回值,但可透過傳出參數將多個值傳給呼叫環境 |
儲存函數(FUNCTION) | 用於完成一次特定的計算,具有一個返回值 |
觸發器(TRIGGER) | 相當於一個事件監聽器,當資料庫發生特定事件後,觸發器被觸發,完成對應的處理 |
視圖的概念
視圖是一種 虛擬表 ,本身是 不具有資料 的,佔用很少的記憶體空間,它是 SQL 中的重要概念。
視圖建立在已有表的基礎上, 視圖賴以建立的這些表稱為基底表。
視圖的建立和刪除只會影響視圖本身,不影響對應的基底表。當在視圖上執行增加、刪除、修改(DML)操作時,視圖中的資料會相應地更新,反之亦然,資料表中的資料也會發生變化。
視圖提供資料內容的語句為 SELECT 語句, 可以將視圖理解為儲存起來的 SELECT 語句
在資料庫中,檢視不會保存數據,資料真正保存在資料表中。如果對資料表中的資料進行增加、刪除或修改操作,視圖中的資料也會相應地變更。反之亦然。
視圖,是向使用者提供基底表資料的另一種表現形式。通常情況下,小型專案的資料庫可以不使用視圖,但是在大型專案中,以及資料表比較複雜的情況下,視圖的價值就凸顯出來了,它可以幫助我們把經常查詢的結果集放到虛擬表中,提升使用效率。理解和使用起來都非常方便。
建立檢視
查詢語句中欄位的別名會作為檢視的別名出現
CREATE VIEW vu_emps AS SELECT employee_id,last_name,salary FROM emps;
CREATE VIEW vu_emps2(emp_id,name,monthly_sal) AS SELECT employee_id,last_name,salary FROM emps;
針對多表的檢視建立
CREATE VIEW vu_emp_dept AS SELECT employee_id,e.department_id,department_name FROM emps e JOIN depts d ON e.department_id = d.department_id; SELECT * FROM vu_emp_dept;
利用檢視對資料進行格式化
CREATE VIEW vu_emp_dept1 AS SELECT CONCAT(e.last_name,'(',d.department_name,')') emp_info FROM emps e JOIN depts d ON e.department_id = d.department_id;
基於視圖建立視圖
CREATE VIEW vu_emp4 AS SELECT department_id,department_name FROM vu_emp_dept; SELECT * FROM vu_emp4;
查看視圖
#查看資料庫的表對象,視圖對象
SHOW TABLES;
查看資料庫結構
#DESC vu_emp4;
查看數據的屬性資訊
mysql> SHOW TABLE STATUS LIKE 'vu_emp4'\G; *************************** 1. row *************************** Name: vu_emp4 Engine: NULL Version: NULL Row_format: NULL Rows: NULL Avg_row_length: NULL Data_length: NULL Max_data_length: NULL Index_length: NULL Data_free: NULL Auto_increment: NULL Create_time: NULL Update_time: NULL Check_time: NULL Collation: NULL Checksum: NULL Create_options: NULL Comment: VIEW 1 row in set (0.00 sec) ERROR: No query specified
查看視圖的詳細定義資訊
mysql> SHOW CREATE VIEW vu_emp4\G; *************************** 1. row *************************** View: vu_emp4 Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`%` SQL SECURITY DEFINER VIEW `vu_emp4` AS select `vu_emp_dept`.`department_id` AS `department_id`,`vu_emp_dept`.`department_name` AS `department_name` from `vu_emp_dept` character_set_client: utf8 collation_connection: utf8_general_ci 1 row in set (0.00 sec) ERROR: No query specified
更新視圖數據
更新視圖中的數據,會導致基表中數據的修改
更新表中的數據,也會導致視圖中的數據的修改
為了使視圖是可更新的,視圖中的每一行必須對應於基本表中的一行並且兩者之間存在一對一的關係。另外當視圖定義出現如下情況時,視圖不支援更新操作:
在定義視圖的時候指定了“ALGORITHM = TEMPTABLE”,視圖將不支援INSERT和DELETE操作;
檢視中不包含基底表中所有定義為非空白又未指定預設值的資料列,檢視將不支援INSERT運算;
在定義視圖的SELECT語句中使用了JOIN聯合查詢,視圖將不支援INSERT和DELETE操作;
在定義視圖的SELECT語句後的欄位清單中使用了數學表達式或子查詢,視圖將不支援INSERT,也不支援UPDATE使用了數學運算式、子查詢的欄位值;
在定義檢視的SELECT語句後的欄位清單中使用DISTINCT 、 聚合函數、 GROUP BY 、 HAVING 、 UNION 等,視圖將不支援INSERT、UPDATE、DELETE;
在定義視圖的SELECT語句中包含了子查詢,而子查詢中引用了FROM後面的表,視圖將不支援INSERT、UPDATE、DELETE;
視圖定義基於一個不可更新視圖;常數視圖。
雖然視圖可以進行資料更新,但整體而言,視圖作為虛擬表主要用於方便查詢,不建議進行視圖資料的更新。對視圖資料的更改,都是透過對實際資料表裡資料的操作來完成的。
修改視圖
方式1:使用CREATE OR REPLACE VIEW 子句修改視圖
CREATE OR REPLACE VIEW empvu80 (id_number, name, sal, department_id) AS SELECT employee_id, first_name || ' ' || last_name, salary, department_id FROM employees WHERE department_id = 80;
CREATE OR REPLACE VIEW vu_emp4 AS SELECT CONCAT(e.last_name,'(',d.department_name,')') emp_info FROM emps e JOIN depts d ON e.department_id = d.department_id;
說明:CREATE VIEW 子句中各列的別名應和子查詢中各列相對應。
方式2:ALTER VIEW
修改視圖的語法是:
##ALTER VIEW 視圖名稱
AS
查詢語句
ALTER VIEW vu_emp4 AS SELECT CONCAT(e.last_name,'(',d.department_name,')') emp_info FROM emps e JOIN depts d ON e.department_id = d.department_id;
刪除視圖
DROP VIEW vu_emp4; DROP VIEW IF EXISTS vu_emp1;
視圖的優缺點
優點:
操作簡單
減少資料冗餘
資料安全性
#適應靈活多變的需求
能夠分解複雜的查詢邏輯
缺點:
#維護成本高
- ##可讀性不好
以上是MySQL視圖的概念和操作函數有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

MySQL索引基数对查询性能有显著影响:1.高基数索引能更有效地缩小数据范围,提高查询效率;2.低基数索引可能导致全表扫描,降低查询性能;3.在联合索引中,应将高基数列放在前面以优化查询。

MySQL學習路徑包括基礎知識、核心概念、使用示例和優化技巧。 1)了解表、行、列、SQL查詢等基礎概念。 2)學習MySQL的定義、工作原理和優勢。 3)掌握基本CRUD操作和高級用法,如索引和存儲過程。 4)熟悉常見錯誤調試和性能優化建議,如合理使用索引和優化查詢。通過這些步驟,你將全面掌握MySQL的使用和優化。

MySQL在現實世界的應用包括基礎數據庫設計和復雜查詢優化。 1)基本用法:用於存儲和管理用戶數據,如插入、查詢、更新和刪除用戶信息。 2)高級用法:處理複雜業務邏輯,如電子商務平台的訂單和庫存管理。 3)性能優化:通過合理使用索引、分區表和查詢緩存來提升性能。

MySQL中的SQL命令可以分為DDL、DML、DQL、DCL等類別,用於創建、修改、刪除數據庫和表,插入、更新、刪除數據,以及執行複雜的查詢操作。 1.基本用法包括CREATETABLE創建表、INSERTINTO插入數據和SELECT查詢數據。 2.高級用法涉及JOIN進行表聯接、子查詢和GROUPBY進行數據聚合。 3.常見錯誤如語法錯誤、數據類型不匹配和權限問題可以通過語法檢查、數據類型轉換和權限管理來調試。 4.性能優化建議包括使用索引、避免全表掃描、優化JOIN操作和使用事務來保證數據一致性

InnoDB通過undolog實現原子性,通過鎖機制和MVCC實現一致性和隔離性,通過redolog實現持久性。 1)原子性:使用undolog記錄原始數據,確保事務可回滾。 2)一致性:通過行級鎖和MVCC確保數據一致。 3)隔離性:支持多種隔離級別,默認使用REPEATABLEREAD。 4)持久性:使用redolog記錄修改,確保數據持久保存。

MySQL在數據庫和編程中的地位非常重要,它是一個開源的關係型數據庫管理系統,廣泛應用於各種應用場景。 1)MySQL提供高效的數據存儲、組織和檢索功能,支持Web、移動和企業級系統。 2)它使用客戶端-服務器架構,支持多種存儲引擎和索引優化。 3)基本用法包括創建表和插入數據,高級用法涉及多表JOIN和復雜查詢。 4)常見問題如SQL語法錯誤和性能問題可以通過EXPLAIN命令和慢查詢日誌調試。 5)性能優化方法包括合理使用索引、優化查詢和使用緩存,最佳實踐包括使用事務和PreparedStatemen

MySQL適合小型和大型企業。 1)小型企業可使用MySQL進行基本數據管理,如存儲客戶信息。 2)大型企業可利用MySQL處理海量數據和復雜業務邏輯,優化查詢性能和事務處理。

InnoDB通過Next-KeyLocking機制有效防止幻讀。 1)Next-KeyLocking結合行鎖和間隙鎖,鎖定記錄及其間隙,防止新記錄插入。 2)在實際應用中,通過優化查詢和調整隔離級別,可以減少鎖競爭,提高並發性能。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

Dreamweaver CS6
視覺化網頁開發工具

WebStorm Mac版
好用的JavaScript開發工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

禪工作室 13.0.1
強大的PHP整合開發環境