2.1 Introduction à SQL
Si vous avez une base de données (DB) et qu'elle contient une table contenant des données, la tâche la plus courante consiste à rechercher certaines données dans cette table. C'est pour cela que SQL a été inventé il y a 40 ans.
SQL signifie langage de requête structuré .
La requête SQL la plus simple ressemble à ceci :
SELECT column1, column2, … columnN FROM table
Disons que vous avez une table d'employés avec une liste des employés de votre startup :
identifiant | nom | profession | salaire | âge | join_date |
---|---|---|---|---|---|
1 | Ivanov Ivan | Programmeur | 100 000 | 25 | 2012-06-30 |
2 | Petrov Petr | Programmeur | 80 000 | 23 | 2013-08-12 |
3 | Ivanov Sergueï | Testeur | 40 000 | trente | 2014-01-01 |
4 | Rabinovitch Moisha | Directeur | 200 000 | 35 | 2015-05-12 |
5 | Kirienko Anastasia | Responsable administratif | 40 000 | 25 | 2015-10-10 |
6 | Vaska | chat | 1 000 | 3 | 2018-01-01 |
Vous voulez écrire une requête qui employee names
les affichera également salaries
, alors vous devez écrire une requête :
SELECT name, salary FROM employee
Vous obtiendrez le résultat de la requête :
nom | salaire |
---|---|
Ivanov Ivan | 100 000 |
Petrov Petr | 80 000 |
Ivanov Sergueï | 40 000 |
Rabinovitch Moisha | 200 000 |
Kirienko Anastasia | 40 000 |
Vaska | 1 000 |
Si vous souhaitez afficher toutes les colonnes de votre table , au lieu de lister les noms de toutes les colonnes, vous pouvez simplement écrire un astérisque. Exemple:
SELECT * FROM employee
Vous obtiendrez le résultat de la requête :
identifiant | nom | profession | salaire | âge | join_date |
---|---|---|---|---|---|
1 | Ivanov Ivan | Programmeur | 100 000 | 25 | 2012-06-30 |
2 | Petrov Petr | Programmeur | 80 000 | 23 | 2013-08-12 |
3 | Ivanov Sergueï | Testeur | 40 000 | trente | 2014-01-01 |
4 | Rabinovitch Moisha | Directeur | 200 000 | 35 | 2015-05-12 |
5 | Kirienko Anastasia | Responsable administratif | 40 000 | 25 | 2015-10-10 |
6 | Vaska | chat | 1 000 | 3 | 2018-01-01 |
2.2 Vue avancée de la requête SQL
Le langage SQL a été conçu de la manière la plus conviviale possible.
Tout d'abord, la casse du texte de la requête n'a pas d'importance . Vous pouvez écrire SELECT, Select ou select et tout fonctionnera. Deuxièmement, les sauts de ligne ne sont en aucun cas pris en compte . Le SGBD transformera toujours la requête en une longue chaîne, vous pouvez donc l'écrire comme vous le souhaitez.
Comme vous l'avez probablement déjà deviné, les mots clés SELECT et FROM ne sont pas limités. Sinon, il n'y aurait pas autant de discussions autour de SQL. La vue étendue de la requête SQL ressemble à ceci :
SELECT columns
FROM table
WHERE condition
GROUP BY columns
HAVING columns
ORDER BY sorting
A l'aide d'un mot-clé, WHERE
vous pouvez définir une condition / un filtre pour les lignes sélectionnées.
Exemple 1 . Écrivons une requête qui sélectionnera les employés avec la profession "Programmeur":
SELECT * FROM employee WHERE occupation = 'Programmer'
Et nous obtenons le résultat de requête suivant :
identifiant | nom | profession | salaire | âge | join_date |
---|---|---|---|---|---|
1 | Ivanov Ivan | Programmeur | 100 000 | 25 | 2012-06-30 |
2 | Petrov Petr | Programmeur | 80 000 | 23 | 2013-08-12 |
Comme vous pouvez le voir, à la suite de l'exécution de la requête, seules les lignes où la profession de l'employé s'appelle "Programmeur" sont affichées.
Les mots-clés GROUP BY
, ORDER BY
et HAVING
nous les couvrirons dans les prochaines conférences. Et en cela, nous analyserons quelques exemples supplémentaires avec le mot WHERE.
Exemple 2 . Écrivons maintenant une requête qui nous montrera tous les employés avec un salaire supérieur à 100K. Voici à quoi cela ressemblera :
SELECT * FROM employee WHERE salary > 100000
Nous obtenons le résultat de requête suivant :
identifiant | nom | profession | salaire | âge | join_date |
---|---|---|---|---|---|
4 | Rabinovitch Moisha | Directeur | 200 000 | 35 | 2015-05-12 |
Exemple 3 . Essayons maintenant quelque chose de plus difficile. Comment afficher tous les employés qui ont été embauchés en 2015 ? Et comme ça :
SELECT * FROM employee WHERE YEAR(join_date) = 2015
Nous obtenons le résultat de requête suivant :
identifiant | nom | profession | salaire | âge | join_date |
---|---|---|---|---|---|
4 | Rabinovitch Moisha | Directeur | 200 000 | 35 | 2015-05-12 |
5 | Kirienko Anastasia | Responsable administratif | 40 000 | 25 | 2015-10-10 |
Dans cette requête, nous utilisons une fonction spéciale YEAR()
qui nous permet d'obtenir l'année à partir d'une date, puis de comparer l'année de la date avec le nombre 2015.
2.3 Commentaires dans les requêtes SQL
Et un autre point important concerne les commentaires dans les requêtes SQL. Les commentaires sont une chose très utile. Premièrement, vous pouvez y écrire des explications et/ou vos idées. Deuxièmement, à l'aide de commentaires, vous pouvez désactiver le code brisé. Ou commentez l'ancienne version du code.
SQL, comme Java, a des commentaires sur une seule ligne et sur plusieurs lignes. De plus, un commentaire multiligne ressemble à Java. Son aspect :
/*
comment text
comment text
comment text
*/
Bien sûr, il peut également être utilisé en une seule ligne. Exemple:
/*comment text*/
Il existe également un type de commentaire "du début à la fin de la ligne", similaire au Java "//". Ce n'est qu'en SQL que vous devez écrire deux caractères moins et un espace . Vue générale d'un tel commentaire :
-- comment text
Exemple:
SELECT * FROM employee -- WHERE YEAR(join_date) = 2015
Dans l'exemple ci-dessus, nous avons commenté la condition de requête, donc MySQL n'exécutera que la requête :
SELECT * FROM employee
2.4 Prononciation SQL
Si vous communiquez avec des clients étrangers ou passez un entretien en ligne pour une entreprise américaine, vous serez peut-être interrogé sur votre expérience avec le langage séquentiel . Vous direz honnêtement que vous n'avez pas travaillé avec lui et échouerez immédiatement l'entretien.
Et le fait est que le langage SQL s'appelait à l'origine SEQUEL, qui se prononce comme une suite (ˈsēkwəl), donc très souvent aux États-Unis et dans d'autres sources anglophones, vous n'entendrez pas "escuel", mais "sequel". SQL est écrit et la suite est lue. Voici un tel paradoxe historique.
GO TO FULL VERSION