Bibliothèque électronique de l'administrateur système. SQL. Cours de base Cours de base du langage SQL

Langage SQL. Cours de base.

Ce tutoriel, rédigé par Evgeny Morgunov, décrit les bases du langage SQL - il s'agit d'un cours de base. De plus, le langage est considéré par rapport à un système de gestion de base de données (SGBD) spécifique - PostgreSQL. L'implémentation du langage SQL dans chaque SGBD est conforme à la norme à un degré ou à un autre, mais en plus des fonctions et capacités standardisées, chaque SGBD propose également ses propres extensions de langage supplémentaires. PostgreSQL offre un très bon support du standard de langage SQL et fournit également des fonctionnalités supplémentaires intéressantes et utiles dans la pratique. L'un des principaux avantages de PostgreSQL est son extensibilité. Cela signifie par exemple que l'utilisateur (qui est bien entendu un expert en bases de données) peut développer ses propres types de données. Ces types de données auront toutes les propriétés des types de données intégrés et pourront être mis en service sans arrêter le serveur. De plus, PostgreSQL est un produit gratuit et open source disponible sur un grand nombre de plateformes.

Le didacticiel couvre non seulement toutes les commandes SQL de base, mais également d'autres sujets tels que les index et les transactions. Le manuel est rédigé de telle manière qu'il peut être utilisé à la fois sous la direction d'un enseignant et de manière indépendante. On suppose que les étudiants ont accès à un SGBD déjà installé. La procédure d'installation de PostgreSQL n'est donc pas abordée en détail, mais seules des instructions sont données pour savoir où trouver les instructions d'installation. Ce tutoriel est conçu pour vous donner des compétences pratiques dans l'utilisation du langage SQL. Le matériel pédagogique est présenté de manière à ce que le lecteur puisse acquérir des connaissances très importantes en accomplissant les tâches situées à la fin de chaque chapitre.

Ces connaissances peuvent ne pas être présentées dans le texte principal des chapitres. On suppose qu'une partie importante des tâches sera effectuée par le lecteur de manière indépendante à l'aide de la documentation du SGBD PostgreSQL, mais des instructions pour leur mise en œuvre sont souvent données.

Le manuel est destiné aux étudiants étudiant dans les domaines du 03/09/01 - « Informatique et informatique », 03/09/02 - « Systèmes et technologies de l'information », 03/09/03 - « Informatique appliquée », 03/ 09/04 - « Génie Logiciel » et 02/03.03 - « Support mathématique et administration des systèmes d'information ». Il peut être utile à un large éventail d'étudiants et de professionnels souhaitant se familiariser avec les bases du langage SQL dans l'environnement du système de gestion de bases de données PostgreSQL.

Éditeur - Postgres Professionnel

Année de publication - 2017

Format livre - PDF

SQL (communément prononcé « SEQUEL ») signifie « Structured Query Language ». C'est un langage qui vous donne la possibilité de créer et de travailler dans des bases de données relationnelles, qui sont des collections d'informations associées stockées dans des tables. Si vous vous demandez par où commencer à apprendre SQL, contactez-nous. Notre société vous propose des cours SQL, ainsi que des cours SQL pour débutants, après avoir étudié lesquels vous pourrez créer vous-même une base de données SQL. L'apprentissage de SQL est une activité très prometteuse. Il comprend des cours sur SQL, des cours sur les bases de données SQL et des cours sur les requêtes SQL. Il est possible de suivre des cours de langage SQL et de suivre une formation SQL à partir de zéro, ainsi que de suivre des cours de programmation SQL en utilisant la formation SQL en ligne, en bénéficiant d'une pratique exclusive.

Le monde des bases de données est de plus en plus unifié, ce qui a conduit à la nécessité de créer un langage standard pouvant être utilisé pour fonctionner dans un grand nombre de types d'environnements informatiques différents. Un langage standard permettra aux utilisateurs ayant suivi une formation SQL ou des cours SQL Server et connaissant un ensemble de commandes de les utiliser pour créer, rechercher, modifier et communiquer des informations, quel que soit leur lieu de travail.

Dans notre monde informatique de plus en plus interconnecté, un utilisateur équipé d’un tel langage dispose d’un énorme avantage pour utiliser et résumer des informations provenant d’une gamme de sources de nombreuses manières. Par conséquent, la formation SQL Server et la formation aux requêtes SQL sont très importantes.

Son élégance et son indépendance par rapport à la technologie informatique, ainsi que son soutien auprès des leaders de l'industrie en matière de technologie de bases de données relationnelles, ont fait de SQL, et restera probablement dans un avenir prévisible, le langage standard dominant. Pour cette raison, toute personne souhaitant travailler avec des bases de données doit connaître SQL, suivre un cours de base sur SQL ou apprendre SQL à partir de zéro et suivre un cours de base sur SQL.

La norme SQL est définie par l'ANSI (American National Standards Institute) et est actuellement également adoptée par l'ISO (International Organization for Standardization). Cependant, la plupart des programmes de bases de données commerciaux étendent SQL sans préavis ANSI, ajoutant diverses autres fonctionnalités au langage qui, selon eux, seront très utiles. Parfois, ils violent quelque peu les normes du langage, même si les bonnes idées ont tendance à se développer et à devenir rapidement des normes de « marché » à part entière en raison de leur utilité. Et vous pouvez apprendre toutes ces fonctionnalités en suivant des cours de formation SQL dans nos bureaux ou en suivant une formation SQL en ligne.

Avant de pouvoir utiliser SQL, vous devez comprendre ce que sont les bases de données relationnelles et comment elles sont développées, ainsi que suivre une formation SQL et apprendre les leçons de SQL Server afin que le développement d'une base de données SQL ne semble pas être une tâche ardue.

Comme nous l'avons souligné précédemment, SQL signifie Structured Query Language. L'apprentissage des requêtes SQL et la création de requêtes de base de données sont probablement l'aspect le plus couramment utilisé de SQL. En fait, pour la catégorie des utilisateurs SQL, il est peu probable que quiconque utilise le langage pour autre chose. Pour cette raison, nous commencerons notre étude du langage SQL par une discussion de la requête et de la manière dont elle est exécutée dans ce langage.

Une requête est une commande que vous donnez à votre programme de base de données qui lui demande d'imprimer certaines informations des tables en mémoire. Ces informations sont généralement envoyées directement à l'écran ou au terminal de l'ordinateur que vous utilisez, bien que dans la plupart des cas, elles puissent également être envoyées à une imprimante, stockées dans un fichier (en tant qu'objet dans la mémoire de l'ordinateur) ou fournies en entrée d'une autre commande. ou un processus.

Les requêtes sont généralement considérées comme faisant partie du langage DML. Cependant, comme la requête ne modifie pas les informations dans les tables, mais les affiche simplement à l'utilisateur, nous considérerons les requêtes comme une catégorie distincte parmi les commandes DML qui effectuent une action plutôt que d'afficher simplement le contenu de la base de données.

Toutes les requêtes SQL consistent en une seule commande. La structure de cette commande est d'une simplicité trompeuse car vous devez l'étendre pour effectuer des évaluations et des manipulations de données très complexes. Cette commande s'appelle SELECT.

Sergueï Vorobyov
Ingénieur principal des tests
SQL. Cours de base
www.aplana.ru

Contenu
● Partie 1 : Introduction à SQL
● Partie 2. Langage de définition de données
● Partie 3. Langage de manipulation de données
● Partie 4. DRL. Requêtes simples.
● Partie 5. Sélection de données dans plusieurs tables.
● Partie 6. Fonctions d'agrégation. Regroupement de données.
● Partie 7. Sous-requêtes.
● Partie 8. Fonctions pour travailler avec des chaînes, des dates et des nombres.
23

SQL. Cours de base
Partie 1 : Introduction à SQL
www.aplana.ru

Introduction à SQL
SQL (langage de requête structuré)
requêtes") est un langage informatique universel utilisé pour
créer, modifier et gérer des données dans des bases de données relationnelles
données.
43

Introduction à SQL
Base de données – une liste ou un ensemble de listes chaînées avec
information
Système de gestion de base de données (SGBD) – spécial
logiciel qui gère ces listes
53

Bases de données relationnelles et non relationnelles
Base de données relationnelle – une base de données basée sur un modèle relationnel
données:
Les données de la base de données sont un ensemble de tables ;
Les données satisfont à certaines conditions d'intégrité ;
Prend en charge les opérateurs de manipulation de table
(par exemple, sélectionner ou copier un tableau).
Bases de données non relationnelles – hiérarchiques, réseau,
orienté objet, NoSQL.
63

En quoi les bases de données sont-elles différentes des feuilles de calcul ?
1. Stockage d'un grand nombre de lignes
Les feuilles de calcul ont un nombre limité de lignes.
La base de données stocke des millions de lignes.
2. Service simultané pour de nombreux utilisateurs
3. Sécurité.
Les utilisateurs bénéficient de privilèges uniquement pour
certaines tables et actions.
4. Propriétés relationnelles.
Les données sont stockées dans différentes tables, entre les tables
il y a des liens.
5. Contraintes pour garantir la qualité des données.
73

Tableau
Rangée (ligne) – une rangée horizontale de cellules allouées à chacune
objet de table.
Enregistrement – ​​données sur une ligne.
Colonne – contient des informations d'un type.
Champ – l'intersection d'une colonne et d'une ligne.
83

Bases de l'interface SQL
SGBD
93
Nom
Décodage
InterBase/FireBird
PSQL
SQL procédural
IBM DB2
SQL-PL
Langage procédural SQL
Ms SQL Server/Sybase ASE
T-SQL
Transact-SQL
MySQL
SQL/PSM
SQL/stocké persistant
Module
Oracle
PL/SQL
Langage procédural/SQL
(basé sur la langue Ada)
PostgreSQL
PL/pgSQL
De procédure
Langage/PostgreSQL
(très similaire à Oracle
PL/SQL)

10.

Différences dans la syntaxe des fonctions du SGBD
MSSQL
DB2
NUMÉRIQUE
NOMBRE
NUMÉRIQUE
DATEAJOUTER
MOIS_ADD
(Date + 10 JOURS)
MOIS
DERNIER JOUR
DERNIER JOUR
DATE DIFF
MOIS_BETWEEN
TIMESTAMPDIFF
SUPÉRIEUR
SUPÉRIEUR
UCASE/SUPÉRIEUR
CONVERTIR
À_CHAR
À_CHAR
INITCAP
INITCAP
-
103
Oracle

11.

Syntaxe SQL
Les fonctions et les noms d'objets ne sont pas sensibles à la casse :
SELECT = SÉLECTIONNER.
Cependant, lors d'une recherche dans des champs de texte, la casse est sensible
SQL n'est pas sensible aux sauts de ligne
Les caractères de fin de ligne obligatoires sont manquants
Prend en charge les commentaires sur une seule ligne et
/*multiligne */
Il est d'usage de terminer chaque transaction par un point-virgule, mais
Lors de l'exécution de commandes individuelles, leur utilisation n'est pas
Nécessairement
113

12.

Types de données
CHAR(n) – chaînes de longueur constante (jusqu'à 256 octets dans MS SQL Server), c'est-à-dire
entré moins de données dans la ligne - la taille ne changera pas
VARCHAR(n) – chaînes de longueur variable, c'est-à-dire nécessite tellement de mémoire
combien de données
INTEGER – nombre sans point décimal
NUMÉRIQUE (m,n) – utilisé pour stocker zéro et positif ou
nombres négatifs à virgule fixe et flottante. MPRECISION (nombre total de chiffres), n – SCALE (nombre de chiffres à droite de
virgule). m/n – paramètres facultatifs
DATE - date au format aaaa-mm-jj (ISO), jj/mm/aaaa (ANSI), jj-MON-aa.
BOOLEAN – type de données logique : vrai/faux ou 1/0.
De plus, la valeur du champ peut être NULL - signifie aucune valeur -
cellule vide.
123

13.

Type de DATE
Par défaut, vous pouvez représenter une date dans la base de données au format DD-MONYYYY (par exemple, '01-FEB-1900') :
INSERT INTO table1 (id, date_work) valeurs (1, '01-FEB-1900').
Vous pouvez également utiliser le mot-clé DATE. D'ailleurs, déjà pour
format de date AAAA-MM-JJ (par exemple, « 1900-02-01 ») :
INSERT INTO table1 (id, date_work) valeurs (1, DATE '1900-02-01').
Vous pouvez également utiliser alternativement le type date+heure TIMESTAMP
pour régler non seulement la date, mais aussi l'heure :
INSERT INTO table1 (id, date_work) valeurs (1, '01-FEB-1900-10.50.01'),
ceux.
1er février 1900 10 heures 50 minutes et 1 seconde (format jj-MON-aa)
-hh.mm.ss.nnnnn)
133

14.

