Créer et remplir des tables avec SQL
Sommaire
- 1- Objectifs
- 2- SQL CREATE TABLE
- 2.1- Syntaxe
- 3- Les types de données
- 3.1- La différence entre
CHAR(n)
etVARCHAR(n)
- 4- Comment ajouter une ligne dans une table (
INSERT INTO MySQL
) - 4.1- Qu'est-ce que INSERT INTO ?
- 4.2- Spécifiez à la fois les noms de colonnes et les valeurs à insérer
- 4.3- Syntaxe de base
- 4.4- Changer l'ordre des colonnes
- 4.5- Ajoutez des valeurs pour toutes les colonnes de la table
- 4.6- Syntaxe
- 4.7- Ajoutez des valeurs uniquement dans des colonnes spécifiées
- 4.7.1- Sommaire du cours MySQL
Créer et remplir des tables avec SQL
-
Objectifs
- Être capable de créer une table avec SQL
- Connaitre les types de données
-
SQL CREATE TABLE
- La commande
CREATE TABLE
permet de créer une table en SQL. - Un tableau 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 …).
-
Syntaxe
- La syntaxe générale pour créer une table est la suivante :
- Il est aussi possible d’attribuer une valeur par défaut à chaque colonne. La valeur par défaut est utile lorsqu’aucune valeur de colonne n’a été spécifiée au moment de l’insertion des données dans la table.
- Pour spécifier une valeur par défaut, ajoutez «
Default [value]
» après la définition du type de données. - Dans l’exemple ci-dessus, pour définir par défaut la colonne « Address » (Adresse) à « Unknown » (Inconnu) et City (Ville) à « Grenoble », il faut saisir :
-
Les types de données
- Pour chaque colonne que l’on crée, il faut préciser le type de données que le champ va contenir. Celui-ci peut être un des types suivants :
- Chaîne de caractères de longueur fixe n (n<16383)
- CHAR(n) est un type de données qui respecte de la longueur dont n caractères stockée même si la longueur du texte est inférieure à n, il y aura alors un remplissage à blanc.
- Exemple :
- « toto » en CHAR(12) donne :
"toto
« - Chaîne de caractères de n caractères maximum (n<16383)
- VARCHAR(n) est un type de données de longueur variable avec au maximum n caractères stockée + stockage de la longueur du texte (en général sur 2 octets) et pas de remplissage à blanc.
- VARCHAR(n) économise de l’espace si la longueur des données peut être grande et la taille du texte très fluctuante. Or plus on économise l’espace meilleures seront les performances .
- Exemple: « toto » en VARCHAR(12) donne :
04"toto"
-
La différence entre
CHAR(n)
etVARCHAR(n)
- La différence réside en fait dans la taille nécessaire pour stocker la chaine. Le CHAR(n) stockera sur n octets, donc si vous optez pour un CHAR(255) pour votre colonne, chaque champs prendra 255 octets, même si l’on y stocke qu’un mot. À l’inverse, le VARCHAR, comme son nom l’indique, a une taille variable. Le VARCHAR(n) stocke sur n octets maximum, donc un VARCHAR(255) peut ne peser que 64 octets.
- Dans ce cas, pourquoi ne pas toujours opter pour le VARCHAR ? Il est un peu plus lourd pour une même quantité de données stockées, puisque en plus de votre chaine de caractères, il stocke la taille de celle-ci (puisqu’elle est variable).
- On utilisera donc le CHAR pour une chaine de caractères qui est toujours de même longueur, par exemple une référence client qui fait toujours le même nombre de caractères (désolé, j’ai pas d’exemple plus parlant qui me vient à l’esprit 😛 ) tandis qu’un VARCHAR sera parfait pour un pseudo.
- Note : depuis MySQL 5.5, VARCHAR peut aller jusqu’à 65 535 octets, soit la même taille que TEXT.
- L’option NOT NULL, placée immédiatement après le type de donnée permet de préciser au système que la saisie de ce champ est obligatoire.
-
Comment ajouter une ligne dans une table (
INSERT INTO MySQL
) -
Qu’est-ce que INSERT INTO ?
- INSERT INTO est utilisé pour stocker des données dans les tables. La commande INSERT crée une nouvelle ligne dans la table pour stocker les données. Les données sont généralement fournies par des programmes d’application qui s’exécutent sur la base de données.
-
Spécifiez à la fois les noms de colonnes et les valeurs à insérer
-
Syntaxe de base
- avec:
INSERT INTO
‘table_name‘ est la commande qui indique au serveur MySQL d’ajouter une nouvelle ligne dans une table nommée ‘table_name‘.- (
column_1,column_2,value_3,...
) spécifie les colonnes à mettre à jour dans la nouvelle ligne MySQL VALUES
(value_1,value_2,value_3,…) spécifie les valeurs à ajouter dans la nouvelle ligne-
Changer l’ordre des colonnes
- Changer l’ordre des colonnes n’a aucun effet sur la requête
INSERT
dans MySQL tant que les valeurs correctes ont été mappées sur les colonnes correctes. -
INSERT INTO `nom_table`(column_2,column_1,value_3, ...) VALUES (value_2,value_1,...);
-
Ajoutez des valeurs pour toutes les colonnes de la table
- Si vous ajoutez des valeurs pour toutes les colonnes de la table, vous n’avez pas besoin de spécifier les noms de colonnes dans la requête SQL.
- L’ordre des valeurs doit être dans le même ordre que les colonnes du tableau.
-
Syntaxe
-
Ajoutez des valeurs uniquement dans des colonnes spécifiées
- Il est également possible d’insérer des données uniquement dans des colonnes spécifiques.
- L’instruction SQL suivante insère un nouvel enregistrement, mais uniquement des données dans les colonnes « value_1 », « value_3 » :
-
INSERT INTO 'nom_table'(column_1,column_3) VALUES (value_1,value_3);
CREATE TABLE Client (nom char(50), prenom char(50), addresse char(50) default 'Adresse', pays char(50) default 'Tunisie', localite char(25), dteNaissance DATE NOT NULL DEFAULT (DATE(CURRENT_TIMESTAMP))
Type de donnée | Syntaxe | Description |
---|---|---|
Type alphanumérique | CHAR(n) |
|
Type alphanumérique | VARCHAR(n) |
|
|
||
Type alphanumérique | Text | Les types TEXT, qui vont de TINYTEXT à LONGTEXT, servent à stocker des chaines de caractères à partir 256 octets et jusqu’à 2^32, soit 4 294 967 296 octets. Par exemple, sous WordPress, le contenu de chaque article est stocké dans un LONGTEXT, avec ça, on peut donc écrire des romans ! |
Type numérique | NUMBER(n,[d]) | Nombre de n chiffres [optionnellement d après la virgule] |
Type numérique | SMALLINT | Entier signé de 16 bits (-32768 à 32757) |
Type numérique | INTEGER | Entier signé de 32 bits (-2E31 à 2E31-1) |
Type numérique | FLOAT | Nombre à virgule flottante |
Type horaire | DATE | Date sous la forme 16/07/99 |
Type horaire | TIME | Heure sous la forme 12:54:24.85 |
Type horaire | TIMESTAMP | Date et Heure |
INSERT INTO `nom_table`(column_1,column_2,value_3, ...) VALUES (value_1,value_2,value_3,...);
INSERT INTO 'nom_table' VALUES (value_1,value_2,value_3, ...);