Implémentation d’opérations d’algèbre relationnelle en SQL
Dans ce tutoriel, nous allons parler de l’implémentation des opérations de l’algèbre dans le langage SQL.
Algèbre relationnelle unaire et binaire : La jointure SQL
Nous expoons ci-après des exemples des opérations algébrique:
Opérations
1. Opérations spéciales unaires
Restriction (eng. k. restriction or selection)
Projection (eng. k. projection)
2. Opérations binaires de la théorie des ensembles
Somme théorique des ensembles (eng. k. union)
Différence ensembliste (différence k. eng.)
Section ou partie commune (eng. k. intersection)
Produit direct (également cartésien ou produit croisé cartésien) (eng. k.
produit cartésien ou produit direct)
Renommer (eng. k. renommer)
3.Opérations spéciales binaires
Theta join
Equijoin
Natural join
(Left) Outer join
Semijoin
L’opération d’algèbre relationnelle
SELECT * ou SELECT code_fabricant, etc.
FROM Fabricant ; FROM Fabricant ;
Opération d’algèbre relationnelle
La clause WHERE contient une ou plusieurs conditions de recherche qui spécifient les enregistrements, que l’on souhaite trouver. Il implémente l’opération d’algèbre relationnelle “limite”.
Opérations d’algèbre relationnelle
{UNION | INTERSECTION | SAUF} [SOUS] [CORRESPONDING [BY [column1
[,...]}]]
Si CORRESPONDING BY est spécifié, l’opération est effectuée dans la clause
sur des colonnes spécifiées. Si la clause CORRESPONDING est spécifiée, mais pas
clause BY, l’opération est effectuée sur des colonnes communes
(avec le même nom) dans les deux tables.
Si la clause ALL est spécifiée, le résultat peut contenir des lignes en double. Lignes A et B
sont les mêmes que pour les valeurs ordonnées des lignes A et B
a1, a2,…, an et b1, b2, … bn les équations a1=b1 s’appliquent ; a2=b2 ,…, an=bn
Trouver une connexion | Trouver la différence | Trouver un passage |
SELECT nom de famille FROM fabricant OR salaire < 5000 SYNDICAT SELECT nom de famille FROM Fabricant OR salaire > 9000 ; | SELECT Department_no FROM Département EN MOI SELECT Department_no FROM Fabricant ; | SELECT Department_no FROM Département COUPER SELECT Department_no FROM Fabricant ; |
Opération d’algèbre relationnelle – Produit croisé cartésien
Dans le produit de deux tables, les données obtenues à la suite de la requête sont la somme de deux
de données dans un ensemble de données (table de données) join. Toutes les lignes
du premier ensemble de données est join à toutes les lignes du second ensemble de données.
Par exemple : SELECT Producer.nom, Department.department_name
Ancienne syntaxe SQL (1) :
FROMTableau1, Tableau2
WHERE Table1.column1 opérateur de comparaison Table2.column2
Règle pour joindre des entrées de table (jointure) dans une requête : soi-disant. conditions d'adhésion
Nombre minimum de (clauses WHERE) = nombre de tables - 1
Avec INNER JOIN
FROM Table1 INNER JOIN Table2
ON Tableau 1.colonne 1 opérateur de comparaison Tableau.colonne 2
Un opérateur de comparaison peut être : “<“,”<>”,”<” ,”>”, “>=”, “<=” utilisé uniquement lorsque la sous-requête renvoie un seul enregistrement.
Ex : SELECT*
FROM Fabricant
WHERE salaire >(SELECT salaire FROM Producteur WHERE code_producteur =1);
sous-requête des informations sur les lignes de la requête principale et recommence à chaque fois pour chaque ligne de la requête principale. Une sous-requête est exécutée à plusieurs reprises si la clause WHERE de la sous-requête fait référence à une colonne de la clause principale.
SELECT le nom
FROM Producteur X
WHERE salaire >(SELECT Moy(salaire) FROM Fabricant Y WHERE
X.department_no = Y.department_no);
Sous-requête scalaire – Ce type de sous-requête renvoie une valeur scalaire, c’est-à-dire. une ligne et une colonne.
Une sous-requête qui renvoie une table. Ce type de sous-requête renvoie plusieurs lignes et une ou plusieurs colonnes.
Les sous-requêtes IN et EXISTS peuvent être utilisées pour implémenter l’opération “couper” de l’algèbre relationnelle. Les sous-requêtes NOT IN et NOT EXISTS peuvent être utilisées pour implémenter l’opération “différence” en algèbre relationnelle. N’IMPORTE QUEL v. SOME est utilisé pour les sous-requêtes qui renvoient une seule colonne contenant des nombres. La condition de la clause WHERE est considérée comme vraie si au moins certaines des valeurs renvoyées de la sous-requête la satisfont. ALL est utilisé pour les sous-requêtes qui renvoient une seule colonne contenant des nombres. Une condition dans la clause WHERE est considérée comme vraie si toutes les valeurs renvoyées par la sous-requête la satisfont.
SQL et logique trivalente.
SQL utilise la logique trivalente !
– VRAI
– FAUX
– INCONNU
Par exemple, une requête est effectuée pour trouver les noms de famille des employés dont le salaire est supérieur à 5000. À la suite de la requête, le programme du système de base de données parcourt tous les enregistrements de la table “Employé”. Pour chaque entrée, on décide si elle satisfait ou non la condition :
– VRAI. Si l’employé a un salaire défini et qu’il est supérieur à 5000, les données de l’employé doivent être émises.
– FAUX. Si l’employé a un salaire défini et qu’il est inférieur à 5000, les données de l’employé ne seront pas publiées.
__ Le nom doit commencer par une majuscule.
__ Aucun espace ne doit être utilisé dans les noms. Vous pouvez utiliser un trait de soulignement ou mettre en majuscule les sous-parties du nom au lieu d’espaces.
__ N’utilisez pas de mots réservés par le système de base de données comme noms (par exemple “table”, “select”, etc.)
__ estonien/anglais/russe etc. utiliser un langage mixte n’est pas un bon ton. Utilisez une langue dans la base de données.
__ Pour chaque système de base de données, il est nécessaire d’étudier quelle norme de nommage est utilisée pour nommer les objets du catalogue système de la base de données. Si nécessaire, les recommandations suivantes doivent être modifiées pour faire la distinction entre les noms des objets de l’annuaire système et les objets créés par l’utilisateur.
__ Comme pour toute norme, elle est plus utile si elle est suivie systématiquement.
Format de date et d’heure selon la norme SQL
Norme ISO 8601:1988
Selon lui, la date est présentée sous la forme aaaa-mm-jj et l’heure sous la forme hh:mm:ss (voir la sous-section suivante). Cela signifie que les quatre numéros d’année sont suivis de deux numéros de mois (01-12) et de deux numéros de jour (01-31) dans la date. C’est ce qu’on appelle le “format de date calendaire”, et la norme SQL92 prévoit également la présentation des données de date de cette manière. Une abréviation de texte n’est pas utilisée pour indiquer le mois, car ces abréviations peuvent être différentes dans différentes langues.
L’heure est donnée selon la norme ISO 8601 (également suivie de SQL92) sous la forme : hh:mm:ss
hh- le nombre d’heures complètement écoulées depuis minuit (0-24)
mm- minutes entièrement écoulées (0-59)
ss- secondes entièrement écoulées (0-59)
Le temps peut être représenté de deux manières :
– Temps universel avec un champ séparé où la différence entre le temps local et le temps universel est écrite. Le symbole “Z” peut être utilisé pour représenter le temps universel.
– Heure locale + référence de fuseau horaire.
L’ISO normalise les codes à trois chiffres pour désigner les fuseaux horaires. (par exemple : EST – Eastern Standard Time aux États-Unis et au Canada. Différence par rapport à UTC -0500).