Conversion des types de données en MSSQL
CONVERT(type de données, chaîne, style) – conversion d'un
format de données vers un autre
En caractères :
CONVERTIR(VARCHAR(20), GETDATE())
À la date
CONVERTIR(DATETIME, "14-11-2015", 105)
En nombre
CONVERTIR(NUMÉRIQUE, '1234657890")
143

15.

Conversion des types de données dans Oracle
TO_CHAR (valeur d'entrée, format) – conversion de date,
nombres, fois dans une chaîne.
Format : 'MOIS JJ', 'MOIS JJ, AAAA', 'JJ/MM/AAAA', 'JOUR LUN, AA AD'
ANNÉE
$9,999.00
Etc.
TO_CHAR(SYSDATE, "JJ MOIS")
TO_DATE (valeur d'entrée, format) – conversion d'une chaîne en
date. Format : JJ-LUN-AAAA
Jj mois, AAAA, HH: MI après-midi
Etc.
TO_DATE("02-JAN-2012", "JJ-MON-AAAA")
TO_NUMBER (valeur d'entrée, format) – conversion d'une chaîne en nombre.
TO_NUMBER("123")
153

16.

Autres objets de base de données
Les vues sont des objets de base de données qui ne contiennent pas
propres tables, mais leur contenu est extrait d'autres tables
ou des vues en exécutant une requête.
Le schéma est un groupe nommé d'objets de base de données associés.
Index – un objet créé pour augmenter
Performances de recherche. Table masquée en contenant un
ou plusieurs colonnes de tableau et pointeurs de lignes importants
les tables.
Contrainte – conditions qui doivent être remplies
l'utilisateur a saisi les entrées.
163

17.

Autres objets de base de données
Procédure stockée – un objet de base de données,
qui est un ensemble d'instructions SQL. Stocké dans la base de données.
L'appel d'une procédure provoque l'exécution du contenu qu'elle contient.
instructions.
Fonction - similaire à une procédure stockée, mais renvoie
valeur qui peut être utilisée dans un plus grand
opérateur
Déclencheur - une procédure effectuée automatiquement,
lorsqu'un événement spécifié se produit.
Curseur – un lien vers la zone de mémoire contextuelle. En utilisant
curseur, vous pouvez traiter séparément chaque ligne associée à
nim Instruction SQL.
173

18.

Sections du langage SQL
1. DDL - Data Defenition Language (langage de définition d'objet de base de données).
CRÉER, MODIFIER, SUPPRIMER, etc.
2. DCL - Data Control Language (langage de contrôle des données).
ACCORDER, RÉVOQUER
3. DML - Langage de manipulation de données
données). INSÉRER, METTRE À JOUR, SUPPRIMER
4. Récupération de données - récupération de données SELECT
5. Transaction Control (langage pour maintenir le processus de transaction).
COMMIT, ROLLBACK, SAVEPOINT.
183

19.

SQL. Cours de base
Partie 2. Langage de définition de données
www.aplana.ru

20.

Langage de définition de données
1.
CREATE TABLE (création de tables)
Syntaxe générale :
CREATE TABLE nom_table (
field1 Type de champ1,
field2 Type de champ2,
..., champN Type de champN);
CREATE TABLE personne_info (
person_id ENTIER NON NULL,
prénom VARCHAR(15) NON NULL,
nom_VARCHAR(20) NON NULL,
sexe CHAR(1),
date d'anniversaire,
salaire NUMÉRIQUE(7,2));
203

21.

Langage de définition de données
2. ALTER TABLE (tables à langer)
ALTER TABLE nom_table (ADD<имя столбца> <определение столбца>}|
(MODIFIER<имя столбца> <Определение столбца>)| (LAISSER LA COLONNE<имя
colonne>)
3. DROP TABLE (suppression de tables)
DROP TABLE nom_table (CONTRAINTES EN CASCADE);
4. TRUNCATE TABLE (nettoyage des tables)
TRUNCATE TABLE nom_table
213

22.

SQL. Cours de base
Partie 3. Langage de manipulation de données
www.aplana.ru

23.

Langage de manipulation des données
1. INSÉRER - Insérer un seul enregistrement.
INSERT INTO nom_table VALUES (valeur champ1, valeur champ2,..,
valeur fieldN);
INSERT INTO nom_table (champ1, champ3,...) VALEURS (valeur champ1, valeur champ2,...,
valeur fieldN);
INSÉRER DANS person_info VALUES (1, "John", "Smith", "M", "15-OCT-1973",
45568.56);
INSERT INTO person_info (person_id, first_name, last_name) VALUES (5, Sarah", 'Connor");
Avec succès.
INSERT INTO person_info VALUES (NULL, "Jane", "Smith", "F", "8-AUG-1987",
NUL);
Erreur car person_id ne peut pas être NULL.
233

24.

Langage de manipulation des données
Insérer un groupe d'enregistrements
INSERT INTO nom_table
SÉLECTIONNER...;
CRÉER UNE TABLE t2 (
premier_1 VARCHAR(15),
dernier_1 VARCHAR(20),
anniversaire_1 DATE);
INSÉRER DANS t2
SELECT prénom, nom, anniversaire
DE personne_info ;
243

25.

Langage de manipulation des données
INSÉRER DANS person_info VALUES (2, "Sara", "Doe", "F", "9-OCT-1986",
29789.56);

29789.56);
Avec succès.
INSÉRER DANS person_info VALUES (3, "Sara", "Doe", "F", "9-OCT-1986",
29789.56);
Supprimons maintenant la deuxième entrée avec person_id=2
SUPPRIMER DE person_info OÙ person_id = 2
253

26.

Langage de manipulation des données
Intégrité des données
Intégrité de l'entité - définit une ligne de tableau comme une instance unique
une certaine entité.
Clé primaire - une colonne ou un groupe de colonnes est unique
identifiant chaque entrée.
Une clé étrangère est le reflet des relations entre les tables. Subalterne
la table doit avoir une colonne (ou un groupe de colonnes) identique à stocker
valeurs qui identifient de manière unique les enregistrements maîtres.
Intégrité référentielle - il ne doit y avoir aucun enregistrement dans les tables subordonnées
faisant référence à des enregistrements de table principale inexistants.
263

27.

Langage de manipulation des données
273

28.

Langage de manipulation des données
Clé primaire
ALTER TABLE nom_table
AJOUTER UNE CLÉ PRIMAIRE (nom_colonne);
ALTER TABLE personne_info
AJOUTER UNE CLÉ PRIMAIRE (person_id);
Les valeurs de clé primaire impliquent une identification unique
les enregistrements, respectivement, les valeurs​​ne peuvent pas être répétées.
Et encore une fois, nous essaierons d'ajouter une entrée avec person_id=2 :
INSÉRER DANS person_info VALUES (2, "Rita", "Blow", "F", "9-OCT-1975",
29789.56);
283

29.

Clé externe
ALTER TABLE nom_sous-table
AJOUTER UNE CONTRAINTE nom_contrainte CLÉ ÉTRANGÈRE (nom_colonne
subalterne
tables) RÉFÉRENCES main_table_name;
CREATE TABLE adresse_personne (
person_id ENTIER,
adresse VARCHAR(200));
ALTER TABLE adresse_personne
AJOUTER UNE CONTRAINTE person_fk_address
CLÉ ÉTRANGÈRE (person_id)
RÉFÉRENCES person_info;
293

30.

Langage de manipulation des données
INSERT INTO person_address VALUES (1, "Moscou, rue Arbat, 67-14");
INSERT INTO person_address VALUES (2, "Moscou, rue Arbat, 67-14");
Avec succès.
INSERT INTO person_address VALUES (4, "Zelenograd, rue verte, 23");
Erreur. Essayer d'insérer un enregistrement subordonné alors qu'il n'y a pas
l'enregistrement maître correspondant.
INSERT INTO person_address VALUES (3, "Zelenograd, rue verte, 23");
303

31.

Lier des tables lors de la création
Comme nous l'avons vu précédemment, il est largement utilisé pour créer
clés primaires (PRIMARY KEY) et étrangères (FOREIGN KEY)
via des commandes pour modifier la structure des tables existantes. Aussi
Vous pouvez ajouter ces constructions lors de la création d'une table :
CRÉER UNE TABLE onglet1(
identifiant entier CLÉ PRIMAIRE,
…..
313

32.

Langage de manipulation des données
2. MISE À JOUR - Modification des valeurs des colonnes du tableau
A) Modification de toutes les valeurs des colonnes du tableau
MISE À JOUR
ENSEMBLE =
MISE À JOUR adresse_personne
Adresse SET = "Volgograd, Première rue, 15-20"
B) Modification des valeurs de table spécifiques
MISE À JOUR
ENSEMBLE =
=
UPDATE person_address SET adresse = "Volgograd, Première rue, 15-20"
OÙ person_id = 3 ;
MISE À JOUR
ENSEMBLE =
= [opérateur]
UPDATE person_info SET salaire = salaire * 2
OÙ person_id = 3 ;
323

33.

Langage de manipulation des données
3. DELETE - Suppression de lignes d'un tableau
A) Suppression de toutes les valeurs des colonnes du tableau
SUPPRIMER DE
B) Suppression de valeurs de tableau spécifiques
SUPPRIMER DE
=
333

34.

Tâche pratique n°1
1. Créez une base de données illustrée à la Fig. 1 (créez des tables et une clé étrangère)
2. Entrez les données suivantes dans les tableaux.
Département : (1, "Marketing"), (2, "RD")
Emp : (1, 1, "James", 1000), (2, 2, "Smith", 2000)
3. Créez une table dept_arch avec la même structure que la table dept.
4. Insérez toutes les données de la table dept dans la table dept_arch.
343

35.

Tâche pratique n°1 (suite)
5. Augmentez le salaire de l'employé Smith de 15 %.
6. Assurez-vous que l'enregistrement suivant ne peut pas être inséré dans la table des rayons : (2, "Ventes"). Pourquoi?
7. Assurez-vous que l'enregistrement suivant ne peut pas être inséré dans la table emp : (3, 4, "Black", 3000,
"Actif"). Pourquoi?
8. Remplacez le nom du département RD par RandD (table des départements).
9. Supprimez l'entrée avec emp_id = 1 de la table emp.
12. Supprimez toutes les entrées de la table emp.
13. Supprimez la table emp.
353

36.

SQL. Cours de base
Partie 4. DRL. Requêtes simples
www.aplana.ru

37.

Notre base de données de formation
373

38.

Langage de récupération de données
SELECT – sélection des données. Cette section est requise dans la demande et
permet:
SELECT field1,…fieldN FROM table1, .., tableN WHERE condition
383
Définir une liste de colonnes de sortie
Activer les colonnes calculées
Activer les constantes
Renommer les colonnes de sortie
Préciser le principe de traitement des lignes en double
Activer les fonctions d'agrégation

39.

Langage de récupération de données
1.
Définir une liste de colonnes de sortie
La liste des colonnes de sortie peut être spécifiée de plusieurs manières :
. Spécifiez le symbole * pour indiquer l'inclusion de toutes les colonnes dans les résultats de la requête
demandes dans un ordre naturel.
. Listez uniquement ceux dont vous avez besoin dans l'ordre souhaité<имена столбцов>.
SELECT person_code, first_name, last_name FROM personne ;
--Nous pouvons changer l'ordre des colonnes
SELECT prénom, nom, code_personne FROM personne ;
393

40.

Enchaînement
Relier deux ou plusieurs parties de texte.
SELECT nom_produit + " a été vendu par " + vendeur FROM achat ;
403

41.

Langage de récupération de données
2. Activation des colonnes calculées
Les colonnes de requête calculées peuvent être :
. Les résultats d'expressions arithmétiques simples (+, -, /, *_ ou
concaténation de chaînes (+).
. Résultats des fonctions d'agrégation (AVG|SUM|MAX|MIN|
COMPTER)
413

42.

Langage de récupération de données
3. Activation des constantes
Les colonnes peuvent être des constantes numériques et
types de caractères.
SELECT "Il existe un tel code", code_personne, "pour", prénom, nom
DE la personne
423

43.

Langage de récupération de données
4.
Renommer les colonnes de sortie
Calculé, ainsi que toute autre colonne, si vous le souhaitez,
vous pouvez attribuer un nom unique à l'aide d'un mot-clé
COMME:<выражение>COMME<новое имя>
SELECT nom_produit + " a été vendu par " + vendeur AS SOLDBY
DE l'achat ;
Vous pouvez définir des alias sans utiliser de mot-clé, mais avec des restrictions :
SELECT nom_produit + " a été vendu par " + vendeur SOLDBY
DE l'achat ;
SELECT nom_produit + " a été vendu par " + vendeur " Vendu par "
DE l'achat ;
433

44.

Langage de récupération de données
5. Indiquer le principe du traitement des doublons
DISTINCT – interdit l’apparition de lignes en double dans la sortie
beaucoup. Il peut être spécifié une fois par instruction SELECT.
En pratique, l'ensemble de sortie est initialement constitué,
organisé, puis les doublons en sont supprimés
significations. Cela prend généralement beaucoup de temps et ne devrait pas être fait
abus.
SELECT DISTINCT * FROM personne
ALL (par défaut) – garantit l'inclusion dans
résultats de requête et valeurs en double
443

45.

Langage de récupération de données
6.
Activation des fonctions d'agrégation
Fonctions d'agrégation (ensemble, statistique ou
basic) sont conçus pour calculer certaines valeurs pour
un ensemble donné de chaînes. Les agrégats suivants sont utilisés
Caractéristiques:
MOYENNE|SOMME(<выражение) – подсчитывает среднее значение | сумму от
<выражение>.
MINIMUM|MAX(<выражение>) – trouve le maximum | valeur minimum.
COMPTE(*|<имя столбца>) – compte le nombre de lignes
Mais plus là-dessus plus tard
453

46.

Langage de récupération de données
OÙ – sélection de données répondant à certaines
conditions.
SELECT champ1,…champN FROM table1, .., tableM WHERE
condition1,…conditionY
463

47.

Langage de récupération de données
Exemples:
SELECT * FROM product OÙ laststockdate EST NULL ;
SELECT * FROM product OÙ laststockdate N'EST PAS NULL ;
SELECT nom_produit, prix_produit, quantité_on_hand
FROM produit OÙ quantité_en_main > 150 ;
SELECT nom_produit, prix_produit FROM produit
OÙ nom_produit<>« Zinculateur carré » ;
473

48.

