Rumah >pangkalan data >tutorial mysql >Apakah konsep dan fungsi pengendalian pandangan MySQL?
对象 | 描述 |
---|---|
表(TABLE) | 表是存储数据的逻辑单元,以行和列的形式存在,列就是字段,行就是记录 |
数据字典 | 就是系统表,存放数据库相关信息的表。系统表的数据通常由数据库系统维护, 程序员通常不应该修改,只可查看 |
约束 (CONSTRAINT) | 执行数据校验的规则,用于保证数据完整性的规则 |
视图(VIEW) | 一个或者多个数据表里的数据的逻辑显示,视图并不存储数据 |
索引(INDEX) | 用于提高查询性能,相当于书的目录 |
存储过程 (PROCEDURE) | 用于完成一次完整的业务处理,没有返回值,但可通过传出参数将多个值传给调 用环境 |
存储函数 (FUNCTION) | 用于完成一次特定的计算,具有一个返回值 |
触发器 (TRIGGER) | 相当于一个事件监听器,当数据库发生特定事件后,触发器被触发,完成相应的处理 |
Pandangan ialah jadual maya yang tidak mempunyai data sendiri dan menempati ruang memori yang sangat sedikit. Ia merupakan konsep penting dalam SQL.
Paparan dibina pada jadual sedia ada, dan jadual di atasnya paparan ini dipanggil jadual asas.
Penciptaan dan pemadaman pandangan hanya mempengaruhi paparan itu sendiri dan tidak menjejaskan jadual asas yang sepadan. Apabila operasi tambah, padam, ubah suai (DML) dilakukan pada paparan, data dalam paparan akan dikemas kini dengan sewajarnya, dan sebaliknya, data dalam jadual data juga akan berubah.
Pernyataan bahawa paparan menyediakan kandungan data ialah pernyataan SELECT Pandangan boleh difahami sebagai pernyataan SELECT yang disimpan
Dalam pangkalan data, paparan tidak menyimpan data, data adalah. sebenarnya disimpan dalam jadual data. Jika anda menambah, memadam atau mengubah suai data dalam jadual data, data dalam paparan akan berubah dengan sewajarnya. sebaliknya.
Paparan ialah satu lagi bentuk perwakilan yang menyediakan pengguna dengan data jadual asas. Dalam keadaan biasa, pangkalan data projek kecil tidak perlu menggunakan paparan, tetapi dalam projek besar dan apabila jadual data agak kompleks, nilai paparan menjadi menonjol. Ia boleh membantu kami meletakkan set hasil yang sering ditanya ke dalam jadual maya. meningkatkan kecekapan penggunaan. Ia sangat mudah untuk difahami dan digunakan.
Alyas medan dalam pernyataan pertanyaan akan muncul sebagai alias bagi paparan
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;
Buat paparan untuk berbilang jadual
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;
Gunakan paparan untuk memanipulasi Format data
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;
Buat paparan berdasarkan paparan
CREATE VIEW vu_emp4 AS SELECT department_id,department_name FROM vu_emp_dept; SELECT * FROM vu_emp4;
Lihat objek jadual pangkalan data, lihat objek
SHOW TABLES;
Lihat struktur pangkalan data
DESC vu_emp4;
Lihat maklumat atribut data
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
Lihat maklumat definisi terperinci pandangan
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
Mengemas kini data dalam paparan akan menghasilkan data dalam jadual asas Pengubahsuaian
Mengemas kini data dalam jadual juga akan menyebabkan pengubahsuaian kepada data dalam paparan
Untuk paparan boleh dikemas kini, setiap baris dalam paparan mesti sepadan dengan baris dalam jadual asas Dan terdapat hubungan satu dengan satu antara kedua-duanya. Selain itu, paparan tidak menyokong operasi kemas kini apabila keadaan berikut berlaku dalam definisi paparan:
Jika "ALGORITHM = TEMPTABLE" ditentukan semasa mentakrifkan paparan, paparan tidak akan menyokong INSERT dan DELETE operasi; operasi;
Jika pertanyaan gabungan JOIN digunakan dalam pernyataan SELECT yang mentakrifkan paparan, paparan tidak akan menyokong operasi INSERT dan DELETE; 🎜> Ungkapan matematik digunakan dalam senarai medan selepas penyataan SELECT yang mentakrifkan formula paparan atau subkueri, pandangan tidak akan menyokong INSERT, dan ia juga tidak menyokong nilai medan KEMASKINI yang menggunakan ungkapan matematik atau subquery; >
Takrif paparan adalah berdasarkan paparan yang tidak boleh dikemas kini;
Walaupun paparan boleh mengemas kini data, secara amnya, paparan sebagai jadual maya digunakan terutamanya untuk memudahkan pertanyaan dan tidak disyorkan untuk mengemas kini data paparan. Perubahan pada data paparan diselesaikan dengan mengendalikan data dalam jadual data sebenar.
Kaedah 1: Gunakan klausa CREATE OR REPLACE VIEW untuk mengubah suai paparan
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;
Kaedah 2: ALTER VIEW
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;
Padam Paparan
DROP VIEW vu_emp4; DROP VIEW IF EXISTS vu_emp1;
Kebaikan dan Kelemahan Paparan
Kelebihan:
Kurangkan lebihan data
Pengendalian yang mudah
Atas ialah kandungan terperinci Apakah konsep dan fungsi pengendalian pandangan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!