您好,登錄后才能下訂單哦!
本篇內容介紹了“mysql視圖的作用是什么及怎么創建”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
常見的數據庫對象
視圖的作用
1、視圖一方面可以幫我們使用表的一部分而不是所有的表,另一方面也可以針對不同的用戶制定不同的查詢視圖 2、視圖是一種 虛擬表 ,本身是 不具有數據 的,占用很少的內存空間,它是 SQL 中的一個重要概念 3、視圖建立在已有表的基礎上, 視圖賴以建立的這些表稱為基表 4、視圖的創建和刪除只影響視圖本身,不影響對應的基表。但是當對視圖中的數據進行增加、刪除和修改操作時,數據表中的數據會相應地發生變化,反之亦然 5、向視圖提供數據內容的語句為 SELECT 語句, 可以將視圖理解為存儲起來的 SELECT 語句 6、在數據庫中,視圖不會保存數據,數據真正保存在數據表中。當對視圖中的數據進行增加、刪除和修改操作時,數據表中的數據會相應地發生變化;反之亦然 7、視圖,是向用戶提供基表數據的另一種表現形式。通常情況下,小型項目的數據庫可以不使用視圖,但是在大型項目中,以及數據表比較復雜的情況下,視圖的價值就凸顯出來了,它可以幫助我們把經常查詢的結果集放到虛擬表中,提升使用效率。理解和使用起來都非常方便
格式
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW 視圖名稱 [(字段列表)] AS 查詢語句 [WITH [CASCADED|LOCAL] CHECK OPTION]
代碼案例
# 針對于單表 # 方式1:視圖中的字段與基表的字段有對應關系 CREATE VIEW vu_emp1 AS SELECT employee_id, last_name, salary FROM emps; # 確定視圖中字段名的方式1: CREATE VIEW vu_emp2 AS SELECT employee_id emp_id, last_name lname, salary #查詢語句中字段的別名會作為視圖中字段的名稱出現 FROM emps WHERE salary > 8000; # 確定視圖中字段名的方式2: CREATE VIEW vu_emp3(emp_id,NAME,monthly_sal) #小括號內字段個數與SELECT中字段個數相同 AS SELECT employee_id,last_name,salary FROM emps WHERE salary > 8000; # 方式2:視圖中的字段在基表中可能沒有對應的字段 CREATE VIEW vu_emp_sal AS SELECT department_id,AVG(salary) avg_sal FROM emps WHERE department_id IS NOT NULL GROUP BY department_id; # 針對于多表 CREATE VIEW vu_emp_dept AS SELECT e.employee_id, e.department_id, d.department_name FROM emps e JOIN depts d ON e.`department_id` = d.`department_id`; # 利用視圖對數據進行格式化 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 employee_id, last_name FROM vu_emp1;
查看視圖
# 語法1:查看數據庫的表對象、視圖對象 SHOW TABLES; # 語法2:查看視圖的結構 DESCRIBE vu_emp1; # 語法3:查看視圖的屬性信息 SHOW TABLE STATUS LIKE 'vu_emp1'; # 語法4:查看視圖的詳細定義信息 SHOW CREATE VIEW vu_emp1;
"更新"視圖中的數據
# 一般情況,可以更新視圖的數據 # 更新視圖的數據,會導致基表中數據的修改 UPDATE vu_emp1 SET salary = 20000 WHERE employee_id = 101; # 同理,更新表中的數據,也會導致視圖中的數據的修改 UPDATE emps SET salary = 10000 WHERE employee_id = 101; # 刪除視圖中的數據,也會導致表中的數據的刪除 DELETE FROM vu_emp1 WHERE employee_id = 101; # 不能更新視圖中的數據 # 更新失敗,avg_sal只是1個平均數,基表中不存在該字段 UPDATE vu_emp_sal SET avg_sal = 5000 WHERE department_id = 30; # 刪除失敗,可能基表中不存在department_id DELETE FROM vu_emp_sal WHERE department_id = 30;
修改視圖,會覆蓋原有的視圖
# 方式1 CREATE OR REPLACE VIEW vu_emp1 AS SELECT employee_id, last_name, salary, email FROM emps WHERE salary > 7000; # 方式2 ALTER VIEW vu_emp1 AS SELECT employee_id, last_name, salary, email, hire_date FROM emps;
刪除視圖
# 方式1 DROP VIEW vu_emp4; # 方式2 DROP VIEW IF EXISTS vu_emp2,vu_emp3;
“mysql視圖的作用是什么及怎么創建”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。