Seance 1introduction
Seance 1introduction
Seance 1introduction
Travaux Pratiques
Yahya Benkaouz
y.benkaouz@um5r.ac.ma
Departement Informatique
Objectifs
• Maitriser les concepts de base du langage SQL.
• Se familiariser avec le SGBDR MySQL.
• Etudier en détail les instructions de base de SQL.
• Maitriser la déclaration, la manipulation, et l’interrogation des tables.
2
Plan
• Concepts de base
• Définition de données
• Evolution d’un schéma
• Manipulation de données
• Interrogation des données
3
CONCEPTS DE BASE
4
Base de données
• Une collection d’informations organisées
• afin d’être facilement consultables, gérables et mises à jour.
5
Base de données
• Les BD sont utilisées par de nombreuses entreprises dans toutes les industries.
• Compagnies aériennes pour gérer les réservations.
• Les enregistrements médicaux dans les hôpitaux.
• Les agences gouvernementales.
• Les universités.
• …
6
SGBD
• SGBD:
• Un système de gestion de base de données.
• Un ensemble de logiciels qui manipulent le contenu des bases de données.
• Ex: IBM DB2, Oracle Database, MySQL, PostgreSQL et Microsoft SQL Server
• Objectif: Garantir la cohérence du contenu de le BD
• Assure un accès facile aux données
• Accès simultanés de plusieurs utilisateurs
• Manipulation de données faciles
BD
SGBD
SGBDR: SGBD implémentant la théorie des BD relationnelles => Garantir l’intégrité des données
7
SGBD
• MySQL:
• L’un des SGBD les plus populaires.
• Il est distribué sous double licence, une licence publique générale GNU et une propriétaire.
• Il est développé, distribué et pris en charge par Oracle Corporation.
• Les bases de données MySQL sont des bases de données relationnelles.
8
SQL
• SQL: Structured Query Language.
• “Un langage informatique normalisé servant à exploiter des bases de données
relationnelles”. wikipedia
SQL
Langage de définition des données Langage de manipulation des données Langage de contrôle
(CREATE, ALTER, DROP) (INSERT, UPDATE, DELETE)
de données de transactions
(GRANT, REVOKE) (COMMIT, DRAWBACK)
9
SQL
• Il comprend trois domaines :
• Langage de définition des données
• permet de créer et de modifier l'organisation des données dans la base de données
• Langage de contrôle
• Contrôle de transaction: commencer et de terminer des transactions
• Contrôle de donnée: autoriser ou d'interdire l'accès à certaines données à certaines personnes
10
SQL
Insertion des commentaires:
• Sur une ligne en utilisant --
• Sur plusieurs lignes entre /* et */
• Nomenclature:
• Tous les noms d’objets (Table, attributs,….) doivent respecter les règles suivantes:
• Commencer par une lettre
• Ne pas contenir un espace
• Ne pas dépasser 128 caractères parmi: Lettres non accentués, chiffres, @, $, #, _
11
DEFINITION DES DONNEES
12
Définitions de données
Base de
Tables
données
Création Création
Suppression Modification
Suppression
13
Création d’une base de données
• Pour créer une base de données qui sera appelé “ma_base” il suffit d’utiliser la requête suivante
qui est très simple:
CREATE DATABASE ma_base
• Avec MySQL, si une base de données porte déjà ce nom, la requête retournera une erreur. Pour
éviter d’avoir cette erreur, il convient d’utiliser la requête suivante pour MySQL:
• L’option IF NOT EXISTS permet juste de ne pas retourner d’erreur si une base du même nom existe
déjà. La base de données ne sera pas écrasée.
14
Suppression d’une base de données
• En SQL, la commande DROP DATABASE permet de supprimer totalement une base de données et tout ce
qu’elle contient.
• Par défaut, si le nom de base utilisé n’existe pas, la requête retournera une erreur. Pour éviter d’obtenir cette
erreur si vous n’êtes pas sûr du nom, il est possible d’utiliser l’option IF EXISTS.
• La syntaxe sera alors la suivante:
15
Création de tables
• Une table est une entité qui est contenu dans une base de données pour stocker des données ordonnées
dans des colonnes.
• La création d’une table sert à définir les colonnes et le type de données qui seront contenus dans chacun
des colonne (entier, chaîne de caractères, date, valeur binaire …).
16
Création de tables
• La syntaxe générale pour créer une table est la suivante :
• Type de données:
18
Création de tables
• Nombres entiers:
• Dans un champ DECIMAL(5,3), on peut donc stocker des nombres de 5 chiffres significatifs au maximum, dont 3
chiffres sont après la virgule.
• Par exemple : 12.354, -54.258, 89.2 ou -56.
• DECIMAL(4) est DECIMAL(4, 0) sont deux écritures équivalentes.
• MySQL ne respecte pas toujours cette règle, et utilise parfois l’octet du signe (-) pour stocker les chiffres.
20
Création de tables
• Nombres décimaux :
21
Création de tables
• Nombres décimaux :
• Les nombres stockés en tant que NUMERIC ou DECIMAL sont stockés sous forme de chaînes
de caractères. => Valeurs exactes qui sont stockées
• Les types FLOAT,DOUBLE et REAL sont stockés sous forme de nombres. => Valeurs
approchées qui sont stockées (56,678900000000000001 au lieu de 56,6789)
• S'il est nécessaire de conserver la précision exacte de vos données (données bancaires),
• il est donc conseillé d'utiliser un type numérique à valeur exacte
22
Création de tables
• Données textuelles:
• CHAR vs VARCHAR:
• Pour stocker un texte relativement court (moins de 255 caractères), vous pouvez utiliser les
types CHAR et VARCHAR.
• Ces deux types s'utilisent avec un paramètre qui précise la taille que peut prendre votre texte (entre 1
et 255).
• Un CHAR(x) stockera toujours x caractères, en remplissant si nécessaire le texte avec des espaces vides
pour le completer.
• Un VARCHAR(x) stockera jusqu'à x caractères (entre 0 et x), et stockera en plus en mémoire la taille du
texte stocké.
23
Création de tables
• Données textuelles:
• CHAR vs VARCHAR:
Mémoire Mémoire
Texte CHAR(5) VARCHAR(5)
requise requise
'' ' ' 5 octets '' 1 octet
'tex' 'tex ' 5 octets 'tex' 4 octets
'texte' 'texte' 5 octets 'texte' 6 octets
'texte trop long' 'texte' 5 octets 'texte' 6 octets
24
Création de tables
• Données textuelles:
• TEXT :
• On peut utiliser le type TEXT, ou un de ses dérivés TINYTEXT, MEDIUMTEXT ou LONGTEXT pour stocker
des textes de plus de 255 caractères.
25
Création de tables
• Données textuelles:
• ENUM :
• Une colonne de type ENUM est une colonne pour laquelle on définit un certain nombre de
valeurs autorisées, de type "chaîne de caractères”
espece ENUM('chat', 'chien')
• Si vous essayez d'introduire une chaîne non autorisée, MySQL stockera une chaîne vide ’’ dans le
champ.
• Pour remplir un champ de type ENUM, deux possibilités s'offrent à vous :
• soit remplir directement avec la valeur choisie (ex. "chat”) ;
• soit utiliser l'index de la valeur
• SET :
• Une colonne 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.
espece SET('chat', 'chien')
• La différence avec ENUM, c'est que l'on peut stocker dans la colonne plusieurs valeurs.
• On pourra stocker dans cette colonne :
• '' (chaîne vide ) ;
• 'chat';
• ‘chien' ;
• 'chat,chien’; SET et ENUM sont des types propres à MySQL.
27
Création de tables
• Données temporelles:
• Quelques types temporels de MySQL : DATE, DATETIME, TIME et YEAR.
• Les vérifications faites par MySQL sont des verifications de base : le jour doit être compris entre 1 et 31
et le mois entre 1 et 12. NB: la date 30 Février est aussi acceptable.
• Date:
• Pour entrer une date, l'ordre des données est la seule contrainte.
• Il faut donner d'abord l'année (2 ou 4 chiffres), ensuite le mois (2 chiffres) , et, pour finir, le jour (2
chiffres), sous forme de nombre ou de chaîne de caractères.
• S'il s'agit d'une chaîne de caractères, n'importe quelle ponctuation peut être utilisée comme délimiteur.
• 'AAAA-MM-JJ' (c'est sous ce format-ci qu'une DATE est stockée dans MySQL)
• 'AAMMJJ' • 'AAAA%MM%JJ'
• 'AAAA/MM/JJ' • AAAAMMJJ (nombre)
• 'AA+MM+JJ' • AAMMJJ (nombre)
28
Création de tables
• Données temporelles:
• DateTime :
• Ce type permet de stocker une heure, en plus d'une date.
• Pour la date, année-mois-jour, et pour l'heure, il faut donner d'abord l'heure, ensuite les
minutes, puis les secondes.
• Si l'on utilise une chaîne de caractères, il faut séparer la date et l'heure par une espace.
• Quelques exemples corrects :
• 'AAAA-MM-JJ HH:MM:SS' (c'est sous ce format-ci qu'un DATETIME est stocké dans MySQL)
• 'AA*MM*JJ HH+MM+SS'
• AAAAMMJJHHMMSS (nombre)
29
Création de tables
• Données temporelles:
• Time :
• Il faut d'abord donner l'heure, puis les minutes, puis les seconds
• Chaque partie pouvant être séparée des autres par le caractère :
• Exemples:
• 'HH:MM:SS'
• 'HHH:MM:SS'
• 'MM:SS'
• 'HHMMSS'
• HHMMSS
30
Création de tables
• Données temporelles:
• Year :
• Un type à utiliser si besoin de stocker juste l’année.
• Il ne prend qu'un seul octet en mémoire.
• On ne peut y stocker que des années entre 1901 et 2155.
• On peut entrer une donnée de type YEAR sous forme de chaîne de caractères ou d'entiers,
avec 2 ou 4 chiffres.
pour afficher un tableau d'une database on utilise : DESC NOM_TAB;
31