Rumah >pangkalan data >tutorial mysql >Apakah konsep dan fungsi pengendalian pandangan MySQL?

Apakah konsep dan fungsi pengendalian pandangan MySQL?

王林
王林ke hadapan
2023-05-27 22:17:08903semak imbas

Objek pangkalan data biasa

对象 描述
表(TABLE) 表是存储数据的逻辑单元,以行和列的形式存在,列就是字段,行就是记录
数据字典 就是系统表,存放数据库相关信息的表。系统表的数据通常由数据库系统维护, 程序员通常不应该修改,只可查看
约束 (CONSTRAINT) 执行数据校验的规则,用于保证数据完整性的规则
视图(VIEW) 一个或者多个数据表里的数据的逻辑显示,视图并不存储数据
索引(INDEX) 用于提高查询性能,相当于书的目录
存储过程 (PROCEDURE) 用于完成一次完整的业务处理,没有返回值,但可通过传出参数将多个值传给调 用环境
存储函数 (FUNCTION) 用于完成一次特定的计算,具有一个返回值
触发器 (TRIGGER) 相当于一个事件监听器,当数据库发生特定事件后,触发器被触发,完成相应的处理

Konsep pandangan

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.

Buat paparan

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 paparan

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

Kemas kini data paparan

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; >

  • berada dalam senarai medan selepas pernyataan SELECT yang mentakrifkan paparan Menggunakan DISTINCT, fungsi agregat, GROUP BY, HAVING, UNION, dsb., paparan tidak akan menyokong INSERT, UPDATE, DELETE;
  • mengandungi subquery dalam pernyataan SELECT yang mentakrifkan paparan, dan subquery Jadual selepas FROM dirujuk dalam pertanyaan, dan paparan tidak akan menyokong INSERT, UPDATE dan DELETE;
  • 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.

  • Ubah suai paparan
  • 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;
  • Nota: Alias ​​setiap lajur dalam klausa CREATE VIEW hendaklah sama seperti setiap lajur dalam subkueri yang sepadan.
  • Kaedah 2: ALTER VIEW

  • Sintaks untuk mengubah suai paparan ialah:

ALTER VIEW view name

AS

Query statement

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:


Pengendalian yang mudah

Kurangkan lebihan data

Keselamatan data

    Menyesuaikan diri dengan keperluan yang fleksibel dan berubah
  • Dapat menguraikan logik pertanyaan yang kompleks
  • Kelemahan:
  • Kos penyelenggaraan yang tinggi
  • Kebolehbacaan Tidak bagus

Atas ialah kandungan terperinci Apakah konsep dan fungsi pengendalian pandangan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam