Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
elearning:workbooks:lpic:12:500:l105 [2023/06/26 05:55] – created adminelearning:workbooks:lpic:12:500:l105 [2024/12/08 15:59] (Version actuelle) admin
Ligne 1: Ligne 1:
 ~~PDF:LANDSCAPE~~ ~~PDF:LANDSCAPE~~
  
-Version : **2023.01**+Version : **2024.01**
  
 Dernière mise-à-jour : ~~LASTMOD~~ Dernière mise-à-jour : ~~LASTMOD~~
Ligne 11: Ligne 11:
   * **Topic 105: Shells and Shell Scripting**   * **Topic 105: Shells and Shell Scripting**
     * Contenu du Module     * Contenu du Module
 +    * La commande seq
     * Affichage des variables du shell     * Affichage des variables du shell
       * Les variables principales       * Les variables principales
Ligne 50: Ligne 51:
         * LAB #1- Scripts de Démarrage         * LAB #1- Scripts de Démarrage
           * ~/.bash_profile           * ~/.bash_profile
-          * ~/.bashrc+          * ~/.bashrc  
 +    * Le Langage SQL 
 +      * Installation de MariaDB 
 +      * Démarrage du Serveur 
 +        * Le Service MariaDB 
 +        * Invocation Directe 
 +      * Arrêt du Serveur 
 +        * Le Service MariaDB 
 +        * La Commande mysqladmin 
 +      * Configuration 
 +        * Le Client MySQL 
 +          * Utilisation 
 +          * Options 
 +      * LAB #2 - Configuration de Base 
 +      * LAB #3 - Le Langage SQL 
 + 
 +=====La commande seq===== 
 + 
 +La commande **seq** affiche une séquence de nombres du PREMIER au DERNIER par pas d'un INCREMENT. La commande prend la forme suivante : 
 + 
 +  * **seq** [options] PREMIER 
 +  * **seq** [options] PREMIER DERNIER 
 +  * **seq** [options] PREMIER INCREMENT DERNIER 
 + 
 +Par exemple : 
 + 
 +<code> 
 +[root@centos7 ~]# seq 10 
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +10 
 +[root@centos7 ~]# seq 20 30 
 +20 
 +21 
 +22 
 +23 
 +24 
 +25 
 +26 
 +27 
 +28 
 +29 
 +30 
 +[root@centos7 ~]# seq 20 10 90 
 +20 
 +30 
 +40 
 +50 
 +60 
 +70 
 +80 
 +90 
 +[root@centos7 ~]#   
 +</code> 
 + 
 +====Options de la commande==== 
 + 
 +<WRAP center round todo 60%> 
 +**A faire** : Utilisez l'option **--help** de la commande **seq** pour visualiser les options de la commande. 
 +</WRAP>
  
 ===== Affichage des variables du shell===== ===== Affichage des variables du shell=====
Ligne 369: Ligne 436:
 </code> </code>
  
-<WRAP center round important>+<WRAP center round important 60%>
 **Important**: Notez que chaque champs a été placé dans une variable différente. Notez aussi que par convention les variables déclarées par des utilisateurs sont en miniscules afin de les distinguer des variables système qui sont en majuscules. **Important**: Notez que chaque champs a été placé dans une variable différente. Notez aussi que par convention les variables déclarées par des utilisateurs sont en miniscules afin de les distinguer des variables système qui sont en majuscules.
 </WRAP> </WRAP>
Ligne 382: Ligne 449:
 </code> </code>
  
-<WRAP center round important>+<WRAP center round important 60%>
 **Important** : Notez que dans le deuxième cas, le reste de la ligne après le mot //fenestros// est mis dans **$var2**. **Important** : Notez que dans le deuxième cas, le reste de la ligne après le mot //fenestros// est mis dans **$var2**.
 </WRAP> </WRAP>
Ligne 426: Ligne 493:
 </code> </code>
  
