SQL est le langage de requête structuré. Il a été créé spécifiquement pour gérer et accéder aux données contenues dans les bases de données relationnelles. Oracle a été la première entreprise commerciale à utiliser SQL, qui a toujours son langage de requête SQL * Plus comme base de tout son système de gestion de base de données relationnelle (RDMS).
Aujourd’hui, MySQL, SQL Server, SAP et Sybase utilisent tous SQL pour l’accès à la base de données. Dans ce guide, nous vous donnerons la version standard des commandes SQL, en accordant une attention particulière à l’implémentation d’Oracle dans SQL * Plus.
CHOIX DE LA RÉDACTION: Nous recommandons les outils de gestion d’infrastructure SolarWinds pour surveiller tous vos outils Microsoft, y compris SQL Server. Vous avez besoin d’une suite d’utilitaires de surveillance qui peuvent interagir afin de couvrir toutes les installations qui prennent en charge votre base de données relationnelle.
Bases de données relationnelles
SQL gère bases de données relationnelles. Une base de données relationnelle contient des tables séparées pour réduire la répétition des données. Le processus de décision sur les regroupements appropriés des catégories de données est appelé «normalisation.«Dans certains cas, les exigences de performances peuvent dicter que les tables fonctionnent mieux si elles ne sont pas complètement normalisées. Ce processus est appelé «dénormalisation» et c’est un phénomène rare.
Chaque table a besoin d’une colonne qui identifie de manière unique chaque ligne. C’est ce qu’on appelle le «clé primaire.»Les autres tables qui peuvent se joindre à cette entité doivent contenir une référence à la clé primaire dans chaque enregistrement. Cette référence est appelée «clé étrangère.” Tu joindre tables en faisant correspondre la clé étrangère dans une table avec la clé primaire dans une autre. Cette action est effectuée avec SQL. Le diagramme Entité-Relation est une référence utile lorsque vous décidez comment structurer votre instruction SQL.
Afin d’accélérer l’accès, il est normal de placer un indice sur chaque clé primaire de la base de données. Il est également possible de stocker des jointures fréquemment utilisées pour créer des tables virtuelles, appelées “vues.”
Un autre objet de base de données est un déclencheur. Il s’agit d’un élément SQL qui se lance chaque fois qu’une valeur est ajoutée à une colonne ou modifiée. Un déclencheur mettra à jour les valeurs d’une colonne d’une table différente ou d’autres colonnes de la même table. Cela se produit si une valeur est ajoutée ou modifiée dans la colonne sur laquelle le déclencheur est placé. Il peut également restreindre les valeurs pouvant être entrées dans une colonne.
DQL, DDL, DCL et DML
SQL comprend quatre sous-ensembles de commandes. Ceux-ci sont Langage de requête de données (DQL), Langage de description des données (DDL), Langage de contrôle des données (DCL), et Langage de manipulation des données (DML).
Sur la plupart des projets, Administrateur de base de données (DBA) est le seul membre de l’équipe qui a les privilèges d’utiliser DDL. Ce groupe de commandes crée, modifie et supprime des tables, des index, des déclencheurs et des vues.
DML est utilisé pour ajouter, modifier ou supprimer des enregistrements des tables de la base de données. L’accès à ces fonctions SQL est généralement limité au personnel d’assistance ou aux membres supérieurs et responsables de la communauté des utilisateurs.
DQL est utilisé pour générer des rapports à partir de la base de données. Ce sous-ensemble de commandes est utilisé par les programmeurs et peut également être mis à la disposition des utilisateurs finaux afin qu’ils puissent effectuer leurs propres requêtes.
La gestion des privilèges utilisateur est stockée dans la même base de données que les données. Cependant, l’accès à ces tables est généralement limité au DBA. La gestion de l’accès des utilisateurs est entièrement mise en œuvre via DCL.
Il existe une commande SQL utile qui ne fait pas partie des classifications DQL, DDL, DCL ou DML. C’est “décris»Qui est généralement mis en œuvre DESC. Cela montre la structure d’un objet dans la base de données. Dans le cas d’un tableau, il affichera une liste de colonnes ainsi que le type de données et la taille de chacune. Il montrera le SQL qui a créé une vue ou un déclencheur et il montrera les colonnes impliquées dans un index donné.
Opérateurs relationnels
La théorie derrière les bases de données relationnelles a été définie par E. F. Codd en 1970. Selon la définition de Codd, il faut un outil de requête qui doit implémenter huit opérations relationnelles essentielles. Ceux-ci sont:
- SÉLECTIONNER
- PROJET
- JOINDRE
- PRODUIT
- SYNDICAT
- COUPER
- DIFFÉRENCE
- DIVISER
Vous devez maîtriser chacune de ces opérations afin d’accéder efficacement aux données d’une base de données relationnelle. Ceux-ci sont expliqués ci-dessous.
SÉLECTIONNER
SELECT a été initialement appelé RESTREINDRE. C’est la possibilité d’extraire un enregistrement ou un groupe d’enregistrements correspondants d’une table dans la base de données. En plus d’être une opération théorique, SÉLECTIONNER est le nom de la commande principale dans toute implémentation SQL. En fait, toute récupération de données est exécutée avec un SELECT. La commande est si puissante qu’elle peut être modifiée de nombreuses façons. La plupart du SQL que vous devrez apprendre sont les «clauses» d’une instruction SELECT.
PROJET
PROJECT est la possibilité d’isoler une colonne (ou «attribut») dans une table. Ceci est toujours implémenté avec une instruction SELECT.
JOINDRE
JOIN relie les tables entre elles sur un attribut commun. Vous utilisez la clé étrangère dans une table pour faire correspondre les valeurs de clé primaire dans une autre table. La loi unifie effectivement deux tables temporairement. Ceci est implémenté en tant que clause dans une instruction SELECT. Une jointure entre deux tables supprimera automatiquement tous les enregistrements qui n’apparaissent pas dans les deux tables de prise en charge. Un “jointure externe“Affichera les enregistrements qui n’ont pas de correspondance dans l’autre table, laissant les champs qui auraient dû être fournis par l’autre table laissés vides.
PRODUIT
PRODUIT est également connu comme “fois.”Ceci est implémenté comme une instruction SELECT qui tire les données de deux tables, mais ne spécifie pas la jointure entre elles. Dans la vraie vie, il y a très peu de raisons pratiques pour lesquelles quiconque effectuerait un temps sur deux tables. C’est généralement un signe d’avertissement que vous avez mal écrit une clause JOIN. Le résultat d’un PRODUIT est que chaque enregistrement de qualification dans une table correspond à chaque enregistrement de qualification dans l’autre table. Ainsi, si vous créez une instruction SELECT à partir de deux tables, chacune ayant dix enregistrements, les résultats seront un total de 100 enregistrements.
SYNDICAT
UNION est un opérateur commun dans la théorie des ensembles. Si vous avez deux ensembles, l’union combine tous les membres des deux ensembles. La duplication est supprimée des résultats. En SQL, ceci est implémenté par le OU Opérateur booléen.
COUPER
INTERSECT est l’autre opérateur principal de la théorie des ensembles. Si vous avez deux ensembles, l’intersection décrit les sujets qui sont membres des deux ensembles. Tout sujet qui est membre d’un seul des deux ensembles est exclu des résultats. En SQL, ceci est implémenté par le ET Opérateur booléen.
DIFFÉRENCE
DIFFERENCE est également connu comme «moins»Et en notation est représenté par le signe moins (« – »). Il existe plusieurs façons d’implémenter une DIFFÉRENCE. Il peut être créé en incluant un booléen NE PAS dans les critères de sélection et peut également être mis en œuvre par un MOINS opérateur suivi d’une sous-requête.
DIVISER
DIVIDE est une opération inhabituelle qui, comme PRODUCT, a très peu d’applications pratiques. Codd considérait DIVIDE comme le test acide de tout système relationnel et de son outil de requête, donc chaque implémentation SQL inclut cette capacité juste pour se qualifier pour le titre «relationnel». En réalité, vous ne l’utiliserez jamais. La mise en œuvre d’un DIVIDE nécessite une série de sous-requêtes alimentant un MOINS dans Oracle SQL * Plus et un SAUF dans certaines autres implémentations SQL, telles que SQL Server et PostgreSQL.
opérateurs booléens
George Boole était un mathématicien britannique décédé en 1864. Il a inventé l’algèbre booléenne, qui n’a eu aucune application pratique jusqu’à l’émergence des domaines de l’informatique et des bases de données relationnelles à la fin du 20e siècle. L’algèbre booléenne est au cœur des opérations de SQL – vous ne pouvez écrire que la requête SQL la plus basique sans utiliser la logique booléenne. La logique booléenne sous-tend également tous les moteurs de recherche. Les opérateurs booléens clés de SQL sont:
- ET
- OU
- NE PAS
Un autre Britannique victorien original que vous devez connaître est Augustus de Morgan. Il a proposé une observation sur la transformation dans la théorie des ensembles booléens, dont chaque programmeur SQL doit être conscient. C’est qu’un NON peut modifier le fonctionnement d’un ET et d’un OU. La version courte est que vous devez faire attention à la façon dont vous utilisez les crochets dans vos déclarations pour éviter des conséquences imprévues. Donc «et» et «ou» doivent également être considérés comme des opérateurs booléens importants dans SQL.
ET
ET implémente le COUPER dans la théorie des ensembles. Si vous souhaitez extraire des enregistrements d’une base de données qui ne correspondent qu’à deux exigences et non à un seul de ces critères composites, vous devez utiliser un ET. Par exemple, vous pouvez exécuter une entreprise de semences et votre base de données contient une table qui stocke toutes vos semences avec leurs attributs. Un client appelle et ne veut que des bégonias jaunes. Donc, vous rechercheriez dans votre base de données espèce = «bégonia» ET couleur = «jaune» obtenir le bon catalogue de semences.
OU
OU vous donne tous les membres de deux ensembles – c’est l’UNION dans la théorie des ensembles. Donc, dans votre base de données de départ, si vous avez exécuté une requête: espèce = «bégonia» OU couleur = «jaune», vous obtiendriez des résultats comprenant des roses jaunes, des bégonias jaunes, des bégonias roses et des jonquilles jaunes. Dans cet exemple, les bégonias jaunes se qualifient deux fois. En théorie relationnelle, un seul enregistrement doit être retourné. Heureusement, SQL inclut le qualificatif DISTINCT, donc en entrant SÉLECTIONNEZ DISTINCTE * À PARTIR DES fleurs O species espèce = “bégonia” OU couleur = “jaune”, ce record de bégonia jaune n’apparaîtrait qu’une seule fois.
NE PAS
NON est facile à comprendre. Il exclut les résultats que la déclaration suivante produirait: ET NON, OU NON. En pratique, vous n’utiliserez presque jamais «OU NON» dans une requête. Si votre client de semences voulait une couleur de bégonia autre que le jaune, vous utiliseriez espèce = «bégonia» ET PAS couleur = «jaune» pour sélectionner les produits à offrir.
Supports
Selon la loi de De Morgan:
«La négation d’une disjonction est la conjonction des négations; et la négation d’une conjonction est la disjonction des négations ».
En langage simple, utilisez soigneusement les crochets dans votre instruction SQL lorsque vous incluez également un NOT pour empêcher vos AND de se transformer en OR et vice versa. Les conditions de bracketing peuvent également raccourcir vos critères de sélection. Par exemple, NON (espèce = «bégonia» ET couleur = «jaune») est le même que NON espèce = “bégonia” OU NON couleur = “jaune”.
Extraire des enregistrements
Différentes implémentations SQL utilisent une syntaxe différente, mais dans ce guide, nous suivrons Oracle * SQL * Plus. La structure de base d’une sélection de données SQL est la suivante:
SÉLECTIONNER
DE
commandes est utilisé pour extraire des données de la base de données en utilisant des requêtes SELECT. DCL est utilisé pour gérer les autorisations daccès à la base de données. Les commandes de ce sous-ensemble sont utilisées pour accorder ou refuser laccès à la base de données, ainsi que pour gérer les privilèges des utilisateurs.
SQL est un langage de programmation très important pour la gestion de bases de données relationnelles. Il est utilisé par de nombreuses entreprises, y compris Oracle, MySQL, SQL Server, SAP et Sybase. Dans ce guide, vous trouverez des informations sur les bases de données relationnelles, les opérateurs relationnels, les opérateurs booléens, les sous-requêtes, les fonctions SQL et bien plus encore. Nous recommandons également les outils de gestion dinfrastructure SolarWinds pour surveiller tous vos outils Microsoft, y compris SQL Server.