AS "."/> AS ".">

Maison  >  Article  >  base de données  >  Comment modifier les informations du tableau dans la vue MySQL

Comment modifier les informations du tableau dans la vue MySQL

青灯夜游
青灯夜游original
2020-10-13 15:33:386465parcourir

Dans MySQL, une vue est une table virtuelle et les données réelles proviennent de la table de base. Par conséquent, la mise à jour des informations sur les données dans la vue via des opérations d'insertion, de modification et de suppression revient essentiellement à mettre à jour la table de base référencée. par la vue. Informations sur les données ; format de syntaxe "ALTER VIEW 2b17b4e383e310741823646445a9a210 AS 75c6b34d144b2469495f7499e7e30f6a". 语句>

Comment modifier les informations du tableau dans la vue MySQL

(tutoriel recommandé : tutoriel vidéo mysql)

Modifier le contenu de la vue

La vue est une table virtuelle et les données réelles proviennent de la table de base, donc mettre à jour les données dans la vue par insertion, modification et Les opérations de suppression consistent essentiellement à mettre à jour les données de la table de base référencée par la vue.

Remarque : La modification de la vue est une modification de la table de base, donc lors de la modification, la définition des données de la table de base doit être respectée.

Syntaxe de base

Vous pouvez utiliser l'instruction ALTER VIEW pour modifier une vue existante.

Le format de syntaxe est le suivant :

ALTER VIEW <视图名> AS <SELECT语句>

La description de la syntaxe est la suivante :

  • f96a157a4ed7a8435db1751107a46e3c : Spécifiez le nom du voir. Le nom doit être unique dans la base de données et ne peut pas avoir le même nom qu'une autre table ou vue.

  • 4f9a49fb9bf9aa1eb7150a18fb2805eb : Spécifie l'instruction SELECT pour créer une vue, qui peut être utilisée pour interroger plusieurs tables de base ou vues source.

Il est à noter que l'utilisation de l'instruction ALTER VIEW nécessite que l'utilisateur dispose des autorisations CREATE VIEW et DROP sur la vue, ainsi que de certaines autorisations sur chaque colonne sélectionnée par le SELECT déclaration.

En plus de modifier la définition de la vue via ALTER VIEW, vous pouvez également utiliser l'instruction DROP VIEW pour supprimer d'abord la vue, puis utiliser l'instruction CREATE VIEW.

Certaines vues peuvent être mises à jour. Autrement dit, vous pouvez mettre à jour le contenu de la table de base à l'aide d'instructions telles que UPDATE, DELETE ou INSERT. Pour une vue pouvant être mise à jour, il doit exister une relation un-à-un entre les lignes de la vue et les lignes de la table sous-jacente.

Il existe également d'autres structures spécifiques qui rendent la vue non modifiable. Plus précisément, une vue n'est pas modifiable si elle contient l'une des structures suivantes :

  • Fonctions d'agrégation SUM(), MIN(), MAX(), COUNT( ) attendez.

  • Mot-clé DISTINCT.

  • Clause GROUP BY.

  • Clause AVOIR.

  • Opérateur UNION ou UNION ALL.

  • La sous-requête située dans la liste de sélection.

  • Une vue non modifiable dans la clause FROM ou contenant plusieurs tables.

  • Une sous-requête dans la clause WHERE qui fait référence à la table dans la clause FROM.

  • Lorsque l'option ALGORITHM est TEMPTABLE (l'utilisation de tables temporaires rendra toujours la vue non modifiable).

[Exemple 1] Utilisez l'instruction ALTER pour modifier la vue view_students_info L'instruction SQL d'entrée et les résultats de l'exécution sont les suivants.

mysql> ALTER VIEW view_students_info
    -> AS SELECT id,name,age
    -> FROM tb_students_info;
Query OK, 0 rows affected (0.07 sec)
mysql> DESC view_students_info;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   |     | 0       |       |
| name  | varchar(45) | YES  |     | NULL    |       |
| age   | int(11)     | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.03 sec)

Les utilisateurs peuvent insérer, mettre à jour et supprimer des données dans la table via des vues, car la vue est une table virtuelle sans données. Lors de la mise à jour via une vue, il accède à la table de base pour la mise à jour. Si des enregistrements sont ajoutés ou supprimés à la vue, les enregistrements sont réellement ajoutés ou supprimés à la table de base.

