Dans le monde actuel de numérisation accrue, de mégadonnées et de cloud computing, la gestion des données fait partie des compétences les plus importantes qu'un ingénieur logiciel puisse avoir. À cette fin, l'un des outils de base de données les plus puissants est SQL.
SQL (Structured Query Language) est le langage de programmation standard utilisé pour manipuler des objets de structure de données. Ils fonctionnent sur des données contenues dans un système de gestion de base de données relationnelle (RDBMS). Certains SGBDR bien connus sont MySQL et PostgreSQL.
Dans ce guide, vous découvrirez les sous-ensembles du langage SQL et comment utiliser certaines commandes SQL fondamentales, telles que SELECT
, INSERT
, UPDATE
, et DELETE
.
Sous-ensembles de SQL
La liste ci-dessous comprend les différents sous-ensembles de langage de diverses commandes SQL. Chaque sous-ensemble a sa propre fonction et son propre objectif.
- Langage de définition des données (DDL) :cela vous permet de créer, de supprimer et de mettre à jour les définitions de schéma de base de données (à savoir, les tables et les index), sans réellement manipuler les données dans les tables de la base de données.
- Langage de requête de données (DQL) :DQL est utilisé pour récupérer les données de la base de données en utilisant le
SELECT
déclaration. - Langage de manipulation de données (DML) :ce sous-langage permet la manipulation de données dans la base de données en utilisant le
INSERT
,UPDATE
, etDELETE
déclarations.
Ce guide utilise un exemple de base de données pour une école afin de démontrer davantage les commandes SQL pour chaque sous-ensemble répertorié ci-dessus. La base de données de l'école comporte plusieurs tables, pour les étudiants, les cours, les notes, etc. La définition de l'Student
le tableau contient des colonnes pour le SSNumber
de l'élève , Firstname
, et Lastname
, et la définition du CourseTaken
la table contient des colonnes pour SSNumber
, CourseId
, NumericGrade
, et YearTaken
.
L'exemple suppose qu'il y a trois élèves dans l'école, chacun ayant terminé deux cours. Les exemples de données sont présentés dans le tableau ci-dessous :
SSNumber | Nom | Prénom | ID de cours | Grade numérique | Année prise |
---|---|---|---|---|---|
111111111 | Smith | Jean | CSC101 | 98 | 2021 |
111111111 | Smith | Jean | ENG101 | 95 | 2022 |
222222222 | Jones | Marie | CSC101 | 100 | 2022 |
222222222 | Jones | Marie | EEE101 | 75 | 2022 |
333333333 | Hansen | Robert | POL101 | 92 | 2021 |
333333333 | Hansen | Robert | SOC103 | 84 | 2022 |
Créer, modifier et supprimer des tables à l'aide de commandes SQL
Depuis la ligne de commande, utilisez le CREATE TABLE
commande suivie du nom de la table et des données de la table. La commande ci-dessous crée le Student
tableau.
CREATE TABLE Student (
SSNumber CHAR(9) NOT NULL,
LastName VARCHAR(30) NOT NULL,
FirstName VARCHAR(20) NOT NULL
);
La parenthèse entoure les données du tableau, en commençant par une colonne qui étiquette les données de chaque ligne. La colonne suivante indique le type de données que contient cette ligne. CHAR
indique un type de données chaîne de longueur fixe et VARCHAR
indique un type de données chaîne de longueur variable. Dans la dernière colonne, le NOT NULL
L'attribut garantit qu'un enregistrement ne peut pas être ajouté à la table si l'un des NOT NULL
les colonnes ne sont pas associées à des données.
Remarque Le CREATE TABLE
est délimitée par un point-virgule final (;), bien qu'il soit possible que certains systèmes commerciaux de bases de données relationnelles n'exigent pas ce délimiteur.
Remarque Sauf mention contraire, toutes les commandes de base de données présentées dans ce guide fonctionnent bien sur MySQL et PostgreSQL .
Pour créer le CourseTaken
table, exécutez la commande suivante :
CREATE TABLE CourseTaken (
SSNumber CHAR(9) NOT NULL,
CourseId CHAR(6) NOT NULL,
NumericGrade INT NOT NULL
);
L'YearTaken
la colonne n'est intentionnellement pas incluse dans le CourseTaken
table pour démontrer l'utilisation de ALTER TABLE
commande. Pour ajouter le YearTaken
colonne dans le CourseTaken
table, vous n'avez pas besoin de supprimer le CourseTaken
tableau entièrement. Au lieu de cela, vous pouvez utiliser le DDL ALTER TABLE
commande. La commande suivante modifie le CourseTaken
tableau en ajoutant la colonne manquante au tableau.
ALTER TABLE CourseTaken
ADD (YearTaken INT NOT NULL);
La commande ci-dessus suit une syntaxe similaire à la précédente. Il nécessite le nom de la table ainsi que trois arguments :le nom de la ligne, le type de données de la ligne et NOT NULL
attribut. Si vous souhaitez supprimer le CourseTaken
table entièrement, émettez le DDL DROP TABLE
commande suivie du nom de la table.
DROP TABLE CourseTaken;
Attention La suppression d'un tableau supprime toutes les données du tableau.
Comment insérer des données dans une table en SQL
Pour insérer les données dans la table, utilisez le SQL INSERT INTO
déclaration. Pour appeler cette commande, indiquez le nom de la table et la liste des noms de lignes (entre parenthèses) dans lesquelles vous souhaitez insérer les données. Ceci est suivi des VALUES
mot-clé et les valeurs réelles (entre parenthèses) que vous souhaitez insérer. Les valeurs sont insérées dans les lignes dans l'ordre dans lesquelles elles sont appelées.
Remarque
- Les commandes SQL peuvent être réparties sur plusieurs lignes. La fin de la commande SQL est délimitée par un point-virgule (
;
).- Les données de caractère sont délimitées par une apostrophe ouvrante et fermante (
‘
), contrairement aux données numériques.
Le INSERT
suivant les commandes insèrent trois lignes dans le Student
table. Ces commandes utilisent plusieurs INSERT
déclarations.
INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('111111111', 'Smith', 'John');
INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('222222222', 'Jones', 'Mary');
INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('333333333', 'Hansen', 'Robert');
De même, vous pouvez également insérer plusieurs lignes dans la table dans une seule requête SQL, comme indiqué ci-dessous :
INSERT INTO CourseTaken
(SSNumber, CourseId, NumericGrade, YearTaken)
VALUES
('111111111', 'CSC101', 98, 2021),
('111111111', 'ENG101', 95, 2022),
('222222222', 'CSC101', 100, 2022);
RemarqueVous pouvez utiliser le
INSERT INTO
commande similaire dans PostgreSQL pour ajouter des lignes au tableau. Assurez-vous que les valeurs correspondent à l'ordre des colonnes dans la définition de table.INSERT INTO student VALUES ('111111111', 'Smith', 'John');
Supprimer des données d'un tableau
Pour supprimer des données d'une table, utilisez le SQL DELETE FROM
déclaration. Utilisez le WHERE
clause pour spécifier la condition, et s'il y a plus d'une condition, utilisez le AND
clause avec WHERE
.
Par exemple, la commande suivante supprime un enregistrement du CourseTaken
table avec SSNumber 333333333
et ID de cours POL101
.
Attention Si vous omettez le WHERE
clause, tous les enregistrements de la table sont supprimés.
DELETE FROM CourseTaken WHERE SSNumber = '333333333' AND CourseId = 'POL101';
Commande SQL pour mettre à jour les données dans une table
Pour mettre à jour l'enregistrement existant dans une table, utilisez le SQL UPDATE
commande. Le SET
La clause est utilisée pour définir (mettre à jour) une nouvelle valeur à une colonne particulière et le WHERE
La clause est utilisée pour mettre à jour les lignes sélectionnées.
Par exemple, la commande suivante met à jour le NumericGrade
colonne du CourseTaken
table pour les enregistrements avec SSNumber 222222222
et ID de cours EEE101
.
UPDATE CourseTaken
SET NumericGrade = 95
WHERE SSNumber = '222222222' AND CourseId = 'EEE101';
Commande SQL pour récupérer les données d'une table
La véritable puissance des systèmes de bases de données relationnelles réside dans leur capacité à récupérer des informations dans un schéma multi-tables, via le SQL SELECT
commande et la possibilité de joindre des tables via des clés communes. Bien que ce guide d'introduction n'examine pas la création de clés et d'index utilisant ces clés, il utilise le SSNumber
colonne de chaque table en tant que véhicule (clé) pour relier (ou joindre) les tables afin de générer des informations. Les exemples suivants fournissent différents cas d'utilisation de SQL SELECT
commande depuis la ligne de commande.
Exemple 1 : Pour récupérer la liste de tous les élèves de l'école.
SELECT * from Student;
Sortie :
+-----------+----------+-----------+
| SSNumber | LastName | FirstName |
+-----------+----------+-----------+
| 111111111 | Smith | John |
| 222222222 | Jones | Mary |
| 333333333 | Hansen | Robert |
+-----------+----------+-----------+
Exemple 2 : Pour récupérer la liste de tous les étudiants et des cours qu'ils ont suivis.
SELECT Student.SSNumber, Student.LastName,
Student.FirstName, CourseTaken.CourseId
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber;
Sortie :
+-----------+----------+-----------+----------+
| SSNumber | LastName | FirstName | CourseId |
+-----------+----------+-----------+----------+
| 111111111 | Smith | John | CSC101 |
| 111111111 | Smith | John | ENG101 |
| 222222222 | Jones | Mary | CSC101 |
+-----------+----------+-----------+----------+
Remarque Dans la commande ci-dessus, les deux tables,Student
etCourseTaken
sont jointes pour récupérer les informations requises. Les noms de colonne dans leSELECT
etWHERE
les clauses sont précédées de leurs noms de table pour plus de clarté. Cependant, dans le cas duSSNumber
colonne, nous devons spécifier les préfixes de nom de table appropriés, car les deux tables partagent le même nom de colonne. LeFROM
La clause indique les tables qui sont utilisées dans cette requête.
Exemple 3 : Récupérer la liste des étudiants avec CourseId CSC101
et l'année où ils ont suivi ce cours.
SELECT Student.LastName, Student.FirstName,
CourseTaken.CourseId, CourseTaken.YearTaken
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber
AND CourseTaken.CourseId = 'CSC101';
Sortie :
+----------+-----------+----------+-----------+
| LastName | FirstName | CourseId | YearTaken |
+----------+-----------+----------+-----------+
| Smith | John | CSC101 | 2021 |
| Jones | Mary | CSC101 | 2022 |
+----------+-----------+----------+-----------+
Exemple 4 : Récupérer la liste des noms d'étudiants, des cours suivis et des notes reçues, pour ceux qui avaient des notes de cours supérieures à 90
.
SELECT Student.LastName, Student.FirstName,
CourseTaken.CourseId, CourseTaken.NumericGrade
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber
AND CourseTaken.NumericGrade > 90;
Sortie :
+----------+-----------+----------+--------------+
| LastName | FirstName | CourseId | NumericGrade |
+----------+-----------+----------+--------------+
| Smith | John | ENG101 | 95 |
| Smith | John | CSC101 | 98 |
| Jones | Mary | CSC101 | 100 |
+----------+-----------+----------+--------------+
Remarque Le AND
La clause dans la commande ci-dessus vous permet de filtrer les résultats par un test de note conditionnelle.
Conclusion
Ce guide sur les commandes SQL est une introduction à la création de schémas de base de données et à la manipulation des données dans ces bases de données. Bien que les concepts présentés ici ne fassent qu'effleurer la surface en ce qui concerne l'utilisation des systèmes de bases de données relationnelles, il s'agit d'un bon point de départ pour les commandes et concepts de base et essentiels.