-<WRAP center round important>+<WRAP center round important 60%>
 **Important** : La commande **od** (//Octal Dump//) renvoie le contenu d'un fichier ou de l'entrée standard au format octal. Ceci est utile afin de visualiser les caractères non-imprimables. L'option **-c** permet de sélectionner des caractères ASCII ou des backslash dans le fichier ou dans le contenu fourni à l'entrée standard. **Important** : La commande **od** (//Octal Dump//) renvoie le contenu d'un fichier ou de l'entrée standard au format octal. Ceci est utile afin de visualiser les caractères non-imprimables. L'option **-c** permet de sélectionner des caractères ASCII ou des backslash dans le fichier ou dans le contenu fourni à l'entrée standard.
 </WRAP> </WRAP>
Ligne 916: Ligne 983:
 </code> </code>
  
-<WRAP center round important>+<WRAP center round important 60%>
 **Important** : L'exemple indique que dans le cas où le premier argument qui suit le nom du script contenant la clause **case** est **start**, la fonction //start// sera exécutée. La fonction //start// n'a pas besoin d'être définie dans **case** et est donc en règle générale définie en début de script. La même logique est appliquée dans le cas où le premier argument est **stop**, **restart** ou **reload** et **status**. Dans tous les autres cas, représentés par une étoile, **case** affichera la ligne **Usage: $0 {start|stop|restart|status}** où $0 est remplacé par le nom du script. **Important** : L'exemple indique que dans le cas où le premier argument qui suit le nom du script contenant la clause **case** est **start**, la fonction //start// sera exécutée. La fonction //start// n'a pas besoin d'être définie dans **case** et est donc en règle générale définie en début de script. La même logique est appliquée dans le cas où le premier argument est **stop**, **restart** ou **reload** et **status**. Dans tous les autres cas, représentés par une étoile, **case** affichera la ligne **Usage: $0 {start|stop|restart|status}** où $0 est remplacé par le nom du script.
 </WRAP> </WRAP>
Ligne 973: Ligne 1040:
 ====LAB #1- Scripts de Démarrage==== ====LAB #1- Scripts de Démarrage====
  
-<WRAP center round important>+<WRAP center round important 60%>
 **A faire** : En utilisant vos connaissances acquises dans ce module, expliquez les scripts suivants ligne par ligne.  **A faire** : En utilisant vos connaissances acquises dans ce module, expliquez les scripts suivants ligne par ligne. 
 </WRAP> </WRAP>
Ligne 1011: Ligne 1078:
 # User specific aliases and functions # User specific aliases and functions
 </code> </code>
 +
 +=====Le Langage SQL=====
 +
 +==== Installation de MariaDB====
 +
 +Pour installer MariaDB, utilisez yum :
 +
 +<code>
 +[root@centos7 ~]# yum install mariadb mariadb-server
 +</code>
 +
 +<WRAP center round important 60%>
 +**Important** Vous pouvez également installer MariaDB à partir des sources disponibles sur le site **[[https://downloads.mariadb.org/]]**. 
 +</WRAP>
 +
 +====Démarrage du Serveur====
 +
 +Le serveur MariaDB peut être démarré par l'utilisation d'une de deux méthodes différentes.
 +
 +===Le Service MariaDB===
 +
 +Pour activer le service **mariadb** il convient d'utiliser la commande **systemctl** :
 +
 +<code>
 +[root@centos7 ~]# systemctl enable mariadb
 +Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
 +</code>
 +
 +Le démarrage se fait également avec systemctl :
 +
 +<code>
 +[root@centos7 ~]# systemctl start mariadb
 +[root@centos7 ~]# systemctl status mariadb
 +● mariadb.service - MariaDB database server
 +   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
 +   Active: active (running) since Tue 2017-10-31 12:34:38 CET; 5s ago
 +  Process: 9769 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
 +  Process: 9737 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
 + Main PID: 9768 (mysqld_safe)
 +   CGroup: /system.slice/mariadb.service
 +           ├─9768 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
 +           └─9930 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql...
 +
 +Oct 31 12:34:35 centos7.fenestros.loc systemd[1]: Starting MariaDB database s...
 +Oct 31 12:34:35 centos7.fenestros.loc mariadb-prepare-db-dir[9737]: Database ...
 +Oct 31 12:34:36 centos7.fenestros.loc mysqld_safe[9768]: 171031 12:34:36 mysq...
 +Oct 31 12:34:36 centos7.fenestros.loc mysqld_safe[9768]: 171031 12:34:36 mysq...
 +Oct 31 12:34:38 centos7.fenestros.loc systemd[1]: Started MariaDB database se...
 +Hint: Some lines were ellipsized, use -l to show in full.
 +</code>
 +
 +Le service mariadb appel un script appelé **mysqld_safe** qui lance le serveur et crée un journal d'erreur. Il relance le serveur en cas d'arrêt intempestif.
 +
 +===Invocation Directe===
 +
 +Il est aussi possible d'invoquer directement le binaire **mysqld** en spécifiant manuellement le fichier de configuration de MariaDB, le fichier d'erreurs ainsi que le nom de l'utilisateur. Par exemple :
 +
 +<file>
 +# /usr/libexec/mysqld --defaults-file=/chemin/my.cnf --log-error=/chemin/nom_log --user=mysql &
 +</file>
 +
 +====Arrêt du Serveur====
 +
 +===Le Service MariaDB===
 +
 +Il est possible d'arrêter le service mariadb avec la commande stop :
 +
 +<code>
 +[root@centos7 ~]# systemctl stop mariadb
 +[root@centos7 ~]# systemctl status mariadb
 +● mariadb.service - MariaDB database server
 +   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
 +   Active: inactive (dead) since Tue 2017-10-31 12:38:12 CET; 3s ago
 +  Process: 9769 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
 +  Process: 9768 ExecStart=/usr/bin/mysqld_safe --basedir=/usr (code=exited, status=0/SUCCESS)
 +  Process: 9737 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
 + Main PID: 9768 (code=exited, status=0/SUCCESS)
 +
 +Oct 31 12:34:35 centos7.fenestros.loc systemd[1]: Starting MariaDB database s...
 +Oct 31 12:34:35 centos7.fenestros.loc mariadb-prepare-db-dir[9737]: Database ...
 +Oct 31 12:34:36 centos7.fenestros.loc mysqld_safe[9768]: 171031 12:34:36 mysq...
 +Oct 31 12:34:36 centos7.fenestros.loc mysqld_safe[9768]: 171031 12:34:36 mysq...
 +Oct 31 12:34:38 centos7.fenestros.loc systemd[1]: Started MariaDB database se...
 +Oct 31 12:38:09 centos7.fenestros.loc systemd[1]: Stopping MariaDB database s...
 +Oct 31 12:38:12 centos7.fenestros.loc systemd[1]: Stopped MariaDB database se...
 +Hint: Some lines were ellipsized, use -l to show in full.
 +[root@centos7 ~]# systemctl start mariadb
 +[root@centos7 ~]# systemctl status mariadb
 +● mariadb.service - MariaDB database server
 +   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
 +   Active: active (running) since Tue 2017-10-31 12:38:25 CET; 1s ago
 +  Process: 11254 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
 +  Process: 11222 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
 + Main PID: 11253 (mysqld_safe)
 +   CGroup: /system.slice/mariadb.service
 +           ├─11253 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
 +           └─11420 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysq...
 +
 +Oct 31 12:38:22 centos7.fenestros.loc systemd[1]: Starting MariaDB database s...
 +Oct 31 12:38:23 centos7.fenestros.loc mariadb-prepare-db-dir[11222]: Database...
 +Oct 31 12:38:23 centos7.fenestros.loc mysqld_safe[11253]: 171031 12:38:23 mys...
 +Oct 31 12:38:23 centos7.fenestros.loc mysqld_safe[11253]: 171031 12:38:23 mys...
 +Oct 31 12:38:25 centos7.fenestros.loc systemd[1]: Started MariaDB database se...
 +Hint: Some lines were ellipsized, use -l to show in full.
 +</code>
 +
 +===La Commande mysqladmin===
 +
 +La comande **mysqladmin** peut aussi être utilisée pour arrêter le serveur à condition que l'utilisateur qui l'invoque possède le privilège **shutdown**. Par exemple :
 +
 +<code>
 +[root@centos7 ~]# /bin/mysqladmin -uroot -p shutdown
 +Enter password: 
 +[root@centos7 ~]# systemctl status mariadb
 +● mariadb.service - MariaDB database server
 +   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
 +   Active: inactive (dead) since Tue 2017-10-31 12:53:09 CET; 4s ago
 +  Process: 11254 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
 +  Process: 11253 ExecStart=/usr/bin/mysqld_safe --basedir=/usr (code=exited, status=0/SUCCESS)
 +  Process: 11222 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
 + Main PID: 11253 (code=exited, status=0/SUCCESS)
 +
 +Oct 31 12:38:22 centos7.fenestros.loc systemd[1]: Starting MariaDB database s...
 +Oct 31 12:38:23 centos7.fenestros.loc mariadb-prepare-db-dir[11222]: Database...
 +Oct 31 12:38:23 centos7.fenestros.loc mysqld_safe[11253]: 171031 12:38:23 mys...
 +Oct 31 12:38:23 centos7.fenestros.loc mysqld_safe[11253]: 171031 12:38:23 mys...
 +Oct 31 12:38:25 centos7.fenestros.loc systemd[1]: Started MariaDB database se...
 +Hint: Some lines were ellipsized, use -l to show in full.
 +</code>
 +
 +<WRAP center round important 60%>
 +**Important** - Le nom d'utilisateur peut être accoler ou non à l'option **-u**. Par exemple **-uroot** et **-u root** sont tous les deux correctes. Par contre, si vous souhaitez spécifier le mot de passe de l'utilisateur dans la ligne de commande, celui-ci **doit** être accoler à l'option **-p**. 
 +</WRAP>
 +
 +====Configuration====
 +
 +Votre première prise en mains de %%MariaDB%% doit débuter par la commande **mysql** :
 +
 +===Le Client MySQL===
 +
 +==Utilisation==
 +
 +MariaDB dispose d’un outil client permettant de se connecter et d’envoyer des commandes SQL au serveur.
 +
 +Pour démarrer une connexion au serveur MariaDB nous pouvons utiliser un C.L.I. sous Linux.
 +
 +Les paramètres les plus courants sont : 
 +
 +  $ mysql –u root –p Databasename [Entrée]
 +
 +Où :
 +
 +  * **-u** 
 +    * donne le nom de l’utilisateur. Si vous renoncez à l’option –u , le nom de login sera utilisé sous Unix/Linux et le nom ODBC sous Windows. 
 +
 +  * **-p** 
 +    * permet de saisir le mot de passe de MariaDB, cette option est obligatoire lorsque les utilisateurs MariaDB sont sécurisés, c’est-à-dire qu’ils ont un mot de passe.
 +
 +  * **-h**
 +    * permet de préciser le nom de l’hôte qui héberge MariaDB. Par défaut le port de communication est 3306 il est possible de changer ce port soit en configurant l’instance MariaDB soit en configurant le fichier **My.ini** sous Windows(tm) ou **my.cnf** sous Unix/Linux. (Attention: vérifiez qu’un par feu ne bloque pas ce port). Enfin vous devez vous assurer que le serveur MariaDB est configuré de sorte à autoriser les accès depuis votre ordinateur local.
 +
 +  * **- -protocol = name**
 +    * cette option permet de spécifier le protocole de communication à utiliser. Il est rarement nécessaire d’indiquer cette option, puisque MariaDB choisit le bon protocole par défaut. Lorsque le client mysql et le serveur MariaDB ne tournent pas sur le même ordinateur, le seul protocole réseau possible est le **TCP**, dans ce cas n’oubliez pas de préciser le paramètre –h.
 +
 +  * **-P n**
 +    * permet de préciser le port de communication utilisée pour se connecter à MariaDB. Cette option est effective que lorsque la communication passe par TCP/IP.
 +
 +  * **- -default-character-set = nom**
 +    * cette option indique le jeu de caractères utilisés dans le cadre de communication entre mysql et le serveur MariaDB. En théorie, il s’agit du même jeu de caractères que celui utilisé par défaut dans la vie de commandes sous Windows ou la console sous Linux. Les jeux de caractères pris en charge par MariaDB sont notamment Latin 1 (ISO-8559-1), latin 2 (ISO-8559-2), UTF-8 (unicode) et cp850 (le jeu de caractères DOS pour l’Europe occidentale).
 +
 +  * Databasename
 +    * ce dernier paramètre indique à MariaDB le nom d’une base de données, ce qui permet de l’utiliser directement dès l’ouverture de MariaDB. Si vous désirez changer ici de base de données après sa connexion vous pouvez utiliser la commande SQL **USE <NOM_DB>.
 +
 +Exemple :
 +
 +  $ mysql -u root -p -h server --protocol=tcp [Entrée]
 +  $ Password : ********** [Entrée]
 +
 +==Options==
 +
 +Dans la console MariaDB nous avons diverses options.
 +
 +^ Abréviation ^ Commande ^ Signification ^
 +| \c | clear | Annule une commande en cours de saisie |
 +| \h | help | Affiche la liste des commandes |
 +| \q | exit ou quit | Ferme la connexion à MariaDB. Sous Unix/Linux, il est possible utilisé le raccourci ctrl+D |
 +| \s | status | Affiche les informations de statut du serveur MariaDB |
 +| \T[f] | tee[filename] | Enregistre tous ce qui apparaît dans la fenêtre de commandes dans le fichier indiqué |
 +| L | notee | Ferme tee. Le protocole doit être repris à tout instant avec tee ou \T. Il n’est pas nécessaire de saisir de nouveau le nom de fichier. |
 +| \u db | use database | La base de données saisie devient la base de données par défaut |
 +| \. Fn | source file name | exécute les commandes SQL contenues dans le fichier spécifié. Les commandes doivent à séparer par des pointsvirgules. |
 +
 +NB : la fonction \c n’a aucun effet dans les chaînes de caractères( "" ou ' ').
 +
 +Notez aussi que MariaDB se souvient des dernières commandes grâce aux touches **flèche vers le haut** et **flèche vers le bas**.
 +
 +====LAB #2 - Configuration de Base====
 +
 +Saisissez donc la commande **mysql** :
 +
 +<code>
 +[root@centos7 ~]# systemctl start mariadb
 +[root@centos7 ~]# mysql
 +Welcome to the MariaDB monitor.  Commands end with ; or \g.
 +Your MariaDB connection id is 2
 +Server version: 5.5.56-MariaDB MariaDB Server
 +
 +Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
 +
 +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 +
 +MariaDB [(none)]> 
 +</code>
 +
 +pour visualiser la liste des bases de données par défaut :
 +
 +<code>
 +MariaDB [(none)]> show databases;
 ++--------------------+
 +| Database           |
 ++--------------------+
 +| information_schema |
 +| mysql              |
 +| performance_schema |
 +| test               |
 ++--------------------+
 +7 rows in set (0.01 sec)
 +
 +MariaDB [(none)]> 
 +</code>
 +
 +Ensuite changez de base de données avec la commande :
 +
 +<code>
 +MariaDB [(none)]> USE mysql;
 +Reading table information for completion of table and column names
 +You can turn off this feature to get a quicker startup with -A
 +
 +Database changed
 +MariaDB [mysql]> 
 +</code>
 +
 +Afin de consulter les tables présentes dans la base, utilisez la commande :
 +
 +<code>
 +MariaDB [mysql]> SHOW TABLES;
 ++---------------------------+
 +| Tables_in_mysql           |
 ++---------------------------+
 +| columns_priv              |
 +| db                        |
 +| event                     |
 +| func                      |
 +| general_log               |
 +| help_category             |
 +| help_keyword              |
 +| help_relation             |
 +| help_topic                |
 +| host                      |
 +| ndb_binlog_index          |
 +| plugin                    |
 +| proc                      |
 +| procs_priv                |
 +| proxies_priv              |
 +| servers                   |
 +| slow_log                  |
 +| tables_priv               |
 +| time_zone                 |
 +| time_zone_leap_second     |
 +| time_zone_name            |
 +| time_zone_transition      |
 +| time_zone_transition_type |
 +| user                      |
 ++---------------------------+
 +24 rows in set (0.00 sec)
 +
 +MariaDB [mysql]> 
 +</code>
 +
 +Pour consulter une table spécifique, utilisez la commande **DESCRIBE** :
 +
 +<code>
 +MariaDB [mysql]> DESCRIBE user;
 ++------------------------+-----------------------------------+------+-----+---------+-------+
 +| Field                  | Type                              | Null | Key | Default | Extra |
 ++------------------------+-----------------------------------+------+-----+---------+-------+
 +| Host                   | char(60)                          | NO   | PRI |               |
 +| User                   | char(16)                          | NO   | PRI |               |
 +| Password               | char(41)                          | NO                     |
 +| Select_priv            | enum('N','Y'                    | NO       | N             |
 +| Insert_priv            | enum('N','Y'                    | NO       | N             |
 +| Update_priv            | enum('N','Y'                    | NO       | N             |
 +| Delete_priv            | enum('N','Y'                    | NO       | N             |
 +| Create_priv            | enum('N','Y'                    | NO       | N             |
 +| Drop_priv              | enum('N','Y'                    | NO       | N             |
 +| Reload_priv            | enum('N','Y'                    | NO       | N             |
 +| Shutdown_priv          | enum('N','Y'                    | NO       | N             |
 +| Process_priv           | enum('N','Y'                    | NO       | N             |
 +| File_priv              | enum('N','Y'                    | NO       | N             |
 +| Grant_priv             | enum('N','Y'                    | NO       | N             |
 +| References_priv        | enum('N','Y'                    | NO       | N             |
 +| Index_priv             | enum('N','Y'                    | NO       | N             |
 +| Alter_priv             | enum('N','Y'                    | NO       | N             |
 +| Show_db_priv           | enum('N','Y'                    | NO       | N             |
 +| Super_priv             | enum('N','Y'                    | NO       | N             |
 +| Create_tmp_table_priv  | enum('N','Y'                    | NO       | N             |
 +| Lock_tables_priv       | enum('N','Y'                    | NO       | N             |
 +| Execute_priv           | enum('N','Y'                    | NO       | N             |
 +| Repl_slave_priv        | enum('N','Y'                    | NO       | N             |
 +| Repl_client_priv       | enum('N','Y'                    | NO       | N             |
 +| Create_view_priv       | enum('N','Y'                    | NO       | N             |
 +| Show_view_priv         | enum('N','Y'                    | NO       | N             |
 +| Create_routine_priv    | enum('N','Y'                    | NO       | N             |
 +| Alter_routine_priv     | enum('N','Y'                    | NO       | N             |
 +| Create_user_priv       | enum('N','Y'                    | NO       | N             |
 +| Event_priv             | enum('N','Y'                    | NO       | N             |
 +| Trigger_priv           | enum('N','Y'                    | NO       | N             |
 +| Create_tablespace_priv | enum('N','Y'                    | NO       | N             |
 +| ssl_type               | enum('','ANY','X509','SPECIFIED') | NO                     |
 +| ssl_cipher             | blob                              | NO       | NULL    |       |
 +| x509_issuer            | blob                              | NO       | NULL    |       |
 +| x509_subject           | blob                              | NO       | NULL    |       |
 +| max_questions          | int(11) unsigned                  | NO       | 0             |
 +| max_updates            | int(11) unsigned                  | NO       | 0             |
 +| max_connections        | int(11) unsigned                  | NO       | 0             |
 +| max_user_connections   | int(11)                           | NO       | 0             |
 +| plugin                 | char(64)                          | NO                     |
 +| authentication_string  | text                              | NO       | NULL    |       |
 ++------------------------+-----------------------------------+------+-----+---------+-------+
 +42 rows in set (0.00 sec)
 +
 +MariaDB [mysql]> 
 +</code>
 +
 +Pour visualiser la liste des utilisateurs autorisés pour %%MariaDB%%, utilisez la commande suivante :
 +
 +<code>
 +MariaDB [mysql]> SELECT host, user, password FROM user;
 ++-----------------------+-------+-----------+
 +| host                  | user  | password  |
 ++-----------------------+-------+-----------+
 +| localhost             | root  |           |
 +| centos7.fenestros.loc | root  |           |
 +| 127.0.0.1             | root  |           |
 +| ::1                   | root  |           |
 ++-----------------------+-------+-----------+
 +7 rows in set (0.00 sec)
 +
 +MariaDB [mysql]>  
 +</code>
 +
 +Vous noterez que l'utilisateur root, l'administrateur de %%MariaDB%%, n'a pas de mot de passe ! 
 +
 +Il faut par conséquence en définir un en urgence !
 +
 +Pour sortir de l'administration de %%MariaDB%%, utilisez la commande **exit** :
 +
 +<code>
 +MariaDB [mysql]> exit
 +Bye
 +[root@centos7 ~]# 
 +</code>
 +
 +Pour définir le mot de passe **fenestros** pour root, il convient de saisir la commande suivante :
 +
 +<code>
 +[root@centos7 ~]# mysqladmin -u root password fenestros
 +</code>
 +
 +Lors de la prochaine tentative de connexion en tant que root, vous obtiendrez un message d'erreur car le mot de passe est maintenant non-null :
 +
 +<code>
 +[root@centos7 ~]# mysql -u root
 +ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
 +</code>
 +
 +Pour vous connecter en tant que l'administrateur de la base il faut maintenant utiliser la commande suivante :
 +
 +<code>
 +[root@centos7 ~]# mysql -u root -p mysql
 +Enter password: fenestros
 +Reading table information for completion of table and column names
 +You can turn off this feature to get a quicker startup with -A
 +
 +Welcome to the MariaDB monitor.  Commands end with ; or \g.
 +Your MariaDB connection id is 5
 +Server version: 5.5.56-MariaDB MariaDB Server
 +
 +Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
 +
 +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 +
 +MariaDB [mysql]> 
 +</code>
 +
 +<WRAP center round important 60%>
 +**Important** - Notez l'utilisation de l'option **-p** qui indique à **MariaDB** que vous souhaitez saisir un mot de passe. Le mot de passe n'est **pas** mysql mais **fenestros**, comme démontre l'exemple ci-dessus. Bien entendu le mot de passe **fenestros** n'apparaît pas réellement en clair. L'utilisation de l'option **mysql** dans la ligne de commande indique simplement que nous souhaitons se connecter à la base **mysql** dès la connexion.
 +</WRAP>
 +
 +Saisissez la commande suivante pour vérifier la table des utilisateurs :
 +
 +<code>
 +MariaDB [mysql]> SELECT host, user, password FROM user;
 ++-----------------------+-------+-------------------------------------------+
 +| host                  | user  | password                                  |
 ++-----------------------+-------+-------------------------------------------+
 +| localhost             | root  | *00269BA49BEC800F9CCF34C20C1FD83E0236B89A |
 +| centos7.fenestros.loc | root  |                                           |
 +| 127.0.0.1             | root  |                                           |
 +| ::1                   | root  |                                           |
 ++-----------------------+-------+-------------------------------------------+
 +7 rows in set (0.00 sec)
 +
 +MariaDB [mysql]> 
 +</code>
 +
 +<WRAP center round important 60%>
 +**Important** - Notez que non seulement le mot de passe de root est présent mais qu'il a été crypté. Vous avez aussi la possibilité de sécuriser votre installation de MariaDB en utilisant le script **/usr/bin/mysql_secure_installation**.
 +</WRAP>
 +
 +====LAB #3 - Le Langage SQL====
 +
 +Créez maintenant la base de données **%%CarnetAdresses%%** :
 +
 +<code>
 +mysql> CREATE DATABASE `CarnetAdresses` ;
 +Query OK, 1 row affected (0.00 sec)
 +
 +mysql> 
 +</code>
 +
 +Créez ensuite deux tables **familles** et **enfants** dans la base **CarnetAdresses** :
 +
 +<code>
 +MariaDB [(none)]> use CarnetAdresses;
 +Reading table information for completion of table and column names
 +You can turn off this feature to get a quicker startup with -A
 +
 +Database changed
 +MariaDB [CarnetAdresses]>
 +</code>
 +
 +<code>
 +MariaDB [CarnetAdresses]> CREATE TABLE familles (CodeFamille BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, Nom VARCHAR(40), PrenomPere VARCHAR(40) , PrenomMere VARCHAR(40) , Adresse1 VARCHAR(40) , Adresse2 VARCHAR(40), CodePostal VARCHAR(5), Ville VARCHAR(40), ProfPere VARCHAR(40), ProfMere VARCHAR(40));
 +Query OK, 0 rows affected (0.03 sec)
 +
 +MariaDB [CarnetAdresses]> 
 +</code>
 +
 +Pour plus de facilité, copiez simplement la requête et collez-la dans votre terminal :
 +
 +<file text familles>
 +CREATE TABLE familles (CodeFamille BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, Nom VARCHAR(40), PrenomPere VARCHAR(40) , PrenomMere VARCHAR(40) , Adresse1 VARCHAR(40) , Adresse2 VARCHAR(40), CodePostal VARCHAR(5), Ville VARCHAR(40), ProfPere VARCHAR(40), ProfMere VARCHAR(40));
 +</file>
 +
 +<code>
 +MariaDB [CarnetAdresses]> CREATE TABLE Enfants ( CodeFamille BIGINT NOT NULL, Prenom VARCHAR(40) NOT NULL, Sexe VARCHAR(1) NOT NULL, DateNaissance DATE NOT NULL, PRIMARY KEY (CodeFamille));
 +Query OK, 0 rows affected (0.02 sec)
 +
 +MariaDB [CarnetAdresses]>
 +</code>
 +
 +Pour plus de facilité, copiez simplement la requête et collez-la dans votre terminal :
 +
 +<file text enfants>
 +CREATE TABLE Enfants ( CodeFamille BIGINT NOT NULL, Prenom VARCHAR(40) NOT NULL, Sexe VARCHAR(1) NOT NULL, DateNaissance DATE NOT NULL, PRIMARY KEY (CodeFamille));
 +</file>
 +
 +Utilisez ensuite la commande SHOW pour visualiser le résultat de chaque instruction, par exemple :
 +
 +<code>
 +MariaDB [CarnetAdresses]> SHOW DATABASES;
 ++--------------------+
 +| Database           |
 ++--------------------+
 +| information_schema |
 +| CarnetAdresses     |
 +| Nombres            |
 +| mysql              |
 +| performance_schema |
 +| test               |
 ++--------------------+
 +6 rows in set (0.00 sec)
 +
 +MariaDB [CarnetAdresses]>
 +</code>
 +
 +<code>
 +MariaDB [CarnetAdresses]> SHOW TABLES FROM CarnetAdresses;
 ++--------------------------+
 +| Tables_in_CarnetAdresses |
 ++--------------------------+
 +| Enfants                  |
 +| familles                 |
 ++--------------------------+
 +2 rows in set (0.00 sec)
 +
 +MariaDB [CarnetAdresses]> 
 +</code>
 +
 +<code>
 +MariaDB [CarnetAdresses]> SHOW COLUMNS FROM familles FROM CarnetAdresses;
 ++-------------+-------------+------+-----+---------+----------------+
 +| Field       | Type        | Null | Key | Default | Extra          |
 ++-------------+-------------+------+-----+---------+----------------+
 +| CodeFamille | bigint(20)  | NO   | PRI | NULL    | auto_increment |
 +| Nom         | varchar(40) | YES  |     | NULL    |                |
 +| PrenomPere  | varchar(40) | YES  |     | NULL    |                |
 +| PrenomMere  | varchar(40) | YES  |     | NULL    |                |
 +| Adresse1    | varchar(40) | YES  |     | NULL    |                |
 +| Adresse2    | varchar(40) | YES  |     | NULL    |                |
 +| CodePostal  | varchar(5)  | YES  |     | NULL    |                |
 +| Ville       | varchar(40) | YES  |     | NULL    |                |
 +| ProfPere    | varchar(40) | YES  |     | NULL    |                |
 +| ProfMere    | varchar(40) | YES  |     | NULL    |                |
 ++-------------+-------------+------+-----+---------+----------------+
 +10 rows in set (0.00 sec)
 +
 +MariaDB [CarnetAdresses]> 
 +</code>
 +
 +<code>
 +MariaDB [CarnetAdresses]> SHOW INDEX FROM familles;
 ++----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
 +| Table    | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
 ++----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
 +| familles |          0 | PRIMARY  |            1 | CodeFamille | A                   0 |     NULL | NULL        | BTREE      |                       |
 ++----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
 +1 row in set (0.00 sec)
 +
 +MariaDB [CarnetAdresses]> 
 +</code>
 +
 +<code>
 +MariaDB [CarnetAdresses]> SHOW TABLE STATUS FROM CarnetAdresses;
 ++----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------+
 +| Name     | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time | Check_time | Collation         | Checksum | Create_options | Comment |
 ++----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------+
 +| Enfants  | InnoDB |      10 | Compact    |    0 |              0 |       16384 |               0 |            0 |   9437184 |           NULL | 2017-10-30 15:17:13 | NULL        | NULL       | latin1_swedish_ci |     NULL |                |         |
 +| familles | InnoDB |      10 | Compact    |    0 |              0 |       16384 |               0 |            0 |   9437184 |              1 | 2017-10-30 15:15:49 | NULL        | NULL       | latin1_swedish_ci |     NULL |                |         |
 ++----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------+
 +2 rows in set (0.00 sec)
 +
 +MariaDB [CarnetAdresses]> 
 +</code>
 +
 +Créez les enregistrements dans la table **familles** :
 +
 +<file text data>
 +INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Durant', 'Jacques', 'Jane', '23 rue Dutor','','92200', 'Neuilly', 'Plombier',''); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Tortua', 'Benoît', 'Carole', '7 rue Verget','', '75005', 'Paris', 'Cadre', 'Cadre'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Portier', 'Pierre', 'Elisabeth', '5 rue Toulet','', '92200', 'Neuilly', 'Dentiste',''); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Renault', 'Damien', 'Anne', '2 rue Ragon','', '75007', 'Paris', 'Comptable', 'Enseignante'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Darduet', 'Jean','','','','','','',''); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Rodier', 'Gérard', 'Aurélie', '6 rue Agien','', '77000', 'Fontainebleau', 'Professeur',''); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Tarte', 'Alla', 'Crème', '1 allée Durond','', '92200', 'Neuilly', 'Cuisinier', 'Cuisinière'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Cohen', 'David', 'Sarah', '7 Av d\'Eylau','', '75016', 'Paris', 'PDG', 'Assistante Direction'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Dupont2', 'Bruno', 'Odile', '12 rue Sébastien','', '75008', 'PARIS', 'Electricien', 'Comptable'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Durand2', 'Jacques', 'Jane', '23 rue Dutor','', '92200', 'Neuilly', 'Plombier',''); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Darmon2', 'Bruno', 'Béatrice', '2 rue Nicolo','', '13008', 'Marseille', 'Cadre', 'Peintre'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Darduet2', 'Jean', '','' ,'' ,'' ,'','',''); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Tarte2', 'Alla', 'Crème', '1 allée Durond','', '92200', 'Neuilly', 'Cuisinier', 'Cuisinière'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Cohen2', 'David', 'Sarah', '7 Av d\'Eylau','', '75016', 'Paris', 'PDG', 'Assistante Direction');
 +</file>
 +
 +<code>
 +MariaDB [CarnetAdresses]> INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Durant', 'Jacques', 'Jane', '23 rue Dutor','','92200', 'Neuilly', 'Plombier',''); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Tortua', 'Benoît', 'Carole', '7 rue Verget','', '75005', 'Paris', 'Cadre', 'Cadre'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Portier', 'Pierre', 'Elisabeth', '5 rue Toulet','', '92200', 'Neuilly', 'Dentiste',''); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Renault', 'Damien', 'Anne', '2 rue Ragon','', '75007', 'Paris', 'Comptable', 'Enseignante'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Darduet', 'Jean','','','','','','',''); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Rodier', 'Gérard', 'Aurélie', '6 rue Agien','', '77000', 'Fontainebleau', 'Professeur',''); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Tarte', 'Alla', 'Crème', '1 allée Durond','', '92200', 'Neuilly', 'Cuisinier', 'Cuisinière'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Cohen', 'David', 'Sarah', '7 Av d\'Eylau','', '75016', 'Paris', 'PDG', 'Assistante Direction'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Dupont2', 'Bruno', 'Odile', '12 rue Sébastien','', '75008', 'PARIS', 'Electricien', 'Comptable'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Durand2', 'Jacques', 'Jane', '23 rue Dutor','', '92200', 'Neuilly', 'Plombier',''); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Darmon2', 'Bruno', 'Béatrice', '2 rue Nicolo','', '13008', 'Marseille', 'Cadre', 'Peintre'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Darduet2', 'Jean', '','' ,'' ,'' ,'','',''); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Tarte2', 'Alla', 'Crème', '1 allée Durond','', '92200', 'Neuilly', 'Cuisinier', 'Cuisinière'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Cohen2', 'David', 'Sarah', '7 Av d\'Eylau','', '75016', 'Paris', 'PDG', 'Assistante Direction');
 +Query OK, 1 row affected (0.01 sec)
 +
 +Query OK, 1 row affected (0.00 sec)
 +
 +Query OK, 1 row affected (0.01 sec)
 +
 +Query OK, 1 row affected (0.01 sec)
 +
 +Query OK, 1 row affected (0.00 sec)
 +
 +Query OK, 1 row affected (0.00 sec)
 +
 +Query OK, 1 row affected (0.01 sec)
 +
 +Query OK, 1 row affected (0.00 sec)
 +
 +Query OK, 1 row affected (0.01 sec)
 +
 +Query OK, 1 row affected (0.00 sec)
 +
 +Query OK, 1 row affected (0.01 sec)
 +
 +Query OK, 1 row affected (0.00 sec)
 +
 +Query OK, 1 row affected (0.01 sec)
 +
 +Query OK, 1 row affected (0.00 sec)
 +
 +MariaDB [CarnetAdresses]>
 +</code>
 +
 +
 +Saisissez maintenant chacune des commandes suivantes et expliquez le résultat obtenu. Les instructions sont numérotées pour faciliter vos prises de notes.
 +
 +| 1 | ALTER TABLE Enfants ADD INDEX (Prenom); |
 +| 2 | ALTER TABLE Enfants DROP INDEX Prenom; |
 +| 3 | ALTER TABLE Enfants ADD %%TelPort%% VARCHAR(50) NOT NULL; |
 +| 4 | ALTER TABLE Enfants CHANGE %%TelPort%% %%TelPort%% VARCHAR( 22 ) NOT NULL; |
 +| 5 | ALTER TABLE Enfants ADD Test VARCHAR( 40 ) NOT NULL; |
 +| 6 | ALTER TABLE Enfants DROP Test; |
 +| 7 | SELECT * FROM familles; |
 +| 8 | SELECT * FROM familles LIMIT 8,12; |
 +
 +<WRAP center round important 60%>
 +**Important** - **LIMIT** - Avec un argument, la valeur spécifie le nombre de lignes à retourner depuis le début du jeu de résultat. Si deux arguments sont donnés, le premier indique le décalage du premier enregistrement à retourner, le second donne le nombre maximum d'enregistrement à retourner. Le décalage du premier enregistrement est 0 (pas 1).
 +</WRAP>
 +
 +
 +| 9 | UPDATE familles SET Adresse1 = '120 rue de Vaugirard', %%CodePostal%% = '75015', Ville = 'PARIS' WHERE Nom = 'DARDUET' AND %%PrenomPere%% = 'Jean' LIMIT 1; |
 +| 10 | DELETE FROM familles WHERE Nom = 'DURANT' AND %%PrenomPere%% = 'Jacques'; |
 +| 11 | DELETE FROM familles WHERE Ville = 'Neuilly'; |
 +| 12 | SELECT * FROM familles LIMIT 8,12; |
 +| 13 | SELECT nom, %%PrenomPere%% FROM familles; |
 +| 14 | SELECT Nom AS 'Nom de famille', %%PrenomPere%% AS 'Prenom du Père' FROM familles; |
 +| 15 | INSERT INTO Enfants (Prenom, Sexe, %%CodeFamille%%) VALUES ('Georges', 'M', '14'); |
 +| 16 | SELECT familles.nom, familles.%%PrenomPere%% FROM familles, Enfants; |
 +
 +<WRAP center round important 60%>
 +**Important** - Créez la colonne **familles.nb_enfants**.
 +</WRAP>
 +
 +| 17 | UPDATE familles SET nb_enfants = '2' WHERE %%CodeFamille%% = '2'; |
 +| 18 | UPDATE familles SET nb_enfants = '1' WHERE %%CodeFamille%% = '4'; |
 +| 19 | UPDATE familles SET nb_enfants = '3' WHERE %%CodeFamille%% = '5'; |
 +| 20 | UPDATE familles SET nb_enfants = '2' WHERE %%CodeFamille%% = '6'; |
 +| 21 | UPDATE familles SET nb_enfants = '4' WHERE %%CodeFamille%% = '8'; |
 +| 22 | UPDATE familles SET nb_enfants = '5' WHERE %%CodeFamille%% = '9';
 +| 23 | UPDATE familles SET nb_enfants = '3' WHERE %%CodeFamille%% = '11'; |
 +| 24 | UPDATE familles SET nb_enfants = '1' WHERE %%CodeFamille%% = '12'; |
 +| 25 | UPDATE familles SET nb_enfants = '5' WHERE %%CodeFamille%% = '14'; |
 +| 26 | SELECT SUM(nb_enfants) FROM familles; |
 +| 27 | SELECT MIN(nb_enfants) AS 'Nb enfants minimum', MAX(nb_enfants) AS 'Nb enfants maximum', AVG(nb_enfants) AS 'Nb enfants moyen' FROM familles; |
 +| 28 | SELECT nom FROM familles WHERE ville = 'Paris'; |
 +| 29 | SELECT nom FROM familles WHERE ville = 'Paris' OR ville = 'Neuilly'; |
 +| 30 | ALTER TABLE Enfants DROP PRIMARY KEY; |
 +| 31 | INSERT INTO Enfants (Prenom, Sexe, %%CodeFamille%%) VALUES ('Alex', 'F', '12'); |
 +| 32 | INSERT INTO Enfants (Prenom, Sexe, %%CodeFamille%%) VALUES ('Mila', 'F', '2'); |
 +| 33 | INSERT INTO Enfants (Prenom, Sexe, %%CodeFamille%%) VALUES ('Amandine', 'F', '5'); |
 +| 34 | SELECT  familles.Nom , Enfants.Prenom FROM familles, Enfants WHERE ( Enfants.%%CodeFamille%% = familles.%%CodeFamille%% ); |
 +| 35 | SELECT familles.nom, familles.%%PrenomPere%% FROM familles, Enfants; |
 +| 36 | SELECT ville, min(nb_enfants) as 'Nb enfants minimum', max(nb_enfants) as ' Nb enfants maximum', avg(nb_enfants) as 'Nb enfants moyen' from familles GROUP BY Ville; |
 +| 37 | SELECT * FROM familles ORDER BY nom; |
 +| 38 | SELECT * FROM familles GROUP BY ville, Nom; |
 +| 39 | %%UPDATE familles SET Adresse2 = '-';%% |
 +| 40 | %%UPDATE familles SET Adresse2 = '___',nb_enfants=2;%% |
 +| 41 | UPDATE familles SET nb_enfants=4 WHERE Ville = 'Paris'; |
 +| 42 | UPDATE familles SET nb_enfants=7 LIMIT 4; |
 +| 43 | UPDATE familles SET nb_enfants=8 ORDER BY Nom LIMIT 3; |
 +| 44 | DELETE FROM familles WHERE Nom = 'Dupont'; |
 +| 45 | CREATE TABLE loisirs( Nom VARCHAR( 30 ) NOT NULL ); |
 +| 46 | DROP TABLE loisirs; |
 +| 47 | INSERT INTO familles (Nom, %%PrenomPere%%) VALUES ('Alouet','Jean'),('Rahtmi','Patrick'); |
 +| 48 | INSERT INTO familles (%%PrenomPere%%) SELECT Enfants.prenom FROM Enfants; |
 +| 49 | ALTER TABLE familles ADD Sports VARCHAR(50) NOT NULL; |
 +| 50 | ALTER TABLE familles ADD INDEX (Sports); |
 +| 51 | ALTER TABLE familles ADD INDEX (%%PrenomPere%%), ADD %%EmailPere%% VARCHAR( 50 ) NOT NULL; |
 +| 52 | ALTER TABLE familles CHANGE %%PrenomPere%% Prenom_Pere VARCHAR( 45 ) NOT NULL; |
 +| 53 | ALTER TABLE familles DROP Sports; |
 +| 54 | ALTER TABLE familles DROP INDEX %%PrenomPere%%; |
 +| 55 | ALTER TABLE familles DISABLE KEYS; |
 +| 56 | ALTER TABLE Enfants RENAME familles_enfants; |
 +| 57 | ALTER TABLE familles ORDER BY Prenom_Pere; |
 +| 58 | ALTER TABLE familles ADD Commentaire LONGTEXT NOT NULL ; |
 +| 59 | ALTER TABLE familles ADD FULLTEXT (Commentaire); |
 +| 60 | UPDATE familles SET Commentaire = 'La vie est un long fleuve tranquille' WHERE %%CodeFamille%% = '11'; |
 +| 61 | UPDATE familles SET Commentaire = 'Paris, capitale de la France est traversée par un fleuve' WHERE %%CodeFamille%% ='4'; |
 +| 62 | UPDATE familles SET Commentaire = 'Le ruisseau se jette dans la rivière qui se jette dans le FLEUVE' WHERE %%CodeFamille%% = '6'; |
 +| 63 | SELECT * FROM familles WHERE MATCH (Commentaire) AGAINST ('fleuve'); |
 +| 64 | SELECT Nom, Commentaire FROM familles WHERE  MATCH (Commentaire) AGAINST ('-capitale+fleuve'IN BOOLEAN MODE); |
  
 ----- -----
  
-Copyright © 2023 Hugh Norris.+Copyright © 2024 Hugh Norris.
  
Menu