Langage de récupération de données
Il existe également des conditions plus complexes :
Frappé dans plusieurs
<конструктор значений строки>DANS (<подзапрос>|<набор конструкторов
valeurs de chaîne>)
Un ensemble de valeurs est défini dans lequel l'objet de comparaison écrit auparavant
mot-clé IN, peut appartenir ou non. Si la sous-requête n'est pas
renvoie des chaînes, puis le prédicat est évalué à FALSE.
Exemples de travail avec des ensembles :
SELECT * FROM achat OÙ vendeur IN ("CA", "BB");
SELECT * FROM achat OÙ le vendeur PAS DANS ("CA", "BB");
SELECT * FROM achat OÙ (vendeur + nom_produit) dans (("CA" + "Petit
Widget"), ("GA" + "Chrome Phoobar"))
483

49.

Langage de récupération de données
Accessoires de gamme
<конструктор значений строки>ENTRE<конструктор
valeurs de ligne 1>ET<конструктор значений строки 2>
Le prédicat BETWEEN est similaire au prédicat IN, mais au lieu d'éléments
de l'ensemble, il définit les frontières inclusives dans lesquelles il ne [devrait] pas
atteint la valeur en cours de vérification.

product_price NON ENTRE 1 ET 80 ;
493

50.

Langage de récupération de données
opérateurs booléens
<предикат>(ET|OU|PAS)<предикат>
Notes : Les opérateurs booléens lient un ou plusieurs prédicats pour former
valeur logique unique VRAI|FAUX. Utiliser des prédicats avec
Opérateurs booléens, vous pouvez augmenter considérablement la sélection
possibilité de sélectionner des lignes dans les résultats de la requête.
Lorsque vous utilisez des opérateurs booléens, en particulier l'opérateur NOT, vous devez
utilisez des parenthèses pour former correctement les conditions (ET
exécuté avant OR).

"%Widget" OU prix_produit< 20;
SELECT nom_produit, prix_produit FROM produit WHERE nom_produit LIKE
"%Widget" ET prix_produit< 20;
503

51.

Langage de récupération de données

SELECT liste de champs FROM liste de tables WHERE valeur à vérifier LIKE
(modèle) (ESCAPE (nom de passe));
N'importe quel caractère - _
SELECT person_code, first_name, last_name FROM person WHERE person_code LIKE "_A" ;
N'importe quelle sous-chaîne - %
SELECT nom_produit FROM produit WHERE nom_produit LIKE "%Chrome%" ;
Si vous devez rechercher du texte avec le symbole % (par exemple, le nom d'un produit
a B c d e F):
WHERE nom_produit LIKE "ab$%c%" ESCAPE "$";
Le premier % est lu comme un caractère dans le nom, le second comme n'importe quelle chaîne.
513

52.

Langage de récupération de données
LIKE opérateur de recherche approximatif
… où le deuxième prénom est comme « %ov% »
… où patronyme comme « I% »
… où le patronyme est du type « %vich »
… où le nom de famille ressemble à « ____ov »
523

53.

Langage de récupération de données
LIKE opérateur de recherche approximatif

sélectionnez le nom_du_produit lors de l'achat
où nom_produit comme "%Widget"
sélectionnez le nom_du_produit lors de l'achat
où product_name comme "%$%Widget"
échapper "$"
533

54.

Langage de récupération de données
Tri
SELECT liste de colonnes FROM liste de tables WHERE condition
ORDER BY liste de colonnes ASC (DESC);
Descendant:
SELECT nom_produit, prix_produit FROM produit
COMMANDE PAR prix_produit DESC ;
Ascendant:
SELECT nom_produit, prix_produit FROM produit
ORDER BY nom_produit ASC ;
543

55.

Tâche pratique n°2
1. Écrivez une requête qui affiche l'intégralité du tableau d'achat.
2. Écrivez une requête qui sélectionne les colonnes product_name et quantité de
Achetez des tables.
3. Écrivez une requête qui sélectionne ces colonnes dans l'ordre inverse.
4. Écrivez une requête qui imprime la personne pour chaque ligne du tableau
le texte suivant :
commencé à travailler *. La colonne résultante
attribuer l'alias « Travail commencé ».
5. Écrivez une requête qui affiche le nom des produits product_name
(produit de table), dont le prix n'est pas défini (NULL).
6. Écrivez une requête qui affiche le nom du produit product_name
(tableau d'achat), dont ils ont vendu de 3 à 23 pièces.
* MSSQL ne prend pas en charge la jointure de colonnes avec les types de données varchar et date. Utiliser l'opérateur
convection : CONVERTIR(VARCHAR, embauché)
3

56.

Tâche pratique n°2 (suite)
7. Écrivez une requête qui affiche les noms des employés dont
embauché les 1er, 15 et 28 février 2010.
8. Écrivez une requête qui affiche les noms des produits
nom_produit (table d'achat) vendu par des employés dont le nom de famille commence par « B ».
9. Écrivez une requête qui affiche les noms des produits
nom_produit (table d'achat) vendu par des employés dont le nom de famille ne commence pas par
"B".
10. Rédigez une requête qui affiche les noms de famille et la date d'embauche
les employés dont le nom commence par « B » et qui sont acceptés
travailler avant le 1er mars 2010.
11. Écrivez une requête qui affiche les noms des produits
nom_produit et date de dernière livraison laststockdate (tableau
produit), dont les noms sont Small Widget, Medium Widget et Large
Widget ou ceux sans dernière date de livraison.
Trier par date de dernière livraison par ordre décroissant.
563

57.

SQL. Cours de base
Partie 5. Récupération de données de plusieurs tables
www.aplana.ru

58.

Récupérer des données de plusieurs tables
SELECT table_name_1.column_name, table_name_2.
nom de colonne
FROM nom_table_1, nom_table_2 ;

DE achat, personne;
Produit cartésien - une combinaison sans
Clause WHERE, qui aboutit à chaque ligne
un tableau est combiné avec chaque ligne de l'autre
les tables.
583

59.

Récupérer des données de plusieurs tables avec une condition
SELECT table_name_1.column_name, table_name_2. nom de colonne
DE nom_table_1, nom_table_2
OÙ main_table_name.primary_key =
nom_sous-table.clé_étranger ;
SELECT achat.nom_produit, personne.premier_nom, personne.nom_famille
DE l'achat, personne
OÙ personne.person_code = achat.salesperson;
593

60.

Types de connexion
Il existe également d'autres façons de connecter des tables par clés :
<таблица А> [<тип соединения>] REJOINDRE<таблица B>SUR<предикат>
<тип соединения>représente l'un des arguments : INNER|(LEFT|RIGHT|
COMPLET)
INNER – inclut les lignes comportant des colonnes avec des données correspondantes
tableaux fusionnés. Utilisé par défaut.
GAUCHE – inclut toutes les lignes du tableau A (tableau de gauche) et toutes les lignes correspondantes
valeurs du tableau B. Les colonnes de lignes non correspondantes sont remplies de valeurs NULL.
DROITE – inclut toutes les lignes du tableau B (tableau de droite) et toutes les lignes correspondantes
valeurs du tableau A. option inverse pour la jointure gauche.
FULL – inclut toutes les lignes des deux tableaux. Colonnes de lignes correspondantes
sont remplies de valeurs réelles et les lignes non correspondantes sont remplies de valeurs NULL.
OUTER (externe) – un mot qualificatif signifiant que les lignes qui ne correspondent pas
de la table principale sont inclus avec ceux correspondants.
603

61.

Options de jointure de table
adresse
téléphone
JOINTURE INTERNE
SELECT * FROM adresse INNER JOIN téléphone ON adresse.ClientID=phone.ClientID
613

62.

Options de jointure de table
adresse
téléphone
SELECT * FROM adresse, téléphone WHERE adresse.clientID=phone.ClientID
623

63.

Options de jointure de table
adresse
téléphone
JOINT GAUCHE
SELECT * FROM adresse LEFT JOIN téléphone ON adresse.ClientID=phone.ClientID
633

64.

Options de jointure de table
adresse
téléphone
REJOINDRE À DROITE
SELECT * FROM adresse RIGHT JOIN téléphone ON adresse.ClientID=phone.ClientID
643

65.

Options de jointure de table
adresse
téléphone
REJOINDRE COMPLÈTEMENT
SELECT * FROM adresse FULL JOIN téléphone ON adresse.ClientID=phone.ClientID
653

66.

Rejoindre les opérateurs
UNION renvoie toutes les lignes des deux instructions SELECT ; répétitif
les valeurs sont supprimées.
UNION ALL renvoie toutes les lignes des deux instructions SELECT ; répétitif
les valeurs sont affichées.
INTERSECT renvoie les lignes renvoyées en premier et en deuxième
avec l'instruction SELECT.
EXCEPT renvoie les lignes renvoyées par la première instruction SELECT,
à l'exclusion de ceux renvoyés par la deuxième instruction.
Le nombre et l'ordre des colonnes renvoyées par SELECT à partir des deux tables doivent
coïncider.
663

67.

Rejoindre les opérateurs
SELECT nom_produit
DE l'achat
COMMANDER PAR nom_produit
673
SELECT nom_produit
DE achat_archive
COMMANDER PAR nom_produit
SELECT nom_produit
DE l'achat
SYNDICAT
SELECT nom_produit
DE achat_archive
COMMANDER PAR nom_produit

68.

Rejoindre les opérateurs
SELECT nom_produit
À PARTIR D'ACHAT
U N I O N TOUS
SELECT nom_produit
DE M achat_archive
COMMANDER PAR 1
683
SELECT nom_produit
À PARTIR D'ACHAT
SAUF
SELECT nom_produit
DE M achat_archive
COMMANDER PAR 1
SELECT nom_produit
À PARTIR D'ACHAT
EN COURANT
SELECT nom_produit
DE M achat_archive
COMMANDER PAR 1

69.

Alias ​​​​dans la zone FROM
Lors de l'utilisation de grandes bases de données avec des schémas, il est d'usage
utilisation d'alias :
SELECT purc.product_name, prod.laststockdate, pers.first_name,
pers.nom_famille
DE l'achat en tant que purc,
Personne en tant que personnes,
Produit produit
OÙ pers.person_code = purc.salesperson ET
prod.nom_produit = purc.nom_produit ;
693

70.

Tâche pratique n°3
1. Écrivez une requête qui affiche le produit cartésien des tables de produits
et acheter.
2. Rédigez une requête qui affiche le nom du produit vendu
nom_produit, quantité (table d'achat) et
quantité_on_hand (tableau des produits).
3.Écrivez une requête qui affiche le nom du produit product_name
(tableau d'achat), date de dernière livraison date de dernier stock (tableau
product) et le nom du vendeur (table personne).
4. Écrivez une requête qui affiche les colonnes product_name, first_name,
last_name de la jointure externe des tables d'achat et de personne. Utiliser pour les tableaux
des surnoms courts.
703

71.

Tâche pratique n°3 (suite)
5. Écrivez une requête qui affiche tous les codes d'achat non répétitifs
les vendeurs
vendeur de la table Purchase_archive.
6. Rédigez une requête qui affiche uniquement les codes des vendeurs de
tables d'achat, qui sont également contenues dans la table Purchase_archive.
7. Écrivez une requête qui affiche tous les codes (y compris les doublons)
vendeur des tables Purchase et Purchase_archive.
713

72.

SQL. Cours de base
Partie 6. Fonctions d'agrégation. Regroupement
données.
www.aplana.ru

73.

Opérateurs mathématiques
Opérateur mathématique – symboles désignant les opérations (+, -, *, /)
Calculs utilisant les données des tableaux.
SELECT nom_produit, prix_produit * 1.07 FROM produit ;
SELECT nom_produit, prix_produit * quantité_on_hand
DE produit ;
SELECT nom_produit, prix_produit * 1,07 * quantité_on_hand prix_produit * quantité_on_hand
DE produit ;
SELECT nom_produit, prix_produit * (quantity_on_hand + 10)
DE produit ;
733

74.

Opérateurs mathématiques
Fonctions d'agrégation (fonctions d'ensemble, statistiques ou de base)
sont conçus pour calculer certaines valeurs pour un ensemble donné
lignes.
1. SUM - additionne les valeurs et renvoie le total.
SELECTIONNER SOMME (quantité)
DE l'achat ;
2. AVG – renvoie la valeur moyenne pour le spécifié
colonne.
SELECT AVG(prix_produit)
DE produit ;
743

75.

Opérateurs mathématiques
3. MIN – renvoie la valeur minimale de la colonne spécifiée.
SELECT MIN (prix_produit)
DE produit ;
4. MAX - renvoie la valeur maximale de la colonne spécifiée.
SELECT MAX(prix_produit)
DE produit ;
753

76.

Opérateurs mathématiques
5. COUNT – compte les enregistrements.
SÉLECTIONNER LE COMPTE(*)
DE l'achat ; --nombre de lignes incluant les valeurs NULL
SELECT COUNT (nom_produit)
FROM achat ;--valeurs dans la colonne, en ignorant les valeurs NULL
763

77.

PAR GROUPE
Cette section est destinée à combiner les résultats des requêtes en groupes et à calculer
pour chacun d’eux des valeurs statistiques. Parfois, le terme est utilisé
"table groupée"
SELECT nom_produit, SUM(quantité)
DE l'achat
GROUP BY nom_produit ;
Vous pouvez inclure plusieurs fonctions de groupe dans une instruction SELECT.
SELECT nom_produit, SUM(quantité) "Total vendu", COUNT(quantité) Transactions
DE l'achat
GROUP BY nom_produit ;
773

78.

AYANT
HAVING – est une sous-section conçue pour limiter le nombre
lignes dans la table groupée et fait partie de la clause GROUP BY.
Le prédicat de cette section est construit selon les mêmes règles sémantiques que
dans la clause WHERE, mais seulement
les colonnes spécifiées dans la clause GROUP BY. Le reste peut
À utiliser uniquement dans les fonctions d'agrégation. Cette section
limite la composition des groupes (sous-groupes) de lignes dans lesquels il est divisé
résultat de la requête. Les groupes (sous-groupes) incluent uniquement ceux de
ensemble de chaînes possibles dont les valeurs satisfont aux conditions
Prédicat de section HAVING. Dans la section HAVING, vous pouvez utiliser
requêtes imbriquées avec fonctions d'agrégation, ainsi que les requêtes associées
sous-requêtes.
783

79.

AYANT
Autrement dit, en résumant ce qui a été décrit ci-dessus, nous pouvons affiner
affectation de sous-section à :
Avec la construction HAVING, vous pouvez
groupes de filtres.
HAVING fonctionne de la même manière pour les groupes que WHERE pour les enregistrements individuels.
SELECT nom_produit, SUM(quantité) "Total vendu",
COUNT(quantité) Transactions
DE l'achat
GROUPER PAR nom_produit
AVOIR SOMME(quantité)< 5;
793

80.

Tâche pratique n°4
1. Écrivez une requête montrant quel sera le prix du produit product_price après
augmenter de 15%.
2. Écrivez une requête qui montre combien de produits il y a dans la table des produits.
3.Écrivez une requête indiquant pour quelle quantité de produits (tableau des produits)
le prix est indiqué.
4. Écrivez une requête qui affiche le prix minimum et maximum des produits product_price.
5. Écrivez une requête montrant combien a été reçu des ventes de chaque produit
des noms.
6. Écrivez une requête montrant combien a été reçu des ventes de chaque produit
des noms. Afficher uniquement les enregistrements pour lesquels le montant des ventes est supérieur à 125.
803

81.

SQL. Cours de base
Partie 7. Sous-requêtes
www.aplana.ru

82.

Sous-requêtes
Une sous-requête est une requête SELECT standard imbriquée dans une instruction
SÉLECTIONNER
MISE À JOUR
ou
SUPPRIMER.
Il est utilisé comme source de données pour la clause FROM ou
OÙ de l'opérateur parent.
823

83.

Sous-requêtes
Il existe certaines limites à l'utilisation des sous-requêtes :
833
Une sous-requête ne doit sélectionner qu'une seule colonne (sauf pour une sous-requête avec
prédicat EXISTS), et le type de données de son résultat doit correspondre au type
valeur de données spécifiée dans le prédicat.
Dans certains cas, vous pouvez utiliser le mot-clé DISTINCT pour garantir
obtenir une valeur unique.
Vous ne pouvez pas inclure de clause ORDER BY ou UNION dans une sous-requête.
La sous-requête peut être située à gauche ou à droite de la condition de recherche.
Les sous-requêtes peuvent utiliser des fonctions d'agrégation sans partitionnement
PAR GROUPE

84.

Sous-requêtes à une seule ligne
Une sous-requête à une seule ligne est une sous-requête qui renvoie une seule valeur.
Les symboles de comparaison sont utilisés avec le résultat d'une sous-requête (=,<>, <, <=,
>, >=)
SELECT * FROM produit
OÙ date du dernier stock = (SELECT date du dernier stock
FROM produit WHERE nom_produit = "Petit Widget");
Exemple (en utilisant une fonction d'agrégation dans une sous-requête à une seule ligne) :
SELECT * FROM produit WHERE prix_produit >
(SELECT AVG(product_price) FROM produit);
843

85.

Sous-requêtes à plusieurs lignes
Une sous-requête à plusieurs lignes est une sous-requête qui renvoie uniquement >=1
signification.
Pour de telles sous-requêtes, vous ne pouvez pas comparer avec
utiliser des signes égal/inégal ; la fonction doit être utilisée
DANS.
SELECT * FROM produit
OÙ nom_produit IN
(SÉLECTIONNEZ LE nom_du_produit DISTINCT DE L'achat );
MISE À JOUR du produit SET product_price = product_price * 0.9
WHERE nom_produit PAS DANS (SELECT DISTINCT nom_produit
DE l'achat);
853

86.

EXISTE
EXISTS utilise une sous-requête comme argument et
est évalué à vrai si la sous-requête contient
sortie, sinon comme faux.
La sous-requête est exécutée une fois et peut contenir
plusieurs colonnes car leurs valeurs ne sont pas vérifiées,
mais le résultat de la présence de lignes est simplement enregistré.
Notes sur le prédicat EXISTS :
EXISTS est un prédicat qui renvoie VRAI ou FAUX, et
il peut être utilisé seul ou avec d'autres booléens
expressions.
863

87.

EXISTE
SELECT * FROM produit
OÙ EXISTE
(SÉLECTIONNER * DEPUIS l'achat
OÙ produit.nom_produit = achat.nom_produit);
873

88.


ALL - la comparaison sera effectuée avec tous les enregistrements
renvoie une sous-requête (ou simplement avec toutes les valeurs de l'ensemble). Vrai
ne reviendra que si tous les enregistrements renvoyés
la sous-requête satisfera la condition que vous spécifiez.
SELECT * FROM produit
OÙ prix_produit >= TOUS (SELECT produit.prix_produit
DE l'achat, du produit


La requête renverra tous les produits de la table product dont le prix est supérieur ou supérieur à
égal au prix de chaque article vendu par un salarié portant le code « GA ».
883

89.

Conditions de groupe (opérateurs de comparaison).
ANY - la comparaison retournera vrai si la condition est satisfaite par au moins un
un enregistrement d'une sous-requête (ou d'un ensemble).
SELECT * FROM produit WHERE prix_produit > TOUT (SELECT
produit.product_price
DE l'achat, du produit
OÙ achat.nom_produit = produit.nom_produit
ET achat.salesperson = "GA");
La requête renverra tous les enregistrements de la table des produits pour lesquels le prix du produit est
plus que le prix de tout produit vendu par un employé portant le code « GA ».
CERTAINS - fait la même chose que TOUT. Complètement interchangeable.
893

90.

Tâche pratique n°5
1. Écrivez une requête qui renvoie tous les employés embauchés en même temps
le même jour que l'employé John Smith.
2. Écrivez une requête qui renvoie tous les produits dont le prix est inférieur au prix moyen.
3. Écrivez une requête qui renvoie tous les produits vendus plus d'une fois
fois.
4. Imprimez le prix des biens vendus plus d'une fois, augmenté de 15 %.
5. À l'aide de la condition EXISTS, écrivez une requête qui renvoie tous les employés
qui ont vendu quelque chose au moins une fois.
6. Écrivez une requête qui renvoie tous les produits de la table product dont le prix
inférieur au prix de tout article vendu par un employé portant le code « GA ».
7. écrivez une requête qui renverra tous les produits de la table des produits dont le prix est inférieur
les prix d'au moins un produit vendu par un salarié portant le code « GA ». Sois sûr que
Les opérateurs SOME et ANY sont interchangeables.
903

91.

SQL. Cours de base
Partie 8. Fonctions pour travailler avec des chaînes, des dates et
Nombres
www.aplana.ru

92.

Fonctions pour travailler avec des nombres
ROUND - arrondit les nombres à n'importe quelle précision spécifiée.
ROUND(input_value, nombre de décimales)
SELECT nom_produit, ROND(prix_produit, 0)
DE produit ;
SÉLECTIONNER RONDE(1234.5678, 3) --MSSQL
SÉLECTIONNER RONDE(1234.5678, 3) À PARTIR DE DOUBLE ;
Fonction ROND
ROND(1234.5678,4)
ROND(1234.5678, 3)
ROND(1234.5678, 2)
ROND(1234.5678,1)
ROND(1234.5678,0)
ROND(1234.5678, -1)
ROND(1234.5678,-2)
ROND(1234.5678,-3)
923
Valeur de retour
1234.5678
1234.568
1234.57
1234.6
1235
1230
1200
1000
--Oracle

93.

Fonctions pour travailler avec des nombres
TRUNC - tronque un nombre, réduisant sa précision.
Fonction TRUNC
Valeur de retour
COFFRE(1234.5678,4)
1234.5678
COFFRE(1234.5678,3)
1234.567
TRONC(1234.5678, 2) 1234.56
TRONC(1234.5678,1)
1234.5
TRONC(1234.5678,0)
1234
TRONC(1234.5678,-1)
1230
TRONC(1234.5678, -2) 1200
TRONC(1234.5678, -3) 1000
933

94.

Tableaux auxiliaires
Tableaux auxiliaires (fictifs)
Pour exécuter des fonctions sans être lié à des tables spécifiques dans un certain nombre de SGBD
il est nécessaire de spécifier une table de service, puisque SQL implique
sélectionnez...dans la construction.
Oracle-DOUBLE
DB2-SYSDUMMY1
SYBASE – Factice
MySQL-DOUBLE
MSSQL – manquant. MSSQL reconnaît les requêtes de service sans
besoin de spécifier une table factice.
943

95.

Fonctions pour travailler avec des dates
GETDATE – renvoie la date actuelle.
sélectionnez getdate();
DATEADD – Renvoie la date obtenue comme la somme de la date d'origine
date et intervalle ajouté à la date donnéepartie de la date
date.
ADD_MONTHS(valeur, quantité, date de début)
SELECT DATEADD(mois, 1, GETDATE());
SELECT DATEADD(année, -2, GETDATE());
953

96.

Fonctions pour travailler avec des dates
EOMONTH – renvoie le dernier jour de n'importe quel mois spécifié
à la date qui lui a été transmise (MSSQL 2012+).
EOMOIS(date)
SELECT EOMONTH(GETDATE());
SELECT EOMOIS("2015-03-15");
SELECT prénom, nom, embauché, EOMONTH(hiredate)+1
DE personne ;
963

97.

Fonctions pour travailler avec des dates
DATEDIFF – Renvoie le nombre d'unités séparant deux dates.
DATEDIFF(valeur, date de début, date de fin)
SELECT DATEDIFF(milliseconde, GETDATE(), SYSDATETIME());
SELECT DATEDIFF(MOIS, "17-AUG-2012", GETDATE());
973

98.

Fonctions pour travailler avec du texte
UPPER – met tous les caractères d’une chaîne en majuscules.
LOWER - met tous les caractères de la chaîne en minuscules.
INITCAP (oracle) – change la casse d'une chaîne en mixte (la première lettre de chaque
les mots seront en majuscules, le reste du mot sera en minuscules).
SELECT UPPER(product_name) FROM produit ;
SELECT LOWER(product_name) FROM produit ;
SELECT INITCAP("ce TEXTE avait un cas IMPRÉVISIBLE") FROM DUAL;
983

99.

Fonctions pour travailler avec du texte
LEN – définit la longueur de la ligne.
SELECT nom_produit, LEN(nom_produit) LONGUEUR
DU produit
OÙ LEN(nom_produit) > 15 ;
993

100.

Fonctions pour travailler avec du texte
SUBSTRING – tronque la valeur du paramètre.
SUBSTRING(source_text, position du caractère de début,
Personnages)
SOUS-CHAÎNE(ligne 1, a, [,b])
Renvoie la partie de la "Ligne 1" commençant par le numéro de caractère a,
et ayant une longueur de b caractères. Si a = 0, cela équivaut à
a = 1 (début de ligne) si b est un caractère positif renvoyé
de gauche à droite. Si b est négatif alors en partant de la fin de la ligne et
se comptent de droite à gauche ! Si b est manquant, alors par défaut
tous les caractères sont renvoyés jusqu'à la fin de la ligne
100
3

101.

Fonctions pour travailler avec du texte
SELECT SUBSTRING(item_id, 1, 3) EMPLACEMENT,
SUBSTRING(item_id, 5, 3) ITEM_NUMBER
DE ancien_élément ;
101
3

102.

Fonctions pour travailler avec du texte
CHARINDEX - trouve la position du ou des caractères séparant les éléments
lignes
CHARINDEX(ligne 1, ligne 2, [,a])
Renvoie l'emplacement "ligne 1" à "ligne 2". "ligne 2" est visualisée
à gauche, en partant de la position a. Si a est négatif, alors la "ligne 2" est examinée
sur la droite. La valeur par défaut de a est 1, ce qui donne une position
première occurrence, "ligne 1", dans "ligne 2". Si on lui donne un, la "ligne 1" n'est pas
trouvé, renvoie 0
102
3

103.

Fonctions pour travailler avec du texte
CHARINDEX(caractère_recherche, texte_recherche, position
_starting_character)
SELECT item_desc, CHARINDEX(",", item_desc, 1)
DE ancien_élément ;
103
3

104.

Imbrication de fonctions
SELECT item_desc, SUBSTRING(item_desc, 1, CHARINDEX(",", item_desc, 1))
CATÉGORIE
DE ancien_élément ;
104
3

105.

Imbrication de fonctions
105
3
SELECT item_desc,
SUBSTRING(item_desc, 1, CHARINDEX(",", item_desc, 1)-1) CATÉGORIE,
SUBSTRING(item_desc, CHARINDEX(",", item_desc, 1)+2, 99) ITEM_SIZE
DE ancien_élément ;

106.

Tâche pratique n°6
1. J'utilise des fonctions pour travailler avec des dates et des nombres, compter,
quel âge as-tu ?
2. Imprimez la ligne « JE CONNAIS LES FONCTIONS DE TEXTE » en haut et
minuscule.
3. Découvrez la longueur de cette chaîne.
4. En travaillant avec la colonne Purchase.product_name, vous obtenez :
trois premiers personnages
tous les personnages restants à partir du quatrième
ligne complète
106
3

107.

Ressources utiles
http://sqlfiddle.com/ - un outil qui émule une base de données vide :
vous permet d'effectuer une partie importante de DML, DDR et DR
demandes. Prend en charge 5 dialectes principaux
http://www.sql-tutorial.ru/ - tutoriel interactif sur SQL sur
russe
http://www.sql-ex.ru/ - portail interactif de solutions
Tâches SQL
https://dev.mysql.com/downloads/mysql/ - SQL gratuit
serveur pour divers OS
https://www.mysql.com/products/workbench/ - gratuit
outil pour travailler avec le serveur MySql
107
3

108.

Merci pour votre attention!
Vos questions?
Entreprise Aplana
Sergueï Vorobyov
Ingénieur principal des tests
+7-917-556-13-49
www.aplana.ru

Transcription

2 Société professionnelle Postgres E. P. Morgunov LANGAGE SQL. FORMATION DE COURS DE BASE ET MANUEL PRATIQUE Moscou 2017

3 UDC BBK M79 M79 Morgunov, E. P. Langage SQL. Cours de base : pédagogique-pratique. allocation / E. P. Morgunov; édité par E.V. Rogova, P.V. Luzanova ; Postgres Professionnel. M., p. Ce guide pédagogique et pratique représente la première partie fondamentale de la formation en langage SQL proposée par la société russe Postgres Professional. Le matériel de formation est présenté sur la base de l'utilisation du système de gestion de base de données PostgreSQL. Le manuel peut être utilisé aussi bien sous la direction d'un enseignant que pour l'auto-apprentissage du langage SQL. Le manuel est destiné aux étudiants qui étudient dans les domaines « Informatique et informatique », « Systèmes et technologies de l'information », « Informatique appliquée », « Génie logiciel » et « Support mathématique et administration des systèmes d'information ». Il peut être utile à un large éventail d'étudiants et de professionnels souhaitant se familiariser avec les bases du langage SQL dans l'environnement du système de gestion de bases de données PostgreSQL. UDC BBK Postgres Professional, 2017 E.P. Morgunov, 2017

4 Table des matières Introduction 5 1 Introduction aux bases de données et à SQL Que sont les bases de données et pourquoi elles sont nécessaires Concepts de base du modèle relationnel Qu'est-ce que le langage SQL Description du domaine et de la base de données de formation Questions et devoirs de test Création d'un environnement de travail Installation d'un programme SGBD psql terminal interactif PostgreSQL Déployer un environnement de formation bases de données Questions et tâches de test Opérations de base avec les tables 22 Questions et tâches de test Types de données du SGBD PostgreSQL Types numériques Types de caractères (chaînes) Types date/heure Type booléen Tableaux Types JSON Questions et tâches de test Notions de base du langage de définition de données Par défaut valeurs et restrictions intégrité Création et suppression de tables Modification de tables Vues Schémas de base de données Questions et tâches de quiz Requêtes Fonctionnalités supplémentaires de la commande SELECT Jointures Agrégation et regroupement Sous-requêtes Questions et tâches de quiz Modification de données Insertion de lignes dans des tables Mise à jour de lignes dans des tables Suppression de lignes dans des tables Quiz questions et tâches

5 8 Index Informations générales Index multicolonnes Index uniques Index basés sur des expressions Index partiels Défis et défis Transactions Niveau d'isolement READ UNCOMMITTED Niveau d'isolement READ COMMITTED Niveau d'isolement REPEATABLE READ Niveau d'isolement SERIALIZABLE Exemple de transaction Verrous Défis et défis Amélioration des performances Concepts clés Méthodes navigation dans les tableaux Méthodes pour former des jointures d'ensembles de lignes Gestion du planificateur Optimisation des requêtes Questions et tâches de test Sources recommandées 255 4

6 Introduction Actuellement, le terme « base de données » est connu de nombreuses personnes, même celles qui sont éloignées du développement professionnel de programmes informatiques. Les bases de données sont devenues une technologie très répandue, ce qui nécessite davantage de personnes pour les concevoir et les maintenir. Au cours de l'évolution de la théorie et de la pratique des bases de données, le modèle de données relationnelles est devenu la norme de facto et, dans le cadre de ce modèle, un langage de programmation spécialisé a été formé qui permet d'effectuer toutes les opérations nécessaires avec le langage de requête structuré ( SQL). Ainsi, un élément important des qualifications d’un professionnel des bases de données est la maîtrise du langage SQL. Ce tutoriel couvre les bases du langage SQL et constitue un cours de base. De plus, le langage est considéré par rapport à un système de gestion de base de données (SGBD) spécifique PostgreSQL. L'implémentation du langage SQL dans chaque SGBD est conforme à la norme à un degré ou à un autre, mais en plus des fonctions et capacités standardisées, chaque SGBD propose également ses propres extensions de langage supplémentaires. PostgreSQL offre un très bon support du standard de langage SQL et fournit également des fonctionnalités supplémentaires intéressantes et utiles dans la pratique. L'un des principaux avantages de PostgreSQL est son extensibilité. Cela signifie par exemple que l'utilisateur (qui est bien entendu un expert en bases de données) peut développer ses propres types de données. Ces types de données auront toutes les propriétés des types de données intégrés et pourront être mis en service sans arrêter le serveur. De plus, PostgreSQL est un produit gratuit et open source disponible sur un grand nombre de plateformes. Le didacticiel couvre non seulement toutes les commandes SQL de base, mais également d'autres sujets tels que les index et les transactions. Le manuel est rédigé de telle manière qu'il peut être utilisé à la fois sous la direction d'un enseignant et de manière indépendante. On suppose que les étudiants ont accès à un SGBD déjà installé. La procédure d'installation de PostgreSQL n'est donc pas abordée en détail, mais seules des instructions sont données pour savoir où trouver les instructions d'installation. Ce tutoriel est conçu pour vous donner des compétences pratiques dans l'utilisation du langage SQL. Le matériel pédagogique est présenté de manière à ce que le lecteur puisse acquérir des connaissances très importantes en accomplissant les tâches situées à la fin de chaque chapitre. Ces connaissances peuvent ne pas être présentées dans le texte principal des chapitres. On suppose qu'une partie importante des tâches sera effectuée par le lecteur de manière indépendante à l'aide de la documentation du SGBD PostgreSQL, mais des instructions pour leur mise en œuvre sont souvent données. Les tâches données dans le manuel varient en niveau de difficulté. Les plus difficiles d'entre eux, ainsi que ceux qui demandent beaucoup de temps, sont marqués d'un astérisque. Les devoirs peuvent être complétés pendant que vous étudiez le matériel pédagogique d'un chapitre particulier. Cependant, certains d'entre eux sont de nature complexe, donc pour les compléter, vous devez étudier l'intégralité du chapitre ou au moins plusieurs de ses sections. 5

7 Bien que le manuel ait une orientation pratique et ne constitue pas un cours théorique, le premier chapitre décrit brièvement, à un niveau élémentaire, les concepts de base de la théorie des bases de données et du modèle relationnel. Ceci est fait pour que les étudiants puissent commencer à maîtriser pratiquement le langage SQL sans délai, dès les premiers jours du semestre académique, avant même le moment où ces concepts sont approfondis dans le cours magistral. Dans les départements de technologie de l'information des universités russes, les bases de données sont traditionnellement étudiées en deuxième ou en troisième année. De plus, cette discipline est généralement dispensée sur un semestre. Cependant, le nombre d'heures d'études académiques peut varier. Si le programme prévoit 36 ​​heures pour des cours pratiques dans cette discipline, nous recommandons alors la répartition de temps suivante pour étudier le matériel du manuel. Chapitre 1. Introduction aux bases de données et à SQL Chapitre 2. Création d'un Workbench Chapitre 3. Opérations de base sur les tables Chapitre 4. Types de données PostgreSQL Chapitre 5. Notions de base du langage de définition de données Chapitre 6. Requêtes Chapitre 7. Modification des données Chapitre 8. Index Chapitre 9. Transactions Chapitre 10 : Améliorer la productivité 1 heure 1 heure 4 heures 4 heures 4 heures 8 heures 4 heures 2 heures 4 heures 4 heures Les chapitres 1 et 2 peuvent être complétés en un seul cours de deux heures car PostgreSQL doit déjà être installé dans la classe à l'avance. Le chapitre 3 fournit un bref aperçu des fonctionnalités de base du langage SQL et, une fois terminé, les étudiants devraient être capables de comprendre des manières simples d'utiliser toutes les commandes de base du langage. Ce chapitre n'est pas très difficile, mais il est volumineux, donc quatre heures sont prévues pour l'étudier. Le chapitre 4 couvre les types de données de base utilisés dans PostgreSQL. Il s'agit d'un long chapitre, mais une partie importante est constituée de devoirs et d'exercices. Les étudiants ne doivent apprendre que les concepts de base de l’utilisation des types de données en quatre heures. Et pour que les connaissances soient consolidées, il est recommandé de se référer au matériel de ce chapitre (y compris les exercices) lors de l'étude des chapitres restants du manuel, si nécessaire, pour clarifier certaines caractéristiques de l'utilisation de spécifiques les types. Nous recommandons de diviser le temps alloué à l'étude de ce chapitre comme suit : deux heures pour les quatre premiers paragraphes sur les types numériques et chaînes, les types date/heure et le type logique, encore deux heures sur les tableaux et le type json/jsonb. Pour exécuter des requêtes sur une base de données, vous devez avoir une bonne compréhension de sa structure et des relations entre les tables. Par conséquent, le chapitre 5, qui couvre les bases du langage de définition de données, est très important du point de vue d'une étude détaillée des tableaux de la base de données du transport aérien et de la préparation à la maîtrise du chapitre 6. Étant donné que le contenu du chapitre est basé sur le fait que la base de données est déjà déployée sur l'ordinateur de l'étudiant, saisissez Aucune commande n'est requise pour créer des tables. Cela vous permet de réduire le temps passé à étudier le chapitre. Le manuel adopte l'approche consistant à couvrir d'abord les commandes de définition de données, puis les commandes de manipulation de données. Par conséquent, le chapitre 5, Fondamentaux du langage de définition de données, précède le chapitre 6.

8 Chapitre 6 « Requêtes ». Cependant, l'approche choisie n'est pas mise en œuvre de manière trop rigide : le chapitre 3 de présentation couvre les commandes de base, y compris les requêtes simples. Et les requêtes sont déjà un langage de manipulation de données. Quatre heures sont allouées au chapitre 5. Au cours du premier cours de deux heures, vous devez étudier les deux premiers paragraphes, qui couvrent des questions telles que les contraintes d'intégrité et la création et la suppression de tables. La deuxième leçon de deux heures devrait être consacrée à l'étude des trois paragraphes restants. Ils parlent des façons de modifier les tables, ainsi que les vues et les schémas de bases de données. Le chapitre 6 est le chapitre central du manuel, donc huit heures sont allouées à son étude, soit plus que pour l'étude des autres chapitres. Il se compose de quatre paragraphes. La première concerne les différentes fonctionnalités supplémentaires de la commande SELECT. Cela inclut des éléments tels que les clauses LIMIT et OFFSET, l'opérateur LIKE et les expressions régulières dans les conditions de la clause WHERE, entre autres fonctionnalités. Cependant, le matériel de cette section n'est pas difficile, il suffit de passer une heure à l'étudier. Le deuxième paragraphe parle des façons de rejoindre des tables. Il s'agit d'un sujet plus complexe et nécessite deux heures d'étude. Le troisième paragraphe concerne l'agrégation et le regroupement. Il couvre également un sujet aussi important et intéressant que les fonctions des fenêtres. Cette section nécessite également une leçon de deux heures. La section la plus difficile de ce chapitre est la quatrième. Il s'agit de sous-requêtes. En particulier, il couvre un sujet aussi important et intéressant que les expressions de table communes CTE. Pour étudier le matériel de ce paragraphe, vous devez allouer trois heures. Le chapitre 7 contient toutes les commandes permettant de modifier les données : insertion de lignes, mise à jour de lignes et suppression de lignes. Puisque les chapitres précédents ont déjà utilisé ces commandes pour résoudre des problèmes simples, ce chapitre couvre des manières plus complexes de les utiliser. Il contient de nombreux exercices, ils représentent la moitié de son volume. Il est recommandé de passer deux heures à apprendre à insérer des lignes dans des tableaux, et deux heures supplémentaires à apprendre à mettre à jour et à supprimer des lignes. Le chapitre 8 concerne les index et est court, il peut donc être complété en une seule leçon de deux heures. Les index étant étroitement liés aux problèmes de performances, c'est-à-dire de vitesse d'exécution des requêtes, il serait conseillé, après avoir étudié le dernier chapitre, de revenir au chapitre 8 et de regarder les commandes et requêtes qui y sont présentées, connaissant déjà la commande EXPLAIN. . Le chapitre 9 est consacré aux transactions. Les mécanismes de leur exécution présentent de nombreuses subtilités, c'est pourquoi lors de l'étude de ce chapitre, il est nécessaire d'expérimenter et d'essayer d'expliquer les résultats obtenus. Le dernier chapitre 10 porte sur l’amélioration de la productivité. Ce chapitre peut paraître trop abstrait et complexe pour un cours SQL pour débutant, mais il est néanmoins très important. Les étudiants doivent apprendre à lire les plans d'exécution de requêtes et à comprendre le but de chaque opération représentée dans le plan. Et maîtriser l’art de l’optimisation des requêtes demandera beaucoup de temps et d’expérience, cela ne viendra pas tout de suite. Dans le cas où 54 heures sont allouées dans le cursus des cours pratiques de la discipline « Bases de données », vous pouvez modifier la répartition proposée des heures de formation. En particulier, le chapitre 4 peut consacrer plus de temps aux types de données 7

9 json/jsonb et tableaux. Le chapitre 6 examine de plus près les fonctions de fenêtre et les expressions de table courantes. Lors de l'étude du chapitre 9 sur les transactions, il serait utile de développer une application simple qui utilise les transactions et d'expérimenter l'application en exécutant plusieurs sessions en parallèle tout en faisant varier les niveaux d'isolation des transactions. Dans le cadre du chapitre 10, il est logique de revenir aux commandes et requêtes du chapitre 8 et d'examiner leurs plans d'exécution à l'aide de la commande EXPLAIN. En raison du temps supplémentaire, vous pouvez envisager toutes les tâches et exercices de complexité accrue (marqués d'un astérisque). Ainsi, la distribution temporelle pourrait être la suivante : Chapitre 1. Introduction aux bases de données et à SQL Chapitre 2. Création d'un environnement de travail Chapitre 3. Opérations de base sur les tables Chapitre 4. Types de données PostgreSQL Chapitre 5. Notions de base du langage de définition de données Chapitre 6. Requêtes Chapitre 7 Modification des données Chapitre 8. Index Chapitre 9. Transactions Chapitre 10. Amélioration de la productivité 1 heure 1 heure 4 heures 6 heures 6 heures 12 heures 6 heures 4 heures 8 heures 6 heures Le didacticiel utilise différents types de polices pour mettre en évidence des fragments de texte en fonction de la leurs destinations. Les commandes saisies par l'utilisateur à la fois dans l'environnement du système d'exploitation et dans l'environnement de l'utilitaire psql sont mises en évidence en caractères gras à espacement fixe. Par exemple : psql -d demo -U postgres ou SELECT avg(total_amount) FROM bookings ; Les résultats des commandes du système d'exploitation et des commandes SQL exécutées dans l'environnement de l'utilitaire psql sont imprimés en police monospace. Par exemple, en réponse à la commande EXPLAIN SELECT * FROM avions ; Les éléments suivants seront affichés à l'écran : QUERY PLAN Seq Scan sur un avion (coût= lignes=9 largeur=52) (1 ligne) Nous espérons que l'étude du matériel présenté dans le manuel vous aidera à améliorer votre niveau de compétence et à élargir vos horizons professionnels. . 8

10 1 Introduction aux bases de données et à SQL Ce chapitre est une introduction. Nous y parlerons des bases des bases de données, de ce qu'est le modèle relationnel et de la raison pour laquelle le langage SQL est nécessaire. Un sujet très important dans ce chapitre sera la description du domaine sur la base duquel une base de données de formation sera conçue, qui servira de plateforme d'apprentissage du langage SQL. Ce manuel est destiné principalement à la maîtrise pratique du langage SQL, et non à l'étude de la théorie des bases de données, donc, pour étudier la théorie, vous devez vous référer à des sources faisant autorité, dont une liste est donnée à la fin du manuel. 1.1 Que sont les bases de données et pourquoi sont-elles nécessaires Les technologies de bases de données n'ont pas toujours existé. Cependant, avant même leur mise en œuvre, les gens collectaient et traitaient également des données. Une façon de stocker les données était ce qu'on appelle les fichiers plats, qui avaient une structure très simple : les données étaient stockées sous la forme d'enregistrements divisés en champs de longueur fixe. Dans la vie réelle, des relations complexes apparaissent souvent entre des éléments de données qui doivent être transférés vers une base de données électronique. Lors de l'utilisation de fichiers plats, ces relations sont difficiles à organiser, et encore plus difficiles à maintenir lorsque des éléments de données individuels sont modifiés ou supprimés. L’un des principaux concepts de la théorie des bases de données est le modèle de données. On peut dire qu'il caractérise la manière dont les données sont organisées et les principales modalités d'accès. Premièrement, des modèles de données hiérarchiques et réseau ont été proposés. Cependant, au cours de l’évolution des théories et des idées, un modèle de données relationnel s’est développé, aujourd’hui dominant. Les bases de données de type relationnel prédominent donc actuellement. Leur particularité est le fait que les données sont perçues par l'utilisateur sous forme de tableaux. L'utilisateur dispose d'opérateurs pour récupérer des données dans des tables, ainsi que pour insérer de nouvelles données, mettre à jour et supprimer des données existantes. L'un des avantages d'une base de données relationnelle est sa capacité à maintenir des relations entre les éléments de données, évitant ainsi au programmeur de se livrer à ce travail routinier et très chronophage. À l'époque où les technologies de bases de données relationnelles n'étaient pas encore répandues, les programmeurs devaient implémenter manuellement des opérations dans des langages procéduraux, désormais appelés mises à jour en cascade de clés étrangères ou suppressions en cascade d'enregistrements de tables subordonnées (fichiers). Ici le mot « manuellement » signifie que pour réaliser ces opérations il fallait écrire du code constitué de commandes élémentaires pour accéder à chaque enregistrement en cours de mise à jour ou de suppression. Cette approche du travail avec les bases de données s'appelait la navigation : le programmeur indiquait au programme un algorithme spécifique pour rechercher des enregistrements. Prenons comme exemple une situation simple : dans une base de données construite à partir de fichiers, les informations sur les étudiants et leurs notes aux examens sont stockées, et les données personnelles des étudiants sont stockées dans un seul fichier, appelons-le « Étudiants », et les notes aux examens. dans un autre fichier, que nous appellerons "Évaluations". Si vous devez supprimer des informations sur un étudiant spécifique et ses copies d'examen 9

11 notes, vous devrez alors non seulement effectuer l'opération de suppression d'un enregistrement spécifique du fichier « Étudiants », mais en plus organiser un cycle de recherche et de suppression des enregistrements du fichier « Notes » dont le champ clé a la même valeur que le champ dans l'enregistrement supprimé du fichier « Étudiants ». Lorsqu'il travaille avec des bases de données relationnelles, le programmeur s'affranchit de la programmation au niveau « atomique », car les langages modernes pour « communiquer » avec ces bases de données sont déclaratifs. Cela signifie que pour obtenir un résultat, il suffit d'indiquer ce qui doit être obtenu, mais il n'est pas nécessaire de prescrire la méthode pour obtenir le résultat, c'est-à-dire comment l'obtenir. Un système de base de données est un système informatisé conçu pour stocker, traiter et diffuser des informations à la demande des utilisateurs. Un tel système comprend des logiciels et du matériel, les données elles-mêmes et les utilisateurs. Les systèmes de bases de données modernes sont généralement multi-utilisateurs. Dans de tels systèmes, plusieurs utilisateurs peuvent accéder simultanément à la base de données. Le logiciel principal est un système de gestion de base de données. En anglais, cela s'appelle un système de gestion de base de données (DBMS). En plus du SGBD, un système de base de données peut inclure des utilitaires, des outils de développement d'applications (programmes), des outils de conception de bases de données, des générateurs de rapports, etc. Les utilisateurs des systèmes de bases de données sont divisés en un certain nombre de catégories. La première catégorie est celle des programmeurs d’applications. La deuxième catégorie est constituée des utilisateurs finaux, pour qui tout le travail est effectué. Ils peuvent accéder à la base de données à l'aide de programmes d'application ou d'applications universelles incluses dans le logiciel du SGBD lui-même. La plupart des SGBD disposent de ce qu'on appelle un processeur de langage de requête, qui permet à l'utilisateur de saisir des commandes de langage de haut niveau (telles que SQL). La troisième catégorie d'utilisateurs sont les administrateurs de bases de données. Leurs responsabilités incluent : créer une base de données, choisir les modes d'accès optimaux, délimiter les pouvoirs des différents utilisateurs pour accéder à certaines informations de la base de données, effectuer des sauvegardes de la base de données, etc. Le système de base de données peut être divisé en deux composants principaux : un serveur et un ensemble de clients (ou d'interfaces externes). Le serveur est le SGBD. Les clients sont diverses applications écrites par des programmeurs d'applications ou des applications intégrées fournies avec le SGBD. Un serveur peut servir plusieurs clients. Les SGBD modernes incluent un dictionnaire de données. Il s'agit de la partie de la base de données qui décrit les données elles-mêmes qui y sont stockées. Le dictionnaire de données aide le SGBD à remplir ses fonctions. 1.2 Concepts de base du modèle relationnel Chaque domaine technologique possède sa propre terminologie. Il existe des termes de base sur lesquels reposent toutes les discussions ultérieures. De tels termes sont utilisés

12 sont également présents dans le secteur des bases de données. Nous allons maintenant en parler brièvement. Avant la naissance de la théorie relationnelle, les bases de données étaient traditionnellement considérées comme un ensemble de fichiers constitués d’enregistrements, et ces enregistrements étaient à leur tour subdivisés en champs individuels. Le champ était une unité élémentaire de données. Dans les bases de données relationnelles, l'utilisateur perçoit les données sous forme de tableaux. Par conséquent, le terme « fichier » correspond au terme « table », au lieu du terme « enregistrement », le terme « ligne » est utilisé, et au lieu du terme « champ », le terme « colonne » (ou « colonne ») est utilisé. Ainsi, les tableaux sont constitués de lignes et de colonnes, à l'intersection desquelles doivent se trouver des valeurs « atomiques » qui ne peuvent être décomposées en éléments plus petits sans perdre leur sens. Dans la théorie formelle des bases de données relationnelles, ces tables sont appelées relations, c'est pourquoi les bases de données sont appelées relationnelles. Le ratio est un terme mathématique. Lors de la détermination des propriétés de telles relations, la théorie des ensembles est utilisée. Selon cette théorie, les lignes du tableau seront appelées tuples et les colonnes seront appelées attributs. Une relation a une tête composée d’attributs et un corps constitué de tuples. Le nombre d’attributs est appelé degré de relation et le nombre de tuples est appelé nombre cardinal. Outre la théorie des ensembles, l'un des fondements de la théorie relationnelle est une branche de la logique mathématique telle que le calcul des prédicats. Ainsi, dans la théorie et la pratique des bases de données, il existe trois groupes de termes. Parfois, des termes appartenant à différents groupes sont utilisés comme synonymes, par exemple enregistrement et chaîne. Comme nous l'avons dit plus haut, dans les bases de données relationnelles, l'utilisateur perçoit les données sous forme de tableaux. Considérons un système simple avec seulement deux tables. Le premier « Étudiants » : carnet de notes Nom complet Série de documents Numéro de document Ivanov Ivan Petrovich Klimov Andrey Ivanovich Novikov Nikolay Yuryevich Et le deuxième « Réussite » : Livre de notes Sujet Année académique Semestre Évaluation Physique 2016 / Mathématiques 2016 / Physique 2016 / Physique 2016 / Quand en travaillant avec des bases de données, vous devez souvent respecter diverses restrictions qui peuvent être déterminées par les spécificités d'un domaine particulier. En simplifiant la situation réelle, nous acceptons les restrictions suivantes : 11

13, le numéro du carnet de notes est composé de cinq chiffres et ne peut pas être négatif (différentes universités utilisent différents schémas pour attribuer des numéros de carnet de notes ; ces schémas peuvent être beaucoup plus complexes que celui que nous avons adopté et peuvent prendre en compte, par exemple, l'année l'étudiant est entré à l'université); la série du document d'identité est un numéro à quatre chiffres et le numéro du document d'identité est un numéro à six chiffres ; le numéro du semestre ne peut prendre que deux valeurs : 1 (semestre d'automne) et 2 (semestre de printemps) ; la note ne peut prendre que trois valeurs : 3 (satisfaisant), 4 (bon) et 5 (excellent) : les autres notes ne sont pas acceptées pour inclusion dans les cahiers de notes. Pour identifier les lignes dans les tableaux et relier les tableaux entre eux, des clés sont utilisées. Une clé candidate est une combinaison d'attributs de table qui identifie de manière unique les lignes qu'elle contient. Une clé peut également consister en un seul attribut de table. Par exemple, dans le tableau « Étudiants », un tel identifiant pourrait être l'attribut « Numéro de carnet de notes ». Deux de ses attributs pris ensemble peuvent également servir de clé potentielle pour ce tableau : « Série de documents d'identité » et « Numéro de document d'identité ». Aucun d’entre eux ne peut à lui seul être utilisé comme identifiant unique. Dans ce cas, la clé sera composite. Il est important que la clé potentielle ne soit pas redondante, c'est-à-dire qu'aucun sous-ensemble des attributs qu'elle contient ne doit avoir la propriété d'unicité. Une clé candidate qui inclut les deux attributs mentionnés n'est pas redondante. Des clés sont nécessaires pour l’adressage au niveau des lignes (enregistrements). S'il y a plus d'une clé candidate dans une table, l'une d'entre elles est sélectionnée comme clé dite primaire, et les autres seront des clés alternatives. Regardons les tableaux « Étudiants » et « Réalisations ». Supposons que dans le tableau « Étudiants » il n'y ait pas de ligne avec le numéro de carnet de notes 55900, cela n'a aucun sens d'inclure une ligne avec ce numéro de carnet de notes dans le tableau « Progrès ». Ainsi, les valeurs de la colonne « Numéro du carnet de notes » du tableau « Réalisations » doivent être cohérentes avec les valeurs de la même colonne du tableau « Étudiants ». L'attribut Numéro du carnet de notes dans le tableau Progrès académique est un exemple de ce qu'on appelle une clé étrangère. La table contenant la clé étrangère est appelée table de référencement. La table contenant la clé candidate correspondante est appelée table référencée. Dans de tels cas, la clé étrangère fait référence à une clé candidate dans la table de référence. Une clé étrangère peut être composite, c'est-à-dire qu'elle peut inclure plusieurs attributs. Une clé étrangère ne doit pas nécessairement être unique. Le problème consistant à garantir qu'une base de données ne contient pas de valeurs de clé étrangère invalides est connu sous le nom de problème d'intégrité référentielle. La contrainte selon laquelle les valeurs des clés étrangères doivent correspondre aux valeurs des clés candidates est appelée contrainte d'intégrité référentielle. Le SGBD est responsable de l'application des contraintes d'intégrité référentielle, et le développeur n'a qu'à spécifier les attributs qui servent d'attributs externes.

14 clés. La conception d'une base de données nécessite souvent que lorsqu'une ligne est supprimée d'une table référencée, les lignes correspondantes de la table référencée doivent également être supprimées, et que lorsque la valeur d'une colonne référencée par une clé étrangère change, les valeurs de clé étrangère dans la La table référencée doit être modifiée. Cette approche est appelée suppression en cascade (mise à jour). Parfois, d’autres approches sont utilisées. Par exemple, au lieu de supprimer des lignes de la table de référencement, ces lignes sont simplement remplacées par les valeurs des attributs inclus dans la clé étrangère par des valeurs dites NULL. Ce sont des valeurs spéciales signifiant « rien » ou aucune valeur, et ne sont pas identiques à « null » ou « la chaîne vide ». La valeur NULL est utilisée dans les bases de données et comme valeur par défaut lorsque l'utilisateur n'a saisi aucune valeur spécifique. Les clés primaires ne peuvent pas contenir de valeurs NULL. La transaction est l'un des concepts les plus importants de la théorie des bases de données. Il s'agit d'un ensemble d'opérations sur une base de données, considérée comme une unité de travail unique et indivisible, exécutées entièrement ou pas du tout si une défaillance survient au cours de la transaction. Ainsi, les transactions sont un moyen d’assurer la cohérence des données. Dans notre base de données, une transaction peut être, par exemple, deux opérations : supprimer une ligne de la table « Étudiants » et supprimer les lignes liées aux clés étrangères de la table « Réussite ». 1.3 Qu'est-ce que le langage SQL Le langage SQL est un langage non procédural qui constitue un moyen standard de travailler avec des données dans tous les SGBD relationnels. Les opérateurs (commandes) écrits dans ce langage indiquent uniquement au SGBD quel résultat doit être obtenu, mais ne décrivent pas la procédure pour obtenir ce résultat. Le SGBD lui-même détermine la méthode d'exécution de la commande utilisateur. Le langage SQL distingue traditionnellement un groupe d'opérateurs de définition de données (Data Definition Language DDL), un groupe d'opérateurs de manipulation de données (Data Manipulation Language DML) et un groupe d'opérateurs qui gèrent les privilèges d'accès aux objets de la base de données (Data Control Language DCL). Les instructions du langage de définition de données (DDL) incluent des commandes permettant de créer, modifier et supprimer des tables, des vues et d'autres objets de base de données. Ces commandes sont décrites en détail dans les chapitres 5 et 8. Les instructions DML (Data Manipulation Language) incluent des commandes permettant de récupérer des lignes dans des tables, d'insérer des lignes dans des tables, de mettre à jour des lignes et de supprimer des lignes. Ces commandes sont traitées en détail dans les chapitres 6 et 7. Les instructions DCL ne sont pas abordées dans le manuel, puisque PostgreSQL vous permet de vous en passer au stade initial de l'apprentissage du langage SQL. 13

15 1.4 Description du domaine et base de données de formation Pour montrer toutes les principales capacités du langage SQL, nous avons besoin d'une base de données. Cette base de données ne doit pas être trop complexe pour ne pas nécessiter trop de temps d'étude. Mais, en même temps, il doit être suffisamment varié pour que les demandes paraissent plausibles, presque les mêmes que dans le travail réel. Nous choisirons le transport aérien de passagers comme domaine d'étude. Sa description originale et la description de la base de données du transport aérien peuvent être trouvées sur ru/docs/postgrespro/current/demodb-bookings.html. Nous espérons que ce domaine est familier à de nombreux lecteurs de notre tutoriel. Bien entendu, à des fins pédagogiques, la situation réelle est volontairement simplifiée, mais tous les éléments fondamentaux sont préservés. Ainsi, une certaine compagnie aérienne russe exploite le transport aérien de passagers. Elle possède sa propre flotte d'avions de différents modèles. Chaque modèle d'avion possède un code spécifique attribué par l'Association du transport aérien international (IATA). Dans ce cas, nous supposerons que les avions du même modèle ont la même disposition de cabine, c'est-à-dire l'ordre de placement des sièges et la numérotation des sièges dans les cabines de classe affaires et de classe économique. Par exemple, s'il s'agit d'un modèle Sukhoi SuperJet-100, le siège 2A est en classe affaires et le siège 20D est en classe économique. La classe affaires et la classe économique sont des variétés de la classe dite service. Notre compagnie aérienne opère des vols entre les aéroports russes. Chaque aéroport se voit attribuer un code unique à trois lettres, utilisant uniquement des lettres majuscules de l'alphabet latin. Ces codes ne sont pas attribués par la compagnie aérienne elle-même, mais par des organisations spéciales qui gèrent le transport aérien de passagers. Souvent, le nom de l'aéroport ne coïncide pas avec le nom de la ville à laquelle appartient l'aéroport. Par exemple, dans la ville de Novossibirsk, l'aéroport s'appelle Tolmachevo, dans la ville d'Ekaterinbourg Koltsovo et à Saint-Pétersbourg Pulkovo. De plus, certaines villes disposent de plus d’un aéroport. A titre d'exemple, je me souviens immédiatement de Moscou avec ses aéroports de Domodedovo, Sheremetyevo et Vnukovo. Ajoutons encore un détail important : chaque aéroport est caractérisé par des coordonnées géographiques, une longitude et une latitude, ainsi qu'un fuseau horaire. Des itinéraires aériens entre les villes se forment. Bien entendu, chacun de ces itinéraires nécessite d'indiquer non seulement la ville, mais également l'aéroport, car, comme nous l'avons déjà dit, il peut y avoir plus d'un aéroport dans une ville. Pour simplifier la réalité, nous déciderons que les itinéraires n'auront pas d'escales, c'est-à-dire c'est-à-dire qu'ils n'auront qu'un aéroport de départ et un aéroport de destination. Chaque itinéraire comporte un numéro à six chiffres, comprenant des chiffres et des lettres de l'alphabet latin. Sur la base de la liste des itinéraires, un ou plusieurs horaires de vol sont générés. L'horaire indique l'heure de départ prévue et l'heure d'arrivée prévue, ainsi que le type d'avion effectuant le vol. Lorsque le vol est effectivement effectué, il est nécessaire de prendre en compte des informations supplémentaires, à savoir : l'heure réelle de départ et l'heure réelle d'arrivée, ainsi que le statut du vol. Le statut du vol peut prendre plusieurs valeurs : 14

16 Programmé (la possibilité de réservation ouvre un mois à l'avance) ; À l'heure (les inscriptions ouvrent un jour avant) ; Retardé (vol retardé); Défunt; Arrivé (arrivé); Annulé. Passons maintenant aux passagers. Le vol commence par la réservation d'un billet. Actuellement, il est courant d’émettre des billets électroniques. Chacun de ces tickets possède un numéro unique composé de 13 chiffres. Plusieurs billets peuvent être émis au cours d'une même procédure de réservation, mais chacune de ces procédures possède un numéro de réservation unique à six chiffres (chiffre), composé de lettres majuscules de l'alphabet latin et de chiffres. De plus, pour chaque procédure de réservation, la date de réservation est enregistrée et le coût total des billets émis est calculé. Chaque billet, outre son numéro à treize chiffres, contient l’identifiant du passager, ainsi que ses nom et prénom (en transcription latine) et ses coordonnées. Le numéro du document d'identification du passager est utilisé comme identifiant du passager. Bien entendu, un passager peut modifier son document, et parfois même son nom et son prénom, au cours du temps écoulé entre la réservation de billets à des jours différents, il est donc impossible de dire avec certitude que des billets spécifiques ont été émis pour le même passager. Plusieurs vols peuvent être inclus dans chaque billet électronique. Les experts appellent ces segments d’enregistrements de vol. Un exemple de présence de plusieurs segments est le suivant : Krasnoïarsk Moscou, Moscou Anapa, Anapa Moscou, Moscou Krasnoïarsk. Dans le même temps, il est possible d'émettre plusieurs billets pour différents passagers au sein d'une même réservation. Pour chaque vol, le numéro de vol, les aéroports de départ et de destination, les heures de départ et d'arrivée, ainsi que le coût du vol sont indiqués. De plus, la classe de service est indiquée : économique, business, etc. Lorsqu'un passager arrive à l'aéroport de départ et s'enregistre pour un billet, une soi-disant carte d'embarquement est délivrée. Ce coupon est associé à un billet d'avion : le coupon indique le même numéro que celui du billet électronique de ce passager. De plus, le billet indique le numéro de vol et le numéro de siège dans l'avion. Le numéro de la carte d'embarquement est également indiqué, un numéro séquentiel attribué lors du processus d'enregistrement des billets pour un vol donné. Rappelons que chaque siège de la cabine de l'avion correspond à une classe de service spécifique. Ces informations sont prises en compte lors de l'enregistrement des billets et de la délivrance des cartes d'embarquement. Si, par exemple, un passager a acheté un billet en classe économique, sa carte d'embarquement indiquera le numéro de siège en classe économique, mais pas en classe affaires. Suite à la description donnée du domaine, vous pouvez concevoir une base de données modèle destinée à l'apprentissage du langage SQL. Notre tutoriel étant principalement destiné à l'apprentissage du langage SQL, et non à la maîtrise de l'art de la conception de bases de données, nous ne montrerons que le schéma 15.

17 Réservations Réservations Aéroports Aéroports # book_ref * book_date * montant_total # code_aéroport * nom_aéroport * ville * longitude * latitude * fuseau horaire Billets Billets # ticket_no * book_ref * passager_id * passager_name contact_data Ticket_flights Vols # ticket_no # Flight_id * fare_conditions * montant Vols Vols # Flight_id * Flight_no * départ_programmé * arrivée_programmée * aéroport_départ * aéroport_arrivée * statut * code_avion actual_departure arrivée_actuelle Avions # avion_code * modèle * gamme Boarding_passes Cartes d'embarquement Sièges Sièges # ticket_no # Flight_id * boarding_no * Seat_no # Aircraft_code # Seat_no * fare_conditions schéma de données montrant les entités mises en évidence dans le domaine , ainsi que leurs connexions et attributs. Nous montrerons les types de données spécifiques, les clés primaires et étrangères, ainsi que les restrictions imposées sur les attributs et les tables dans les chapitres suivants lorsque nous examinerons les commandes SQL conçues pour créer physiquement des tables dans la base de données. Le schéma ci-dessus est disponible sur le site Web de Postgres Professional aux adresses indiquées au début de cette section. Questions et tâches du test 1. Quels groupes d'opérateurs sont distingués dans le cadre du langage SQL ? 2. Donner une définition informelle des concepts de base du modèle de données relationnel : relation, tuple, attribut. 3. Pourquoi les clés étrangères sont-elles nécessaires dans les tables relationnelles ? 4. Qu'est-ce qu'une clé candidat ? 5.* Fournissez un exemple de clé candidate redondante pour l'une des tables de la base de données Airline et expliquez pourquoi elle serait redondante. 16

18 6.* La mise en œuvre actuelle de la base de données du transport aérien suppose que les avions du même modèle ne peuvent avoir qu'une seule configuration de cabine. Imaginons que la direction décide qu'il faut prendre en compte la possibilité d'avoir des agencements différents pour chaque modèle. Quels tableaux devront être modifiés dans ce cas et comment ? Vais-je devoir créer des tables supplémentaires ? 17

19 2 Créer un environnement de travail Avant de commencer à apprendre directement le langage SQL, vous devez accéder au serveur PostgreSQL. Cela peut être fait, par exemple, dans un laboratoire informatique ou en accédant à un serveur distant via un terminal. Cependant, vous pouvez créer un environnement de travail pour vous-même et sur votre ordinateur local en installant la version complète du SGBD PostgreSQL, c'est-à-dire les programmes serveur et client. Dans ce cas, vous aurez beaucoup plus de pouvoir pour configurer et utiliser PostgreSQL. Dans la dernière partie du chapitre, nous vous montrerons comment déployer une base de données de formation sur le fret aérien remplie de données crédibles spécialement préparées. 2.1 Installer le SGBD Puisque ce tutoriel est destiné à l'apprentissage du langage SQL, et non aux bases de l'administration du SGBD PostgreSQL, nous nous limiterons à de brèves instructions sur l'endroit où trouver les instructions d'installation. Vous devez commencer par choisir la distribution SGBD que vous souhaitez installer. Vous pouvez choisir l'option PostgreSQL d'origine ou celle proposée par Postgres Professional. Il s'appelle Postgres Pro et contient non seulement toutes les fonctions et modules inclus dans la distribution standard, mais également des développements supplémentaires réalisés par Postgres Professional. Ces distributions conviennent également à l'apprentissage des bases du langage SQL. Cependant, la documentation en russe n'est incluse qu'avec PostgreSQL. Après avoir choisi une distribution de SGBD spécifique, vous devez sélectionner un système d'exploitation. PostgreSQL prend en charge de nombreux systèmes, notamment diverses versions de Linux ainsi que Windows. Il est recommandé d'installer la dernière version stable du SGBD. Si vous décidez d'utiliser la distribution PostgreSQL d'origine, vous pouvez trouver des instructions pour l'installer sur différents systèmes d'exploitation à l'adresse suivante. Si vous avez choisi la distribution PostgreSQL, vous devriez aller ici : la plus récente. Après avoir installé PostgreSQL et Postgres Pro dans un environnement Windows, vous devrez prendre des mesures supplémentaires pour vous assurer que l'utilisation de l'alphabet russe dans le terminal interactif psql ne pose pas de problèmes. L'utilitaire psql est abordé dans la section suivante. Pendant le processus d'installation, un compte utilisateur SGBD nommé postgres sera créé. Vous n'avez pas besoin de créer des comptes supplémentaires pour étudier ce manuel. 18

20 Après avoir installé l'une ou l'autre distribution PostgreSQL, vous devez apprendre à démarrer un serveur de base de données, car sinon il est impossible de travailler avec les données. La procédure à suivre est décrite en détail dans la documentation au paragraphe 18.3 « Démarrage du serveur de base de données ». Vous pouvez trouver cette section à l'adresse current/server-start.html. Lors de l'installation d'un SGBD dans un environnement Windows, un service est créé pour démarrer automatiquement le serveur PostgreSQL au démarrage du système d'exploitation. Après avoir fini de travailler avec le serveur, vous devez l'arrêter (l'éteindre) correctement. La marche à suivre pour faire face à une telle situation est décrite dans la documentation à la section 18.5 « Arrêt du serveur ». Vous pouvez trouver cette section sur postgresql/9.6/server-shutdown.html. 2.2 Programme psql terminal interactif PostgreSQL Pour accéder au serveur de base de données, le package PostgreSQL inclut un terminal interactif psql. Pour l'exécuter, vous devez entrer la commande psql. Lors de l'exécution de l'utilitaire psql dans un environnement Windows, les lettres de l'alphabet russe peuvent s'afficher de manière incorrecte. Pour éliminer cela, vous devrez changer la police en Lucida Console dans les propriétés de la fenêtre dans laquelle psql est exécuté et, à l'aide de la commande chcp, changer la page de codes actuelle en CP1251 : chcp 1251 Dans l'environnement de l'utilitaire psql, vous pouvez entrez non seulement les commandes du langage SQL, mais également diverses commandes de service, prises en charge par l'utilitaire lui-même. Pour obtenir une aide rapide sur toutes les commandes de service, saisissez \? Beaucoup de ces commandes commencent par les caractères \d. Par exemple, pour afficher une liste de toutes les tables et vues créées dans la base de données à laquelle vous êtes actuellement connecté, entrez la commande \dt. Si vous êtes intéressé par la définition (c'est-à-dire la structure) d'une table de base de données spécifique, par exemple exemple, étudiants, vous devez entrer la commande \d étudiants Pour obtenir une liste de toutes les commandes SQL, vous devez exécuter la commande \h Pour afficher une description d'une commande SQL spécifique, par exemple, CREATE TABLE, vous devez faire ceci : \h CRÉER LA TABLE 19

21 Cet utilitaire vous permet de réduire la quantité de saisie manuelle en complétant la commande saisie à l'aide de psql. Par exemple, lorsque vous saisissez une commande SQL, vous pouvez utiliser la touche Tab pour compléter le mot-clé de commande saisi ou le nom de la table de base de données. Par exemple, lors de la saisie de la commande CREATE TABLE..., vous pouvez saisir les caractères "cr" et appuyer sur la touche Tab. psql complétera ce mot pour "créer". Vous pouvez faire la même chose avec le mot TABLE. Pour le saisir, saisissez simplement les lettres « ta » et appuyez sur la touche Tab. Si vous entrez trop peu de lettres pour que psql identifie le mot-clé de manière unique, l'achèvement ne se produira pas. Mais dans ce cas, vous pouvez appuyer deux fois sur la touche Tab et obtenir une liste de tous les mots-clés commençant par la combinaison de lettres que vous avez saisie. 2.3 Déploiement de la base de données de formation Après avoir terminé l'installation du serveur de base de données, nous pouvons passer directement à la question de savoir comment déployer la base de données de formation Air Freight préparée par Postgres Professional sur votre cluster PostgreSQL. Le site Internet de l'entreprise comporte une section dédiée à cette base de données, accessible en suivant le lien. Elle est proposée en trois versions, ne différant que par la quantité de données : la version la plus compacte contient les données pour un mois, la version de taille moyenne couvre une période de trois mois et la version la plus complète comprend des données pour une année complète. Toutes les données ont été générées à l’aide d’algorithmes spéciaux pour garantir leur « plausibilité ». Nous vous recommandons de commencer avec la version compacte de la base de données Air Transportation, et après avoir acquis une certaine expérience dans l'écriture de requêtes SQL, vous installerez la version complète et avec elle vous pourrez mieux « ressentir » les différentes subtilités du travail avec de grands des volumes de données, par exemple, évaluent l’impact des index sur la vitesse d’accès aux données. La première étape du déploiement de votre base de données consiste à télécharger sa copie de sauvegarde compressée à partir du lien zip. Ensuite, vous devez extraire le fichier de l'archive : décompressez demo_small.zip Le fichier extrait s'appelle demo_small.sql. Nous allons maintenant créer une base de données nommée demo dans votre cluster PostgreSQL. La version la plus courte de la commande sera la suivante : psql -f demo_small.sql -U postgres Si vous souhaitez rediriger la sortie des messages générés par le SGBD pendant le fonctionnement de l'écran vers des fichiers, vous pouvez faire ceci : psql -f demo_small .sql -U postgres > demo.log 2>demo.err Vous pouvez séparer la sortie standard et la sortie d'erreur standard. Les messages réguliers seront redirigés vers le fichier demo.log et les messages d'erreur vers le fichier demo.err. Notez qu’il ne doit y avoir aucun espace entre le chiffre 2, qui indique le handle du périphérique de sortie d’erreur standard, et le signe « > », qui indique la redirection de sortie. 20

22 S'il est plus pratique pour vous de rassembler tous les messages dans un fichier commun, alors vous devez faire ceci : psql -f demo_small.sql -U postgres > demo.log 2>&1 Veuillez noter que l'expression entière 2>&1 à la fin de la commande est écrite sans espaces. Il indique au système d'exploitation que les messages d'erreur doivent être envoyés au même endroit où les messages normaux sont générés. Si notre fichier SQL était très volumineux, nous pourrions alors exécuter la commande en arrière-plan en ajoutant à la ligne de commande un "&" et regarder la progression du processus en temps réel à l'aide de la commande tail. psql -f demo_small.sql -U postgres > demo.log 2>&1 & tail -f demo.log Sélectionnez l'une des options de commande suggérées pour déployer la base de données et exécuter la commande. Tout est prêt ! Vous pouvez vous connecter à la nouvelle base de données : psql -d demo -U postgres Questions et tâches du test 1. Suivez la procédure d'installation du SGBD PostgreSQL dans l'environnement du système d'exploitation de votre choix. 2. Familiarisez-vous avec l'utilitaire psql à l'aide de l'aide intégrée, ainsi qu'en utilisant l'aide appelée par la commande psql --help 3. En plus de l'utilitaire psql, il existe d'autres programmes universels pour travailler avec le serveur de base de données PostgreSQL. , par exemple, pgadmin. Il s'agit d'un puissant utilitaire GUI. Installez vous-même le programme pgadmin et apprenez les techniques de base pour l'utiliser. 4. Déployez l'exemple de base de données. Essayez de vous y connecter à l'aide de l'utilitaire psql. Pour quitter l'utilitaire, utilisez la commande \q. 21

23 3 Opérations de base avec les tables Le langage SQL est très diversifié, il comprend un certain nombre de commandes, qui à leur tour comportent parfois de nombreux paramètres et mots-clés. Mais nous commencerons par un bref aperçu des principales fonctionnalités du langage SQL. Dans ce chapitre, vous apprendrez comment saisir des données dans une base de données, apprendrez les méthodes de base pour récupérer des informations de la base de données, c'est-à-dire l'échantillonnage, et apprendrez également comment apporter des modifications aux informations stockées dans la base de données et supprimer les données qui sont n'est plus nécessaire. Il existe une bonne tradition dans la pratique de l’apprentissage des langues étrangères. Dès la première leçon, l'étudiant apprend quelques structures grammaticales de base et des mots qui lui permettent de prononcer plusieurs phrases parmi les plus simples, mais néanmoins utiles dans la pratique. Nous suivrons cette tradition. Dans cette section de notre tutoriel, vous vous familiariserez avec les commandes SQL de base qui vous permettront d'effectuer des opérations de base. Vous apprendrez des commandes plus complexes (et intéressantes) dans les chapitres suivants. Disons quelques mots sur notre approche du travail. En principe, il existe deux manières possibles d’organiser le travail d’un étudiant. La première méthode est la suivante : l'étudiant utilise une base de données qui contient déjà tous les tableaux et autres objets de base de données nécessaires préparés à l'avance par l'auteur du manuel ou un autre spécialiste qualifié. Dans le même temps, un certain ensemble de données nécessaires a également déjà été saisi dans les tables, vous pouvez donc immédiatement procéder à l'exécution de requêtes sur ces tables. La méthode décrite semble très attractive car elle nécessite moins d'efforts au stade initial de la maîtrise du langage SQL. Cependant, à notre avis, une autre méthode est plus correcte. C'est probablement plus laborieux, mais lorsque vous l'utilisez, vous aurez, comme on dit, une meilleure idée du processus de création de tableaux et de saisie d'enregistrements dans ces tableaux. Et en exécutant diverses requêtes de base de données, il vous sera plus facile d'évaluer l'exactitude du résultat de la requête, puisque vous avez saisi toutes les données vous-même et pouvez donc raisonnablement deviner quels résultats vous vous attendez à voir à l'écran. Bien entendu, la première méthode peut être très utile lors de l'apprentissage de fonctionnalités plus complexes et avancées du langage SQL, difficiles à comprendre sans utiliser de grandes quantités de données, et il est irrationnel de saisir manuellement de grandes quantités de données dans la base de données. Il serait beaucoup plus rationnel de les créer automatiquement à l'aide d'un logiciel. Dans le chapitre 1, nous avons décrit le sujet, nous pouvons donc maintenant commencer à créer directement des tables dans la base de données. Pour effectuer toutes les commandes et opérations ultérieures, nous utiliserons l'utilitaire psql, qui est inclus dans la livraison standard du SGBD PostgreSQL. La base de données de démonstration devrait déjà être déployée sur votre ordinateur. Le processus de création d'une table est décrit au chapitre 2. Exécutez maintenant l'utilitaire psql et connectez-vous à cette base de données avec le compte utilisateur postgres : psql -d demo --U postgres Pour créer des tables en SQL, utilisez la commande CREATE TABLE. Sa syntaxe complète est présentée dans la documentation PostgreSQL, mais la syntaxe simplifiée est : 22


Société professionnelle Postgres E. P. Morgunov PostgreSQL. Bases du langage SQL Manuel Saint-Pétersbourg "BHV-Petersburg" 2018 UDC 004.655 BBK 32.973.26-018.2 M79 Morgunov, E. P. M79 PostgreSQL. Les bases

Langage SQL Cours 6 Index E. P. Morgunov Université d'État des sciences et technologies de Sibérie du nom de l'académicien M. F. Reshetnev Institut d'informatique et de télécommunications de Krasnoïarsk [email protégé]

Bratchikov I.L. 41. Bases de la conception de bases de données. Méthodes de construction d'un SGBD. SQL, exemples d'implémentation. Fondamentaux des bases de données modernes. 1. Définitions de base. Terminologie. Dans la littérature, on trouve

Thème 10. Fondements de la technologie des bases de données La technologie des bases de données est l'une des principales réalisations de l'informatique, utilisée pour créer des systèmes d'information informatiques et des applications qui mettent en œuvre des informations.

CONCEPTS DE BASE DES BASES DE DONNÉES 1. Sélectionner la procédure correcte lors de la conception d'une base de données a) Résoudre le problème du transfert de données b) Analyse du domaine, en tenant compte des exigences des utilisateurs finaux c)

Introduction Ce livre est destiné aux développeurs qui utilisent Oracle comme système de gestion de base de données (SGBD). Par conséquent, ce livre ne consacre pas beaucoup d’espace à l’examen des questions

Option 1 Choisissez la bonne réponse. Il n’y a qu’une seule bonne réponse possible. 1. Un système d'information est a) Tout système de traitement de l'information b) Un système de traitement de l'information textuelle

Langage SQL Cours 3 Bases du langage de définition de données E. P. Morgunov Université d'État des sciences et technologies de Sibérie du nom de l'académicien M. F. Reshetnev Institut d'informatique et de télécommunications de Krasnoïarsk

Langage SQL Cours 5 Modification des données E. P. Morgunov Université d'État des sciences et technologies de Sibérie du nom de l'académicien M. F. Reshetnev Institut d'informatique et de télécommunications de Krasnoïarsk [email protégé]

➀ Systèmes d'information et banques de données. La condition la plus importante pour assurer le fonctionnement efficace de toute organisation est la présence d'un système d'information développé. Un système d'information est un système

Chapitre 1. Démarrage Fonctionnement de la base de données Microsoft Access Conception de la structure des données Étapes de travail avec la base de données Commençons Interface utilisateur Access 2007 Configuration des éléments

Chapitre 3. Installation et lancement de la version multi-utilisateurs Exigences et conditions...1 Procédure d'installation de SBIS++ sur le réseau...2 Installation et configuration du serveur et du client Pervasive.SQL...3 Installation du programme...4 Préparation

BANQUE DE TÂCHES DE TESTS Discipline académique Direction Niveau de formation Département B1.B.12 Gestion des données 03/09/02 Systèmes et technologies de l'information licence Méthodes et moyens de mesure et d'automatisation

Bases de données Le développement de la technologie informatique s'est réalisé dans deux directions principales : l'utilisation de la technologie informatique pour effectuer des calculs numériques ; utilisation de la technologie informatique

Université technique d'État de Moscou du nom de N. E. Bauman branche Kaluga Yu. E. Gagarin, S. V. Ponomarev APPLICATION DU LANGAGE SQL DANS MS ACCESS Manuel pédagogique et méthodologique UDC 681.3.06 BBK 32.973

1. Informations et données 2. Concepts de base des systèmes avec bases de données Les systèmes informatiques d'information avec bases de données sont des systèmes d'information, mathématiques, logiciels, linguistiques, organisationnels

PDM STEP SUITE version 5.0 Instructions d'installation pour PDM STEP Suite Instructions pour le programmeur système. Partie 1 Centre de recherche JSC "Logistique appliquée" 2019 PDM STEP Suite v.5.0. Instructions pour le programmeur système

1 sur 6 Cours 1. Architecture du système de base de données. Fonctions d'administrateur système de base de données dans un système d'information d'entreprise. Objets de base de données. 1.1. Architecture du système de base de données ANSI/SPARC...1

TABLE DES MATIÈRES INTRODUCTION... 3 1 RECHERCHE DU DOMAINE ET ÉNONCÉ DU PROBLÈME... 4 2 CONSTRUCTION D'UN MODÈLE INFOLOGIQUE... 5 3 CONCEPTION D'UNE BASE DE DONNÉES DATALOGIQUES... 6 3.1 Sélection d'un système de contrôle

Dans les conditions modernes, lors de l'automatisation des entreprises, il faut faire face à des exigences différentes et souvent diamétralement opposées pour comptabiliser les mêmes sections de comptabilité. D'après les documents

Discipline académique « Bases de données et leur gestion » pour les étudiants de la spécialité Informatique appliquée (licence) 080800.62 Cours 15 MODÈLES D'ORGANISATION DE L'ACCÈS AUX BASES DE DONNÉES Questions pédagogiques : 1. Architecture

Langage SQL Cours 7 Transactions E. P. Morgunov Université d'État des sciences et technologies de Sibérie du nom de l'académicien M. F. Reshetnev Institut d'informatique et de télécommunications de Krasnoïarsk [email protégé]

Technologies de l'information informatique Module 13. Caractéristiques générales du SGBD Access 1 TÂCHES DU MODULE Après avoir étudié le module vous serez en mesure de : parler de la fonctionnalité du SGBD Access ; connaître les fonctionnalités

Système de gestion électronique de documents A r h i v a r u s Manuel d'installation Moscou, 2008 2 RÉSUMÉ Ce document fournit une description du package de livraison du produit logiciel « EUFRAT-Document Flow »

BASES DE DONNÉES (BD). SYSTÈMES DE GESTION DE BD Dispositions générales L'objectif de tout système d'information est de traiter des données sur des objets du monde réel. Au sens large du terme, une base de données est un ensemble d'informations sur

Introduction aux bases de données. Introduction à SQL. Sumy Educational Center Software Quality Assurance (QA) Netcracker 2016 1 Vous apprendrez ce qui suit Qu'est-ce qu'une base de données Classification des bases de données SGBD Clients SGBD

1.1. Bases du travail avec des bases de données 1.1.1. Bases de données et systèmes de gestion de bases de données. Modèles de données Une base de données (DB) est une collection nommée de données structurées liées à un

Il semble que ce soit tout récemment, mais quels changements importants se sont produits depuis ! Alors que l'auteur préparait la publication du livre Professional SQL Server 7.0 Programming début 1999

Introduction à la théorie des bases de données Cours 1 Plan du cours Concepts de base Organisation des données dans une base de données Types de modèles de données Architecture de la base de données Classification des bases de données Server 2008. Cours 1 2 Concepts de base Server 2008. Cours

Annexe 4 Sous-système de gestion des processus et des calculs SOMMAIRE 1. Informations générales... 2 2. Modélisation des états et des processus de travail... 2 2.1. Gestion de la liste des groupes d'états... 2 2.2. Création

Guide d'installation de Softacom CRM version 2.1. 1 "Guide d'installation de Softacom CRM". Contient une description du processus d'installation du système. Table des matières 1 INTRODUCTION... 3 1.1 Informations générales sur le système... 3 1.2 Caractéristiques

Travail de laboratoire 4 « Création de relations entre les tables » Objectif du travail : étudier la technologie de création de la structure d'une base de données relationnelle dans Microsoft Office Access 2007 1. Brèves informations théoriques Word

Sauvegarde logique Rubriques Sauvegarde logique et physique Copie de tables individuelles Sauvegarde et restauration de bases de données et de clusters 2 Types de sauvegarde Sauvegarde logique

MICROSOFT ACCESS : RELATIONS, CHAMPS CALCULÉS, CRÉATION D'UN FORMULAIRE DE BOUTON DE BD I. RELATIONS AVEC LES TABLES Les bases de données modernes sont généralement constituées de nombreuses tables interconnectées. L'un des objectifs de la création d'une bonne structure

NATIONAL AVIATION UNIVERSITY Département d'informatique appliquée Thème : SGBD Microsoft Access Création et traitement de bases de données Objectif du travail : maîtriser théoriquement et pratiquement les techniques de travail de base

Transactions et accès simultanés : comparaison des implémentations dans PostgreSQL et Oracle Egor Rogov, Postgres Professional Pourquoi tout cela ? résultat de la demande Pourquoi tout cela ? résultat de la demande Transactions Atomicité tous

@DB, SGBD 1. La structure de données, caractérisée par la subordination des objets de niveau inférieur aux objets de niveau supérieur, est appelée A. tabulaire B. relationnel *C. hiérarchique D. réseau 2. Distinctif

Guide d'installation VOGBIT 2010 Table des matières Introduction... 4 Configuration logicielle et matérielle requise... 5 Séquence d'installation... 6 Installation du programme... 7 Demande et obtention d'une licence...

Étapes de développement d'une base de données En règle générale, les non-professionnels travaillent avec des bases de données, c'est pourquoi les exigences suivantes pour la base de données peuvent être formulées. Les développeurs, lors de la création d'une base de données, doivent se concentrer sur ces éléments

Accéder au système de gestion de base de données Réalisé par Nazlygul Niyazovna Chibinova, étudiante à la Faculté des langues étrangères de l'Institut Yelabuga de l'Université fédérale de Kazan (Privozhsky). Scientifique

Informatique Cours 5 MS Access Systèmes d'information Applications pour le stockage, la reconstitution, l'édition et l'utilisation de grandes quantités de données Dans le cas le plus simple, utiliser signifie accéder

Table des matières Préface...3 Partie I. Bases de données, SGBD et modèles de données Chapitre 1. Objectif de la technologie des bases de données. Fonctions et principaux composants des systèmes de gestion de bases de données.................................................. ..........

Laboratoire de suivi et d'automatisation du processus éducatif. Guide de l'administrateur du site de support du processus éducatif version 3 du 18/12/15. Korotkov D.S., Zhuchok I.O. Activer désactiver

Chapitre 6 Théorie des bases de données 6.1. Notions générales 6.2. Modèles de données 6.3. Bases de données relationnelles 6.4. Modèles post-relationnels et bases de données 6.5. Conception de bases de données Systèmes d'information modernes,

Travaux de laboratoire 9 Enquête sur les capacités de Microsoft Access 2007 pour générer des requêtes à l'aide de SQL. Objectif : 1. Apprenez à générer des requêtes à l'aide de SQL dans Microsoft Access

Complexe d'élaboration de documents d'information aéronautique Création d'une base de données aéronautiques Dispositions générales La principale source d'information aéronautique du complexe est la base de données relationnelle d'informations aéronautiques

1. Moyens estimés de contrôle actuel. Questions soumises pour enquête (pour discussion) aux sections de la discipline académique : Section 1. Introduction aux banques de données 1. Le concept de banque de données (DB). Composants BnD. 1.1. Informatif

Cours 2 1 Selon le dictionnaire : Architectures du système d'information Un système d'information est un ensemble organisé de manière organisationnelle de documents (tableaux de documents) et de technologies de l'information, y compris l'utilisation

J. Bowman, S. Emerson, M. Darnovsky GUIDE PRATIQUE DE SQL Ce livre vous aidera même lorsque le meilleur manuel d'utilisation est inutile. Les sujets souvent manqués sont abordés ici.

Système de gestion électronique de documents A r h i v a r i s Manuel d'installation Moscou, 2009 2 RÉSUMÉ Ce document fournit une description du package de livraison du produit logiciel « EUFRAT-Document Flow ».