Introduction aux vues MySQL et aux didacticiels de fonctionnement de base

2020-02-14

Avant-propos

View est un objet de base de données très utile dans un système de base de données. La prise en charge des vues a été ajoutée depuis MySQL 5.0.

Connaître la vue

Une vue est une table virtuelle dont le contenu est défini par une requête. Comme une vraie table, une vue contient une série de colonnes et de lignes de données nommées, mais la vue n'est pas une table de données que la base de données stocke réellement.

Une vue est une table dérivée d'une ou plusieurs tables ou vues. Elle contient une série de colonnes de données nommées et plusieurs lignes de données.

Les vues ne sont pas les mêmes que les tableaux de données. Elles diffèrent sur les points suivants:

      
  • Une vue n'est pas une vraie table dans la base de données, mais une table virtuelle dont la structure et les données sont basées sur une requête des vraies tables dans les données.
  •   
  • Opérations de requête stockées dans la base de données L'instruction SQL définit le contenu de la vue. Les données de colonne et les données de ligne proviennent de la table réelle référencée par la requête de vue. Ces données sont générées dynamiquement lorsque la vue est référencée.
  •   
  • La vue n'a pas d'enregistrements physiques réels et n'est pas stockée dans la base de données sous la forme d'un jeu de données. Les données qui y correspondent sont en fait stockées dans la table réelle référencée par la vue.
  •   
  • Les vues sont des fenêtres de données et les tableaux sont du contenu. La table est l'unité de stockage des données réelles, et la vue affiche uniquement les données dans différents modes d'affichage, et sa source de données est la table réelle.
  •   
  • Une vue est un moyen d'afficher une table de données. Vous pouvez interroger les données constituées de certains champs de la table de données, juste une collection d'instructions SQL. Du point de vue de la sécurité, les données de la vue sont plus sécurisées et les utilisateurs qui utilisent la vue ne touchent pas la table de données et ne connaissent pas la structure de la table.
  •   
  • La création et la suppression de vues n'affectent que la vue elle-même, pas les tables de base correspondantes.
  • Les vues et les tables ne sont pas de même nature, mais une fois la vue définie, la structure est la même que la table et vous pouvez interroger, modifier, mettre à jour et supprimer.

    1. Préparation

    Créez deux tables balance (table balance) et customer (table client) dans la base de données MySQL et insérez des données.


     créer une table client (
      id primaire (10) clé primaire,
      nom char (20) non nul,
      rôle char (20) non nul,
      caractère de téléphone (20) non nul,
      sexe char (10) non nul,
      adresse char (50) non nulle
     ) MOTEUR = InnoDB DEFAULT CHARSET = utf8;
    
     #Clé étrangère pour customerId
     créer un équilibre de table (
      id primaire (10) clé primaire,
      customerId int (10) non nul,
      solde DECIMAL (10,2),
      la clé étrangère (customerId) fait référence au client (id)
    
     ) MOTEUR = InnoDB DEFAULT CHARSET = utf8; 
     

    Insérez 3 données dans la table des clients et la table des soldes.


     insérer dans les valeurs client (0001, «xiaoming», «vip1», «12566666», «male», «No.888 Jiangning District»);
     insérer dans les valeurs client (0002, "xiaohong", 'vip10', '15209336760', 'male', 'No.888 Jian'ou District');
     insérer dans les valeurs client (0003, "xiaocui", 'vip11', '15309336760', 'female', 'xinjiekou 888');
    
     insérer dans les valeurs d'équilibre (1 0001 900,55);
     insérer dans les valeurs d'équilibre (2 0002 900,55);
     insérer dans les valeurs de solde (3 0003,10000); 
     

    2. Voir l'introduction

    Une vue peut être simplement comprise comme une table virtuelle. Elle est différente d'une table de données réelle dans la base de données. Les données de la vue sont obtenues sur la base de la requête de table réelle. Les vues ont une structure similaire à de vraies tables. Les opérations telles que la mise à jour, la requête et la suppression de tables réelles sont prises en charge par les vues. Alors pourquoi avez-vous besoin de vues?

    a. Améliorez la sécurité des tables réelles: les vues sont virtuelles. Vous ne pouvez accorder aux utilisateurs que les autorisations des vues mais pas les autorisations des tables réelles, protégeant ainsi les tables réelles.

    b. Données d'affichage personnalisées: sur la base du même tableau réel, vous pouvez personnaliser les données d'affichage pour les utilisateurs ayant des besoins différents via différentes vues.

    c. Simplifier les opérations sur les données: il convient aux scénarios dans lesquels l'instruction de requête est plus complexe et utilisée plus fréquemment, ce qui peut être réalisé via des vues.

    ......

    Il convient de noter que: Les opérations liées à la vue nécessitent que les utilisateurs disposent des autorisations correspondantes. Les opérations suivantes utilisent l'utilisateur root. L'utilisateur par défaut dispose d'autorisations d'opération.

    Création de la syntaxe de vue

    créer la vue en tant que ;

    Modifier la syntaxe de la vue

    Vous pouvez supprimer le nom de la vue, puis le créer avec la même instruction.


     #Mise à jour de la structure de la vue
     modifier la vue  en tant que ;
     #Update view data équivaut à mettre à jour la table réelle, non applicable pour les vues créées à partir de plusieurs tables
     mise à jour .... 
     

    Remarque: Les données de certaines vues ne peuvent pas être mises à jour, c'est-à-dire que vous ne pouvez pas utiliser update, insert et d'autres instructions pour mettre à jour, telles que:

    a, l'instruction select contient plusieurs tables

    b, la vue a une clause having

    c, en essayant d'inclure le mot clé distinct

    ......

    Supprimer la syntaxe de la vue

    déposer la vue

    3. Afficher les opérations

    Création d'une vue basée sur une seule table


    mysql> créer une vue bal_view   -> comme   -> sélectionnez * dans le solde; Requête OK, 0 lignes affectées (0,22 s)

    Après la création, vérifiez la structure et les enregistrements de bal_view. Il peut être constaté que l'interrogation des données via une vue est exactement la même que l'interrogation d'une vraie table.


     #Query la structure de bal_view
     mysql> desc bal_view;
     + ------------ + --------------- + ------ + ----- + -------  - + ------- +
     Champ | Type | Null | Clé | Par défaut | Extra |
     + ------------ + --------------- + ------ + ----- + -------  - + ------- +
     | id | int (10) | NO | | NULL | |
     | customerId | int (10) | NO | | NULL | |
     | solde | décimal (10,2) | OUI | | NULL | |
     + ------------ + --------------- + ------ + ----- + -------  - + ------- +
     3 rangées en jeu (0,07 sec)
     #Enregistrements de requête dans bal_view
     mysql> sélectionnez * dans bal_view;
     + ---- + ------------ + ---------- +
     | id | customerId | solde |
     + ---- + ------------ + ---------- +
     | 1 | 1 | 900,55 |
     | 2 | 2 | 900,55 |
     | 3 | 3 | 10000,00 |
     + ---- + ------------ + ---------- +
     3 lignes en jeu (0,01 sec) 
     

    Il n'est pas difficile de conclure à partir de l'instruction qui crée la vue: lorsque les données de la table réelle changent, les données de la vue changent également. Ainsi, lorsque les données de la vue changent, les données de la table réelle changent-elles? Essayons, modifions le solde client avec id = 1 à 2000.


     mysql> update bal_view set balance = 2000 where id = 1;
     Requête OK, 1 ligne affectée (0,05 sec)
     Lignes correspondantes: 1 Modifié: 1 Avertissements: 0 
     

    Examinez les données dans le solde réel du tableau.


     mysql> sélectionnez * dans bal_view où id = 1;
     + ---- + ------------ + --------- +
     | id | customerId | solde |
     + ---- + ------------ + --------- +
     | 1 | 1 | 2000,00 |
     + ---- + ------------ + --------- +
     1 ligne dans l'ensemble (0,03 s) 
     

    Conclusion: lorsque les données de la table d'affichage changent, les données de la table réelle changent également.

    Création d'une vue basée sur plusieurs tables

    Créez la vue cus_bal avec deux champs Nom du client et Solde.


     mysql> créer une vue cus_bal
      -> (cname, bal)
      -> comme
      -> sélectionnez customer.name, balance.balance from customer, balance
      -> où customer.id = balance.customerId;
     Requête OK, 0 lignes affectées (0,05 sec)
     # Afficher les données dans cus_bal
     mysql> select * from cus_bal;
     + ---------- + ---------- +
     | cname | bal |
     + ---------- + ---------- +
     | xiaoming | 2000,00 |
     | xiaohong | 900,55 |
     | xiaocui | 10000,00 |
     + ---------- + ---------- +
     3 rangées en jeu (0,28 sec) 
     

    Modifier la vue

    Remplacez cname par cusname dans la vue cus_bal.


     mysql> alter view cus_bal
      -> (nom d'utilisateur, bal)
      -> comme
      -> sélectionnez customer.name, balance.balance from customer, balance
      -> où customer.id = balance.customerId;
     Requête OK, 0 lignes affectées (0,06 sec)
     #Voir la structure de vue modifiée.
     mysql> desc cus_bal;
     + --------- + --------------- + ------ + ----- + --------- +  ------- +
     Champ | Type | Null | Clé | Par défaut | Extra |
     + --------- + --------------- + ------ + ----- + --------- +  ------- +
     | nom d'utilisateur | char (20) | NO | | NULL | |
     bal | décimal (10,2) | YES | | NULL | |
     + --------- + --------------- + ------ + ----- + --------- +  ------- +
     2 rangées en jeu (0,00 sec) 
     

    Modifier les vues créées à partir de plusieurs tables


     mysql> insérer dans les valeurs cus_bal (cusname, bal) ("ee", 11);
     ERREUR 1393 (HY000): impossible de modifier plusieurs tables de base via une vue de jointure 'rms.cus_bal' 
     

    Supprimer la vue

    Supprimer la vue cus_bal


     drop view cus_bal;
     mysql> drop view cus_bal;
     Requête OK, 0 lignes affectées (0,00 sec) 
     

    Résumé

    Ce qui précède est le contenu entier de cet article. J'espère que le contenu de cet article aura une certaine référence et valeur d'apprentissage pour l'étude ou le travail de chacun. Merci pour votre soutien.

    mysql> drop view cus_bal; Requête OK, 0 lignes affectées (0,00 sec)

    Résumé

    Ce qui précède est le contenu entier de cet article. J'espère que le contenu de cet article aura une certaine référence et valeur d'apprentissage pour l'étude ou le travail de chacun. Merci pour votre soutien.

www.xd1998.com@2001-2030Partage De Technologie