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

Pour installer 2 solutions :

XAMP - Pour Windows ou Mac

WAMP - Pour windows

MAMP - Pour Mac

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 :

http://localhost/phpmyadmin

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 !

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