MySQL
MySQL
MySQL est une base de données relationnel
MySQL est ce qu'on un SGBD (Système de Gestion de Base de Données)
Cela nous sert à stocker et à les organiser
Il éxiste d'autre SGBD : OracleSQL, PostGresSQL, MicrosoftSQL etc ....
MySQL
Une base de données c'est une ensemble de « tables »
Une table c'est une sorte de tableaux avec des lignes et des colones
| identifiant | nom | prénom |
|---|---|---|
| 1 | Dupont | Jean |
| 2 | Dupont | Rose |
| 3 | Dupoint | Jean |
| 4 | Doe | John |
MySQL
Chaque table de notre base de données contient une colone bien particulière
Cette colonne nous permet d'identifier une ligne dans notre base de données
C'est ce que l'on appel une PRIMARY KEY
MySQL
Afin d'intéragir avec ces données, MySQL utilise un language :
SQL
SQL signifie Structured Query Language
Ce language nous permet de tout faire sur notre base de données
MySQL
Installation de MySQL
MySQL
Installation de MySQL
Une fois l'un de ces outils installés vous pouvez accéder à l'interface d'administration de mysql à l'adresse suivante :
MySQL
Installation de MySQL
Il est possible d’exécuter n'importe quelle requête SQL depuis phpmyadmin en se rendant sur l'onglet SQL de la page d'accueil
MySQL
Les requêtes SQL
MySQL
Les requêtes SQL se sont des lignes de text avec un langage données qui nous permettent d’interagir avec notre base de données.
MySQL
Créer une base de données
CREATE DATABASE nomDeLaBaseDeDonness
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;MySQL
Supprimer une base de données
DROP DATABASE nomDeLaBaseDeDonnees;MySQL
Sélectionner une base de données
USE nomDeLaBDD;MySQL
Création d'une table
-- Nous spécifions à CREATE TABLE le nom de la table
-- à créer, ici "articles"
CREATE TABLE articles(
-- Création de la colone id, de type INTEGER
-- C'est une clefs primaire en auto incrémente
id INTEGER PRIMARY KEY AUTO_INCREMENT,
-- Création d'une colone titre qui ets une chaîne de
-- caractère de 255 caractères maximum
titre VARCHAR(255),
description VARCHAR(255),
contenu TEXT
);MySQL
Il est possible d’enchaîner les requêtes, il suffit de les séparer par des points virgules ";"
-- Création d'une base de données
CREATE DATABASE test
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE SET utf8_unicode_ci;
-- On se rend à l'intérieur de la base de données
USE test;
-- On créer la table users à l'intérieur de la base données
CREATE TABLE utilisateurs(
id INTEGER PRIMARY KEY AUTO_INCREMENT,
email VARCHAR(255)
);MySQL
Il est possible de supprimer une table
-- On se rend à l'intérieur de la base de données
USE test;
-- On supprime la tabel "nomDeLaTable"
DROP TABLE nomDeLaTable;MySQL
Insérer des données dans une table
INSERT INTO nomDeLaTable (colone1, colone2, colone3)
VALUES ("valeur colone 1", "colone 2", "colone 3");MySQL
Éxemple insérer un nouvel article :
INSERT INTO articles (titre, description, contenu)
VALUES ("Mon super article", "Descrption de mon article", "Contenu de mon article");MySQL
Il est possible d'insérer plusieurs lignes d'un coup :
INSERT INTO articles (titre, description, contenu)
VALUES
("Mon super article 1", "Descrption 1", "Contenu de mon article"),
("Mon super article 2", "Descrption 2", "Contenu de mon article"),
("Mon super article 3", "Descrption 3", "Contenu de mon article");MySQL
Nous pouvons sélectionner des données
SELECT colone1, colone2 FROM nomDeLaTable;MySQL
Éxemple, la séléction de tout les titre et description d'articles
SELECT titre, description FROM articles;MySQL
Il est possible de sélectionner toutes les colonnes d'une table :
SELECT * FROM articles;MySQL
Il est possible de filtrer nos séléctions :
SELECT colone1, colone2 FROM nomDeLaTable
WHERE colone3 = "Valeur";MySQL
Éxemple : sélectionner le contenu de l'article avec l'id n° 8
SELECT contenu FROM articles
WHERE id = 8;MySQL
Il est possible de créer un filtre sur plusieurs valeurs (ex: sélectionner les articles dont l'id est sois 2, 3 ou 4)
SELECT contenu FROM articles
WHERE id IN (2, 3, 4);MySQL
Il est possible de faire des recherches textuelle grâce à LIKE :
SELECT id, titre, contenu FROM articles
-- Ici on séléctionne tout les articles dont la description
-- contient le mot "test" à n'importe quelle position.
-- Le caractère "%" dans le like signifie "N'importe quoi"
WHERE description LIKE "%test%";MySQL
Il est possible d'utiliser des opérateurs logique :
SELECT id, titre, description
FROM articles
-- Séléctionne les articles qui contienne "article" dans
-- leurs titre OU BIEN dont l'id est égale à 3
WHERE titre LIKE "%article%" OR id = 3;
SELECT id, titre, description
FROM articles
-- Séléctionne les articles qui contienne "article" dans
-- leurs titre ET dont l'id est égale à 3
WHERE titre LIKE "%article%" AND id = 3;MySQL
Il est possible d'utiliser des parenthèses afin de prioriser nos conditions :
SELECT id, titre, description
FROM articles
WHERE (titre LIKE "%article%" OR id = 3)
AND (description LIKE "%article%");MySQL
Nous pouvons supprimer des données d'une table
DELETE FROM nomDeLaTable WHERE conditions;MySQL
Éxemple supprimer l'article avec l'id 3
DELETE FROM articles WHERE id = 3;MySQL
Mettre à jour les données d'une table
UPDATE nomDeLaTable
SET
nomColone1 = "Valeur de la colone 1",
nomColone2 = "Valeur de la colone 2"
WHERE conditions;MySQL
Mettre à jour le titre et la description de l'article avec l'id n° 1
UPDATE articles
SET
titre = "Mon Premier Article !",
description = "Superbe Description !"
WHERE id = 1;MySQL
Nos premiers exercices !
Vous pouvez dès lors suivre les instructions pour vos premiers exercices :)
MySQL
Il est possible de rajouter une colone dans une table :
ALTER TABLE nomDeLaTable
ADD nomDeLaColone type constraint;MySQL
Exemple, ajouter une colone popularité à une table "articles"
-- Nous modifions la table articles
ALTER TABLE articles
-- On ajoute une colone popularite de type Intier
-- et nous lui assignons un contrainte : la valeur
-- par défaut de notre colone
ADD popularite INTEGER DEFAULT 0;MySQL
Il est aussi possible de supprimer une colone d'une table en utilisant ALTER TABLE
-- Nous modifions la table articles
ALTER TABLE articles
-- On supprime la colone "popularite" de notre
-- table articles
DROP COLUMN popularite;MySQL
Il est possible de trier des données par un colonne et une direction (croissant: ASC ou décroissant: DESC)
SELECT *
FROM nomDeLaTable
ORDER BY nomDeLaColone direction;MySQL
Exemple trier des articles par popularité
SELECT *
FROM articles
ORDER BY popularite DESC;MySQL
En mysql il est possible de renommer des colonnes sélectionné
SELECT colone as nouvelleColone
FROM nomDeLaTable;MySQL
Exemple, renommer les titres de nos articles en "Title"
SELECT titre as Title
FROM articles;MySQL
Nous pouvons compter le nombre de lignes dans une table en utilisant la fonction "count()"
SELECT count(*) as total FROM nomDeLaTable;MySQL
Exemple, compter le nombre d'auteurs qui porte le nom "Doudou"
SELECT count(*) as total FROM auteurs WHERE nom = "Doudou";MySQL
En mysql il existe des fonctions assez utile dont en voici une petite liste :
-- UPPER permet de mettre une colone en majuscule
SELECT UPPER(nom) as nom, UPPER(prenom) as prenom FROM auteurs;
-- LOWER permet de mettre une colone en minuscule
SELECT LOWER(nom) as nom, LOWER(prenom) as prenom FROM auteurs
-- Il est aussi possible de concaténer (rassembler des chaînes de caractère)
SELECT CONCAT(nom, ' ', prenom) as NomComplet, email FROM auteurs;
-- Il est aussi possible d'utiliser RAND et ROUND afin de genérer un nombre
-- aléatoire et de de l'arrondir
SELECT titre, id, ROUND((RAND() * 100)) as numeroSecret FROM articles;MySQL
Les clefs étrangères
Ce sont des colonnes particulières qui font référence à une autre clefs primaire d'une autre table
MySQL
Exemple
| id | nom | prenom |
|---|---|---|
| 1 | Doe | John |
| 2 | Doe | Jane |
| id | titre | auteurId |
|---|---|---|
| 1 | Premier Article | 2 |
| 2 | Second Article | 1 |
Une table auteur
Un table article
MySQL
Le champs "article.auteurId" est une clef étrangère qui fait référence à "auteur.id"
| id | nom | prenom |
|---|---|---|
| 1 | Doe | John |
| 2 | Doe | Jane |
| id | titre | auteurId |
|---|---|---|
| 1 | Premier Article | 2 |
| 2 | Second Article | 1 |
Une table auteur
Un table article
MySQL
Voici comment rajouter une "contrainte" de clef étrangère en MySQL
ALTER TABLE nomDeLaTable
ADD CONSTRAINT nomDeLaClefEtrangere
FOREIGN KEY (coloneDeLaTable)
REFERENCES nomDeLaTableReferente(coloneReferente);MySQL
Exemple : article.auteurId
ALTER TABLE articles
ADD CONSTRAINT fk_articles_auteurs
FOREIGN KEY (auteurId) REFERENCES auteurs(id);MySQL
Faire des jointures simple avec INNER JOIN
-- Nous pouvons séléctionner les colones de table1
-- en même temps que les colonnes de la table2
SELECT
table1.colone1,
table2.colone2
-- Nous spécifions la table "mére" (La table qui contient
-- notre clefs étrangère)
FROM
table1
-- Nous joignons avec une autre table (table2)
INNER JOIN table2
-- Nous spécifions comment joindre nos 2 tables
ON table1.coloneEtrangere = table2.colonePrimaire;MySQL
Exemple séléctioner le titre d'un article avec le nom et le prénom de son auteur
SELECT
articles.titre,
auteurs.nom,
auteurs.prenom
FROM articles
INNER JOIN auteurs
ON auteurs.id = articles.auteurId;MySQL
Il éxiste 3 grandes familles de "relation" (type jointure entre les tables)
OneToOne
OneToMany
ManyToMany
MySQL
OneToOne
MySQL
OneToMany
MySQL
ManyToMany
MySQL - Apprendre les bases
By David Jegat
MySQL - Apprendre les bases
- 194