MYSQL
Types de données
•Nombres entiers
mot-clé INT, et ses déclinaisons TINYINT, SMALLINT, MEDIUMINT et BIGINT.
La différence entre ces types est le nombre d’octets (donc la place en mémoire)
réservés à la valeur du champ.
Types de données
•L’attribut UNSIGNED
Vous pouvez également préciser que vos colonnes sont UNSIGNED, c’est-à-dire
qu’on ne précise pas s’il s’agit d’une valeur positive ou négative (on aura donc
toujours une valeur positive).
Dans ce cas, la longueur de l’intervalle reste la même, mais les valeurs possibles
sont décalées, le minimum valant 0. Pour les TINYINT, on pourra par exemple
aller de 0 à 255.
•DATE, TIME et DATETIME
Comme son nom l’indique, DATE sert à stocker une date. TIME sert quant à lui à
stocker une heure, et DATETIME stocke...une date ET une heure
Types de données
•Nombres décimaux
Cinq mots-clés permettent de stocker des nombres décimaux dans une colonne :
DECIMAL, NUMERIC, FLOAT, REAL et DOUBLE
NUMERIC et DECIMAL: sont équivalents et acceptent deux paramètres : la
précision et l’échelle.
• La précision définit le nombre de chiffres significatifs stockés, donc les 0 à
gauche ne comptent pas. En effet 0024 est équivalent à 24. Il n’y a donc que
deux chiffres significatifs dans 0024.
• L’échelle définit le nombre de chiffres après la virgule.
Dans un champ DECIMAL(5,3), on peut donc stocker des nombres de 5 chiffres
significatifs maximum, dont 3 chiffres sont après la virgule. Par exemple : 12.354, -
54.258, 89.2 ou -56.
Types de données
•CHAR et VARCHAR
Pour stocker un texte relativement court (moins de 255 octets), 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). La différence
entre CHAR et VARCHAR est la manière dont ils sont stockés en mémoire. Un
CHAR(x) stockera toujours x octets, en remplissant si nécessaire
le texte avec des espaces vides pour le compléter, tandis qu’un VARCHAR(x)
stockera jusqu’à x octets (entre 0 et x), et stockera en plus en mémoire la taille du
texte stocké.
Si vous entrez un texte plus long que la taille maximale définie pour le champ,
celui-ci sera tronqué.
Types de données
•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ère”. Par exemple, si l’on
définit une colonne (pour une espèce animale) de la manière suivante
espece ENUM('chat', 'chien', 'tortue')
•SET
SET est fort semblable à ENUM. 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. 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.
Donc, si l’on définit une colonne de type SET de la manière suivante :
espece SET('chat', 'chien', 'tortue')
Création de la base de données
•Création
CREATE DATABASE nom_base;
•Suppression
DROP DATABASE nom_base;
•Utilisation
Pour pouvoir utiliser une BD il faut commencer par la commande suibante
USE nom_base;
Création des tables
•Syntaxe:
Création des tables
•Exemple :
Soit la table Animal defini ci-dessus, donner le script corrsepondant:
Création des tables
•Exemple :
Création des tables
•Verification :
•Structure de la table:
•Suppression de la table:
Les Contraintes
Les contraintes contrôlent des règles de gestion au niveau
d'une table.
Les contraintes empêchent la suppression d'une table
lorsqu'il existe des dépendances.
Types de contraintes valides dans Oracle :
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
La Contrainte NOT NULL
Interdit la présence de valeurs NULL dans la
colonne
EMP
EMPNO ENAME JOB ... COMM DEPTNO
7839 KING PRESIDENT 10
7698 BLAKE MANAGER 30
7782 CLARK MANAGER 10
7566 JONES MANAGER 20
...
Contrainte NOT NULL Absence de contrainte Contrainte
(aucune ligne ne peut NOT NULL NOT NULL
avoir de valeur NULL (toute ligne peut avoir
dans cette colonne) une valeur NULL dans
cette colonne)
La Contrainte NOT NULL
Se définit au niveau colonne
SQL> CREATE TABLE emp(
2 empno NUMERIC(4),
3 ename VARCHAR2(10) NOT NULL,
4 job VARCHAR2(9),
5 mgr NUMERIC (4),
6 hiredate DATE,
7 sal NUMERIC (7,2),
8 comm NUMERIC (7,2),
9 deptno NUMERIC (7,2) NOT NULL);
La Contrainte de Clé UNIQUE
contrainte de clé UNIQUE
DEPT
DEPTNO DNAME LOC
------ ---------- --------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
A insérer Interdit
50 SALES DETROIT (DNAME¾SALES
existe déjà)
60 BOSTON Autorisé
La Contrainte de Clé UNIQUE
Se définit au niveau table ou colonne
SQL> CREATE TABLE dept(
2 deptno NUMERIC (2),
3 dname VARCHAR2(14),
4 loc VARCHAR2(13),
5 CONSTRAINT dept_dname_uk UNIQUE(dname));
La Contrainte PRIMARY KEY
clé PRIMAIRE
DEPT
DEPTNO DNAME LOC
------ ---------- --------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
A insérer interdit (DEPTNO-20
20 MARKETING DALLAS existe déjà)
FINANCE NEW YORK interdit
(DEPTNO est NULL)
La Contrainte PRIMARY KEY
Se définit au niveau table ou colonne
SQL> CREATE TABLE dept(
2 deptno NUMERIC (2),
3 dname VARCHAR2(14),
4 loc VARCHAR2(13),
5 CONSTRAINT dept_dname_uk UNIQUE (dname),
6 CONSTRAINT dept_deptno_pk PRIMARY KEY(deptno));
La Contrainte FOREIGN KEY
DEPT
PRIMARY DEPTNO DNAME LOC
KEY ------ ---------- --------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
...
EMP
EMPNO ENAME JOB ... COMM DEPTNO FOREIGN
KEY
7839 KING PRESIDENT 10
7698 BLAKE MANAGER 30
... Interdit
(DEPTNO¾9
A insérer n'existe pas dans
la table DEPT
7571 FORD MANAGER ... 200 9
7571 FORD MANAGER ... 200 Autorisé
La Contrainte FOREIGN KEY
Se définit au niveau table ou colonne
SQL> CREATE TABLE emp(
2 empno NUMERIC (4),
3 ename VARCHAR2(10) NOT NULL,
4 job VARCHAR2(9),
5 mgr NUMERIC (4),
6 hiredate DATE,
7 sal NUMERIC ( 7,2),
8 comm NUMERIC ( 7,2),
9 deptno NUMERIC ( 7,2) NOT NULL,
10 CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno)
11 REFERENCES dept (deptno));
Mots-clés Associés à la Contrainte
FOREIGN KEY
FOREIGN KEY
Définit la colonne dans la table détail dans une
contrainte de niveau table
REFERENCES
Identifie la table et la colonne de la table maître
ON DELETE CASCADE
Autorise la suppression d’une ligne dans la table
maître et des lignes dépendantes dans la table détail
La Contrainte CHECK
Définit une condition que chaque ligne doit
obligatoirement satisfaire
..., deptno NUMBER(2),
CONSTRAINT emp_deptno_ck
CHECK (DEPTNO BETWEEN 10 AND 99),...
Ajout d'une Contrainte
ALTER TABLE table
ADD [CONSTRAINT constraint] type (column);
Vous pouvez ajouter ou supprimer une contrainte,
mais pas la modifier
Vous pouvez activer ou désactiver des contraintes
Pour ajouter une contrainte NOT NULL, utilisez la
clause MODIFY
Ajout d'une Contrainte
Ajouter une contrainte FOREIGN KEY à la
table EMP précisant qu'un manager doit déjà
exister dans la table EMP en tant qu'employé
valide.
SQL> ALTER TABLE emp
2 ADD CONSTRAINT emp_mgr_fk
3 FOREIGN KEY(mgr) REFERENCES emp(empno);
Table altered.
Suppression d'une Contrainte
Supprimer de la table EMP la contrainte concernant
le manager.
SQL> ALTER TABLE emp
2 DROP CONSTRAINT emp_mgr_fk;
Table altered.
• Supprimer la contrainte PRIMARY KEY de la table DEPT, ainsi que
la contrainte FOREIGN KEY associée définie sur la colonne
EMP.DEPTNO.
SQL> ALTER TABLE dept
2 DROP PRIMARY KEY CASCADE;
Table altered.
Désactivation de Contraintes
Pour désactiver une contrainte d'intégrité, utiliser la
clause DISABLE de l'ordre ALTER TABLE.
Pour désactiver les contraintes d'intégrité
dépendantes, ajouter l'option CASCADE.
SQL> ALTER TABLE emp
2 DISABLE CONSTRAINT emp_empno_pk CASCADE;
Table altered.
Activation de Contraintes
Pour activer une contrainte d'intégrité actuellement
désactivée dans la définition de la table, utiliser la
clause ENABLE.
SQL> ALTER TABLE emp
2 ENABLE CONSTRAINT emp_empno_pk;
Table altered.
Si vous activez une contrainte UNIQUE ou PRIMARY
KEY, un index correspondant est automatiquement
créé.
Vérification des Contraintes
Pour afficher les définitions et noms de toutes les
contraintes, interrogez la table USER_CONSTRAINTS.
SQL> SELECT constraint_name, constraint_type,
2 search_condition
3 FROM user_constraints
4 WHERE table_name = 'EMP';
CONSTRAINT_NAME C SEARCH_CONDITION
------------------------ - -------------------------
SYS_C00674 C EMPNO IS NOT NULL
SYS_C00675 C DEPTNO IS NOT NULL
EMP_EMPNO_PK P
...
Affichage des Colonnes Associées aux
Contraintes
Affichez les colonnes associées aux noms de
contraintes au moyen de la vue
USER_CONS_COLUMNS view
SQL> SELECT constraint_name, column_name
2 FROM user_cons_columns
3 WHERE table_name = 'EMP';
CONSTRAINT_NAME COLUMN_NAME
------------------------- ----------------------
EMP_DEPTNO_FK DEPTNO
EMP_EMPNO_PK EMPNO
EMP_MGR_FK MGR
SYS_C00674 EMPNO
SYS_C00675 DEPTNO
Modification des tables
Lorsque l’on modifie une table, on peut vouloir lui ajouter, retirer ou modifier
quelque chose.
Dans les trois cas, c’est la commande ALTER TABLE qui sera utilisée, une
variante existant pour chacune des opérations :
Modification des tables
•Ajout et suppression d’une colonne
Exemple :
•Ajout et suppression d’une colonne
Exemple :
Modification des tables
•Changement du nom de la colonne
Les mots-clés CHANGE et MODIFY peuvent être utilisés pour changer le
type de donnée de la colonne, mais aussi changer la valeur par défaut ou
ajouter/supprimer une propriété AUTO_IN CREMENT. Si vous utilisez
CHANGE, vous pouvez renommer la colonne en même temps. Si vous ne
désirez pas la renommer, il suffit d’indiquer deux fois le même nom.
Voici les syntaxes possibles :
Modification des tables
•Changement du nom de la colonne
Exemple :
•Changement du type de données
Exemple :
INSERTION DES DONNEES
Deux possibilités s’offrent à nous lorsque l’on veut insérer
une ligne 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.
INSERTION DES DONNEES
Insertion sans préciser les colonnes
INSERT INTO table [(column [, column...])]
VALUES (value [, value...]);
EXEMPLE:
Pour verifier l’insertion:
INSERTION DES DONNEES
Insertion en précisant les colonnes
Insertion multiple
INSERTION DES DONNEES
Syntaxe alternative
SELECT
SYNTAXE
Exemple:
SELECT
La clause WHERE
SELECT [DISTINCT] {*, column [alias], ...}
FROM table
[WHERE condition(s)];
Exemple :
SELECT
Les opérateurs de comparaison
SELECT
Exemple :
SELECT
Combinaisons de critères
SELECT
OR
AND
SELECT
Tri des données
SELECT
En résumé
•La commande SELECT permet d’afficher des données.
•La clause WHERE permet de préciser des critères de sélection.
•Il est possible de trier les données grâce à ORDER BY, selon un ordre
ascendant (ASC) ou descendant (DESC).
•Pour éliminer les doublons, on utilise le mot-clé DISTINCT, juste après
SELECT.
•LIMIT nb_lignes OFFSET decalage permet de sélectionner uniquement
nb_lignes de résultats, avec un certain décalage
SELECT
Éliminer les doublons
Restreindre les résultats
LIMIT s’utilise avec deux paramètres.
— Le nombre de lignes que l’on veut récupérer.
— Le décalage, introduit par le mot-clé OFFSET et qui indique à partir
de quelle ligne on récupère les résultats. Ce paramètre est facultatif.
S’il n’est pas précisé, il est mis à 0.