Affichez le contenu des données de view_students_info comme indiqué ci-dessous.

mysql> SELECT * FROM view_students_info;
+----+--------+------+
| id | name   | age  |
+----+--------+------+
|  1 | Dany   |   24 |
|  2 | Green  |   23 |
|  3 | Henry  |   23 |
|  4 | Jane   |   22 |
|  5 | Jim    |   24 |
|  6 | John   |   21 |
|  7 | Lily   |   22 |
|  8 | Susan  |   23 |
|  9 | Thomas |   22 |
| 10 | Tom    |   23 |
+----+--------+------+
10 rows in set (0.00 sec)

[Exemple 2] Utilisez l'instruction UPDATE pour mettre à jour la vue view_students_info L'instruction SQL d'entrée et les résultats de l'exécution sont les suivants.

mysql> UPDATE view_students_info
    -> SET age=25 WHERE id=1;
Query OK, 0 rows affected (0.24 sec)
Rows matched: 1  Changed: 0  Warnings: 0
mysql> SELECT * FROM view_students_info;
+----+--------+------+
| id | name   | age  |
+----+--------+------+
|  1 | Dany   |   25 |
|  2 | Green  |   23 |
|  3 | Henry  |   23 |
|  4 | Jane   |   22 |
|  5 | Jim    |   24 |
|  6 | John   |   21 |
|  7 | Lily   |   22 |
|  8 | Susan  |   23 |
|  9 | Thomas |   22 |
| 10 | Tom    |   23 |
+----+--------+------+
10 rows in set (0.00 sec)

Affichez le contenu de la table de base tb_students_info et affichez v_students_info comme indiqué ci-dessous.

mysql> SELECT * FROM tb_students_info;
+----+--------+---------+------+------+--------+------------+
| id | name   | dept_id | age  | sex  | height | login_date |
+----+--------+---------+------+------+--------+------------+
|  1 | Dany   |       1 |   25 | F    |    160 | 2015-09-10 |
|  2 | Green  |       3 |   23 | F    |    158 | 2016-10-22 |
|  3 | Henry  |       2 |   23 | M    |    185 | 2015-05-31 |
|  4 | Jane   |       1 |   22 | F    |    162 | 2016-12-20 |
|  5 | Jim    |       1 |   24 | M    |    175 | 2016-01-15 |
|  6 | John   |       2 |   21 | M    |    172 | 2015-11-11 |
|  7 | Lily   |       6 |   22 | F    |    165 | 2016-02-26 |
|  8 | Susan  |       4 |   23 | F    |    170 | 2015-10-01 |
|  9 | Thomas |       3 |   22 | M    |    178 | 2016-06-07 |
| 10 | Tom    |       4 |   23 | M    |    165 | 2016-08-05 |
+----+--------+---------+------+------+--------+------------+
10 rows in set (0.00 sec)

mysql> SELECT * FROM v_students_info;
+------+--------+------+-------+-------+----------+------------+
| s_id | s_name | d_id | s_age | s_sex | s_height | s_date     |
+------+--------+------+-------+-------+----------+------------+
|    1 | Dany   |    1 |    25 | F     |      160 | 2015-09-10 |
|    2 | Green  |    3 |    23 | F     |      158 | 2016-10-22 |
|    3 | Henry  |    2 |    23 | M     |      185 | 2015-05-31 |
|    4 | Jane   |    1 |    22 | F     |      162 | 2016-12-20 |
|    5 | Jim    |    1 |    24 | M     |      175 | 2016-01-15 |
|    6 | John   |    2 |    21 | M     |      172 | 2015-11-11 |
|    7 | Lily   |    6 |    22 | F     |      165 | 2016-02-26 |
|    8 | Susan  |    4 |    23 | F     |      170 | 2015-10-01 |
|    9 | Thomas |    3 |    22 | M     |      178 | 2016-06-07 |
|   10 | Tom    |    4 |    23 | M     |      165 | 2016-08-05 |
+------+--------+------+-------+-------+----------+------------+
10 rows in set (0.00 sec)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn