Support Papier2
Support Papier2
Support Papier2
DE DONNEES ET DES
TABLES (SQL)
6. Exercice ........................................................................................................................................................ 11
1. Exercice ........................................................................................................................................................ 15
Objectifs
3
CRÉATION DE BASE DE DONNÉES ET DES TABLES
CRÉATION DE BASE
DE DONNÉES ET DES I
TABLES
4
1. Création de base de données
1.1. Création
Une base de données informatique est un ensemble de données qui ont été stockées sur un support informatique,
et organisées et structurées de manière à pouvoir facilement consulter et modifier leur contenu.
Remarque
NB : N'utilisez jamais, d'espaces ou d'accents dans vos noms de bases, tables ou colonnes. Au lieu d'avoir une
colonne "date de naissance", préférez "date_de_naissance" ou "date_naissance". Et au lieu d'avoir une colonne
"prénom", utilisez "prenom". Avouez que ça reste lisible, et ça vous évitera pas mal d'ennuis.
Évitez également d'utiliser des mots réservés comme nom de colonnes/tables/bases. Par "mot réservé", j'entends
un mot-clé SQL, donc un mot qui sert à définir quelque chose dans le langage SQL
Nous allons donc créer notre base de données, que nous appellerons apprentissage. La commande SQL pour
créer une base de données est la suivante :
En créant la base de données, il faut également définir l'encodage qui sera utilisé. La commande SQL complète
à taper pour créer votre base est :
1.2. Suppression
Syntaxe
La commande SQL pour supprimerune base de données est :
Syntaxe
Pour pouvoir agir sur cette base, vous devez d'abord la sélectionner. Ainsi, toutes les actions effectuées seront
sur la base de données apprentissage (création et modification...) La commande SQL est la suivante :
5
Types numériques
- Nombres entiers
- Nombres décimaux
Cinq mots-clés permettent de stocker des nombres décimaux dans une colonne : DECIMAL, NUMERIC, FLOAT
, REAL et DOUBLE.
Types alphanumériques
- CHAR et VARCHAR
Pour stocker un texte relativement court (moins de 255 caractères), vous pouvez utiliser les types
CHAR et VARCHAR.
- TEXT
Il suffit alors d'utiliser le type TEXT, ou un de ses dérivés TINYTEXT, MEDIUMTEXT ou
LONGTEXT.
- TYPE BINAIRE
Comme les chaînes de type texte que l'on vient de voir, une chaîne binaire n'est rien d'autre qu'une suite
de caractères.
Cependant, si les textes sont affectés par l'encodage et l'interclassement, ce n'est pas le cas des chaînes
binaires. Une chaîne binaire n'est rien d'autre qu'une suite d'octets. Aucune interprétation n'est faite sur
ces octets. Ceci a deux conséquences principales.
1. Une chaîne binaire traite directement l'octet, et pas le caractère que l'octet représente. Donc par
exemple, une recherche sur une chaîne binaire sera toujours sensible à la casse, puisque " A" (
code binaire : 01000001) sera toujours différent de "a" (code binaire : 01100001).
2. Tous les caractères sont utilisables, y compris les fameux caractères de contrôle non-affichables
définis dans la table ASCII.
VARBINARY(x) et BINARY(x) permettent de stocker des chaînes binaires de xcaractères
maximum (avec une gestion de la mémoire identique à VARCHAR(x) et CHAR(x)). Pour les
chaînes plus longues, il existe les types TINYBLOB, BLOB, MEDIUMBLOB et LONGBLOB,
également avec les mêmes limites de stockage que les types TEXT.
- ENUM
ENUM est une colonne pour laquelle on définit un certain nombre de valeurs autorisées, de type "chaîne
de caractère". Par exemple, si l'on définit une colonne statut (pour un type de statut d'étudiant) de la
manière suivante :
6
- SET
SET est en effet une colonne qui permet de stocker une chaîne de caractères dont les valeurs possibles
sont prédéfinies par l'utilisateur. La différence avec ENUM, c'est qu'on peut stocker dans la colonne
entre 0 et x valeur(s), x étant le nombre de valeurs autorisées.
Types temporels
Les cinq types temporels de MySQL sont DATE, DATETIME, TIME, TIMESTAMP et YEAR.
- DATE : il est utilisé pour désigner les dates sous les formats ci-dessous :
• 'AAAA-MM-JJ'
• 'AAMMJJ'
• 'AAAA/MM/JJ'
• 'AA+MM+JJ'
• 'AAAA%MM%JJ'
• AAAAMMJJ (nombre)
• AAMMJJ (nombre)
- DATETIME il est utilisé pour désigner les dates et heures sous les formats ci-dessous :
• 'AAAA-MM-JJ HH:MM:SS'
• 'AA*MM*JJ HH+MM+SS'
• AAAAMMJJHHMMSS
- TIME : il est utilisé pour désigner l'heure sous les formats ci-dessous :
• 'HH:MM:SS'
• 'HHH:MM:SS'
• 'MM:SS'
• 'J HH:MM:SS'
• 'HHMMSS'
• HHMMSS (nombre)
- YEAR : il est utilisé pour désigner l'année sous le format AAAA.
Exemple de : 2018
Les index sont utilisés pour accélérer les requêtes (notamment les requêtes impliquant plusieurs tables, ou les
requêtes de recherche), et sont indispensables à la création de clés, étrangères et primaires, qui permettent de
garantir l'intégrité des données de la base
7
- Permet d'identifier chaque ligne de manière unique : dans ce cas, une clé primaire ne peut pas être NULL.
4. Création de tables
Identité
Imaginez que quelqu'un ait le même nom de famille que vous, le même prénom, soit né dans la même ville et
ait la même taille. En dehors de la photo et de la signature, quelle sera la différence entre vos deux cartes
d'identité ? Son numéro !
Suivant le même principe, on va donner à chaque animal un numéro d'identité. La colonne qu'on ajoutera
s'appellera donc id, et il s'agira d'un INT, toujours positif donc UNSIGNED. Selon la taille de l'élevage (la taille
actuelle mais aussi la taille qu'on imagine qu'il pourrait avoir dans le futur !), il peut être plus intéressant
d'utiliser un SMALLINT, voire un MEDIUMINT. Comme il est peu probable que l'on dépasse les 65000
animaux, on utilisera SMALLINT.
Ce champ ne pourra bien sûr pas être NULL, sinon il perdrait toute son utilité.
Clé primaire
La clé primaire d'une table est une contrainte d'unicité, composée d'une ou plusieurs colonnes. La clé primaire
d'une ligne permet d'identifier de manière unique cette ligne dans la table. En utilisant id comme la clé primaire
de la table Etudiant on aura PRIMARY KEY(id) comme déclaration de la clé primaire.
Lorsque vous insérerez une nouvelle ligne dans la table, MySQL vérifiera que vous insérez bien un id, et que
cet id n'existe pas encore dans la table. Si vous ne respectez pas ces deux contraintes, MySQL n'insérera pas la
ligne et vous renverra une erreur.
Auto-incrémentation
Il faut donc, pour chaque animal, décider d'une valeur pour id. Le plus simple, et le plus logique, est de donner
le numéro 1 au premier individu enregistré, puis le numéro 2 au second, etc. Mais si vous ne vous souvenez pas
quel numéro vous avez utilisé en dernier, pour insérer un nouvel animal il faudra récupérer cette information
dans la base, ensuite seulement vous pourrez ajouter une ligne en lui donnant comme id le dernier id utilisé + 1.
C'est bien sûr faisable, mais c'est fastidieux... Heureusement, il est possible de demander à MySQL de faire tout
ça pour nous ! Comment ? En utilisant l'auto-incrémentation des colonnes. Incrémenter veut dire "ajouter une
valeur fixée". Donc, si l'on déclare qu'une colonne doit s'auto-incrémenter (grâce au mot-clé
AUTO_INCREMENT), plus besoin de chercher quelle valeur on va mettre dedans lors de la prochaine insertion.
MySQL va chercher ça tout seul comme un grand en prenant la dernière valeur insérée et en l'incrémentant de 1.
8
Pour qu'une table utilise le moteur de notre choix qui est par exemple InnoDB, il suffit d'ajouter ceci à la fin de
la commande de création :
Syntaxe
création de table
9
Exemple
Si l'on reprend l'exemple initial des 2 tables liées film et realisateur. Les requêtes de création de ces tables sans
contrainte d'intégrité seraient quelque chose du genre:
Attention
Avec une contrainte d'intégrité les requêtes deviennent :
10
6. Exercice
Pour la mise en place d'un répertoire téléphonique des étudiants de l'UVCI, M. GOVOU veut constituer une
base de données pour faciliter sa tâche.
11
MANIPULATION DES DONNEES
MANIPULATION DES
DONNEES II
Insertion de données
Deux possibilités s'offrent à nous lorsque l'on veut insérer une ligne (un enregistrement) dans une table : soit
donner une valeur pour chaque colonne de la ligne, soit ne donner les valeurs que de certaines colonnes, auquel
cas il faut bien sûr préciser de quelles colonnes il s'agit.
Nous avons la table etudiant avec les propriétés suivantes : matricule, nom, prenoms, date_naissance, sexe)
Syntaxe
Insertion sans préciser les colonne
Syntaxe
Insertion en précisant les colonnes
Syntaxe
Insertion multiple
Sélection de données
La requête qui permet de sélectionner et afficher des données s'appelle SELECT. SELECT permet donc
d'afficher des données directement. Des chaînes de caractères, des résultats de calculs, etc.
12
MANIPULATION DES DONNEES
Exemple
Fondamental
(*)Signifie : Sélectionner toutes les colonnes de la table etudiant.
Les opérateurs de comparaison sont les symboles que l'ont utilise pour définir les critères de recherche. Huit
opérateurs simples peuvent être utilisés
13
MANIPULATION DES DONNEES
Syntaxe
Combinaisons de critères
Ils sont au nombre de 4 opérateurs et sont utilisés pour de combiner des critères.
Syntaxe
14
Suppression de données
La commande utilisée pour supprimer des données est DELETE. Cette opération est irréversible, soyez très
prudents !
On utilise la clause WHERE de la même manière qu'avec la commande SELECT pour préciser quelles lignes
doivent être supprimées.
Syntaxe
Modification de données
La modification des données se fait grâce à la commande UPDATE, dont la syntaxe est la suivante :
Syntaxe
1. Exercice
Soient les tables t_client et t_compte ci-dessous :
1. Ecrire le code SQL pour insérer trois (03) clients dans la table.
2. Exemple : nom= ‘KOUADIO', prenoms='Sosthène', sexe='M', contact='07 08 01 00',
reseau_mobile='Orange'
3. Ecrire le code SQL, pour afficher la liste de tous les clients par ordre alphabétique.
4. Ecrire le code SQL, pour afficher tous les clients qui sont sur le réseau mobile Orange.
5. Ecrire le code SQL, pour afficher le nom, prénoms et sexe de tous les hommes qui sont sur le réseau
MTN.
6. Ecrire le code SQL, pour afficher les informations du compte d'un client selon son id_client.
7. Ecrire le code SQL, pour afficher les 5 premiers clients enregistrés dans la journée en cours.
8. Ecrire le code SQL, pour afficher tous les comptes qui ne sont pas vides.
9. Ecrire le code SQL, pour afficher tous les comptes dont le solde est 0, et qui ont été créés dans le mois
de Juin.
10. Ecrire le code SQL, pour afficher le numéro de compte, nom, prénoms et contact des clients qui sont
sur le réseau Moov, et dont le solde est supérieur à 50.000F
15