La plupart des applications Web modernes interagissent aujourd'hui avec des bases de données, généralement avec un langage appelé SQL. Heureusement pour nous, cette langue est assez facile à apprendre. Dans cet article, nous allons commencer par quelques requêtes SQL de base et les utiliser pour interagir avec une base de données MySQL.
SQL (Structured Query Language) est un langage conçu pour interagir avec les systèmes de gestion de base de données relationnelle (SGBDR), tels que MySQL, Oracle, Sqlite, etc. Pour effectuer les requêtes SQL de cet article, je vous suggère d'installer MySQL. Je recommande également phpMyAdmin comme interface visuelle pour MySQL.
Les applications suivantes facilitent l’installation de MySQL et de phpMyAdmin sur votre ordinateur local:
Nous allons utiliser la ligne de commande pour les requêtes. WAMP est déjà livré avec une console MySQL. Pour MAMP, vous voudrez peut-être lire cet article.
Voici notre toute première requête. Nous allons créer une base de données pour travailler avec.
Commencez par ouvrir votre console MySQL et connectez-vous. Pour WAMP, le mot de passe par défaut est vide. Pour MAMP, le mot de passe doit être 'root' par défaut.
Une fois connecté, tapez cette requête et appuyez sur Entrée:
CREATE DATABASE my_first_db;
Notez que le point-virgule (;) est ajouté à la fin de la requête, tout comme à la fin des lignes de code.
De plus, les mots spéciaux 'CREATE DATABASE' sont insensibles à la casse, ainsi que tous les mots spéciaux en SQL. Mais pour des raisons de lisibilité, nous les écrirons en majuscules..
Si vous souhaitez définir le jeu de caractères et le classement par défaut, vous pouvez écrire la même requête de la manière suivante:
CREATE DATABASE my_first_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Voici une liste des jeux de caractères et des classements pris en charge dans MySQL.
Cette requête est utilisée pour obtenir une liste de toutes les bases de données que vous avez..
Vous pouvez supprimer une base de données existante avec cette requête.
Soyez prudent avec cette requête, car elle ne vous avertit pas. Si vous avez des tables et des données dans la base de données, elles seront toutes supprimées instantanément.
Ce n'est techniquement pas une requête. C'est une "déclaration" et ne nécessite pas de point-virgule à la fin.
Il indique à MySQL de sélectionner une base de données par défaut avec laquelle travailler, pour la session en cours. Nous sommes maintenant prêts à créer des tables et à faire d'autres choses dans cette base de données..
Vous pouvez penser à une table de base de données comme une feuille de calcul ou un fichier csv contenant des données structurées.
Comme dans cet exemple, les tables ont des noms de colonnes et des lignes de données. Avec les requêtes SQL, nous pouvons créer ces tables. Nous pouvons également ajouter, lire, mettre à jour et supprimer les données.
Avec cette requête, nous pouvons créer des tables dans la base de données. Malheureusement, la documentation MySQL n’est pas très conviviale pour les nouveaux apprenants. La structure de ce type de requête peut devenir très complexe, mais nous commencerons par une simple.
La requête suivante va créer une table avec 2 colonnes.
CREATE TABLE utilisateurs (nom d'utilisateur VARCHAR (20), create_date DATE);
Notez que nous pouvons écrire une requête sur plusieurs lignes et même utiliser des tabulations pour l'indentation..
La première ligne est facile. Nous venons de créer une table nommée 'utilisateurs'. Ensuite, entre parenthèses, nous avons une liste de colonnes de table séparées par des virgules. Après chaque nom de colonne, nous avons un type de données, tel que VARCHAR ou DATE.
VARCHAR (20) signifie que la colonne est un type de chaîne et peut comporter 20 caractères au maximum. DATE est également un type de données spécifiquement utilisé pour stocker des dates, dans ce format: 'AAAA-MM-JJ'.
Avant d'exécuter cette requête, nous devrions également inclure une colonne pour 'user_id', qui sera une clé primaire. Sans entrer trop dans les détails, vous pouvez penser à une clé primaire comme moyen d'identifier chaque ligne de données dans un tableau..
Maintenant, la requête devient:
CREATE TABLE utilisateurs (id_utilisateur INT AUTO_INCREMENT PRIMARY KEY, nom d'utilisateur VARCHAR (20), create_date DATE);
INT en fait un type entier 32 bits (c'est-à-dire numérique). AUTO_INCREMENT génère automatiquement un nouveau numéro d'identification chaque fois que nous ajoutons de nouvelles lignes de données. Ce n'est pas nécessaire, mais le rend beaucoup plus pratique.
Cette colonne ne doit pas nécessairement être un entier, mais il s'agit du type le plus couramment utilisé. Avoir une colonne PRIMARY KEY n'est pas non plus nécessaire, mais cela est fortement recommandé pour une bonne conception et performance de la base de données.
Lançons la requête:
Cette requête vous permet d'obtenir une liste des tables actuellement dans la base de données..
Pour voir la structure d'une table existante, vous pouvez utiliser cette requête.
Les champs (aka colonnes) sont listés dans les résultats, avec leurs propriétés.
Tout comme DROP DATABASES, cette requête supprime une table et son contenu, sans avertissement..
Cette requête peut également avoir une structure assez complexe en raison de la multitude de changements qu’elle peut effectuer sur une table. Regardons quelques exemples simples.
(Assurez-vous de recréer la table que nous venons de supprimer ou les requêtes suivantes ne fonctionneront évidemment pas.)
ALTER TABLE utilisateurs AJOUTER email VARCHAR (100) APRES nom d'utilisateur;
Merci à la lisibilité de SQL, je ne pense pas que cette requête a même besoin d'une explication.
C'était aussi très simple. Mais utilisez-le avec prudence, car il supprime définitivement les données sans avertissement..
Ajoutez de nouveau la colonne email car nous allons l'utiliser plus tard:
ALTER TABLE utilisateurs AJOUTER email VARCHAR (100) APRES nom d'utilisateur;
Parfois, vous souhaiterez peut-être modifier les propriétés d'une colonne afin de ne pas avoir à la supprimer et à la recréer..
Cela a renommé la colonne de nom d'utilisateur en 'nom_utilisateur' et modifié le type de VARCHAR (20) à VARCHAR (30). Un tel changement ne devrait perturber aucune des données existantes du tableau..
Ajoutons quelques données dans la table en utilisant cette requête.
Comme vous pouvez le constater, VALUES () contient la liste des valeurs de champs, séparées par des virgules. Les valeurs de chaîne sont entre guillemets simples. Et les valeurs doivent être dans l'ordre des colonnes définies lors de la création du tableau..
Notez que la première valeur est NULL pour le champ PRIMARY KEY que nous avons appelé "user_id". Pour ce faire, un identifiant est généré automatiquement, car la colonne est définie sur AUTO_INCREMENT. Lorsque vous entrez une ligne de données pour la première fois, l'id sera 1. La ligne suivante insérée sera 2, etc.
Voici une autre syntaxe pour insérer des lignes.
Cette fois, nous utilisons le mot-clé SET au lieu de VALUES. Il n'est pas suivi de parathèses. Il y a quelques choses à noter ici:
Voici encore une autre syntaxe.
Encore une fois, puisque chaque colonne est référencée par son nom, elles peuvent être dans n’importe quel ordre..
Vous pouvez utiliser cette requête pour obtenir l'identifiant AUTO_INCREMENT pour la dernière ligne insérée, dans la session en cours..
Je pense que le moment est venu de montrer comment vous pouvez utiliser une fonction MySQL dans vos requêtes..
La fonction NOW () renvoie la date actuelle. Vous pouvez donc l'utiliser pour définir automatiquement une colonne DATE sur le jour actuel lors de l'insertion d'une nouvelle ligne..
Notez que nous avons reçu un avertissement de MySQL, mais ce n'est pas grave. La raison en est que NOW () renvoie également les informations de temps.
Mais la colonne create_date que nous avons créée ne contient que la date, et non l’heure; les données renvoyées ont donc été tronquées. Nous pourrions utiliser la fonction CURDATE () à la place, qui ne renvoie que la date, mais les données stockées à la fin seraient les mêmes dans les deux cas.
De toute évidence, les données que nous avons ajoutées seraient inutiles à moins que nous puissions les lire. C'est ici que la requête SELECT entre.
Voici la requête SELECT la plus simple possible pour lire dans une table:
Dans ce cas, l'astérisque (*) signifie que nous avons demandé de récupérer toutes les colonnes de la table. Si vous souhaitez uniquement des colonnes spécifiques, la requête devrait ressembler à ceci:
Le plus souvent, nous ne sommes intéressés que par certaines des lignes, et pas toutes. Par exemple, supposons que nous voulions l'adresse électronique de l'utilisateur 'nettuts'.
Pensez-y comme une déclaration IF. WHERE vous permet de définir des conditions dans la requête pour les résultats que vous recherchez.
Notez que pour la condition d'égalité, un seul signe égal est utilisé (=), au lieu du double (==) auquel vous pourriez être habitué depuis la programmation.
Vous pouvez également utiliser d'autres conditions de comparaison:
AND et OR peuvent être utilisés pour combiner des conditions:
Notez que les valeurs numériques ne doivent pas nécessairement être entre guillemets.
Ceci est utile pour faire correspondre plusieurs valeurs.
Cela vous permet de faire des recherches génériques.
Le signe de pourcentage (%) est utilisé comme caractère générique.
Si vous souhaitez que les résultats soient renvoyés dans un ordre spécifique, utilisez cette clause:
L'ordre par défaut est ASC (c'est-à-dire croissant). Vous pouvez ajouter DESC pour l'inverser.
Vous pouvez limiter le nombre de résultats retournés.
LIMIT 2 n'obtient que les 2 premiers résultats. LIMIT 1 OFFSET 2 obtient 1 résultat, après les 2 premiers résultats. LIMIT 2, 1 signifie la même chose, mais notez que le premier nombre est le décalage et le second nombre est la limite..
Cette requête est utilisée pour mettre à jour les données d'une table..
La plupart du temps, il est utilisé avec une clause WHERE, car vous voudriez que seules des lignes spécifiques soient mises à jour. Si une clause WHERE n'est pas fournie, toutes les lignes seront mises à jour avec les mêmes modifications..
Vous pouvez également utiliser une clause LIMIT pour limiter le nombre de lignes à mettre à jour..
Tout comme UPDATE, cette requête est aussi généralement utilisée avec une clause WHERE.
Pour supprimer tout le contenu d'une table, vous pouvez simplement procéder comme suit:
SUPPRIMER DES UTILISATEURS;
Mais il est généralement plus performant d’utiliser TRUNCATE à la place..
TRUNCATE réinitialise également les nombres AUTO_INCREMENT afin qu'une nouvelle ligne ait encore l'id 1. Mais cela ne se produit pas avec une requête DELETE et le compteur continue de monter.
Certains personnages doivent être échappés, sinon vous pouvez avoir des problèmes.
La barre oblique inverse (\) est utilisée pour s'échapper.
Ceci est également très important pour des raisons de sécurité. Toute entrée utilisateur entrant dans la base de données doit être correctement échappée. En PHP, vous utilisez la fonction mysql_real_escape_string () ou utilisez des instructions préparées car elles s'échappent automatiquement.
Étant donné que MySQL contient de nombreux mots spéciaux tels que SELECT ou UPDATE, vous pouvez éviter les conflits en mettant des guillemets autour des noms de vos tables et de vos colonnes. Mais ce ne sont pas les citations régulières; vous devez utiliser le caractère backtick (').
Supposons que vous souhaitiez ajouter une colonne nommée 'delete' pour une raison quelconque:
Merci d'avoir lu l'article. J'espère que j'ai pu vous montrer que SQL a une courbe d'apprentissage facile mais qu'il est très puissant.
S'il vous plaît laissez vos commentaires et questions, et passez une bonne journée!
Êtes-vous prêt à faire évoluer vos compétences et à commencer à tirer profit de vos scripts et de vos composants? Découvrez notre marché jumeau, CodeCanyon.