Qu'est-ce que le serveur SQL en termes simples. Création d'index indépendants. Qu'est-ce que SQL et ce qu'il n'est pas

LANGAGE SQL : MANIPULATION DES DONNÉES

DANS CETTE CONFÉRENCE...

· Le but du Structure Query Language (SQL) et son rôle particulier lors du travail avec des bases de données.

· Histoire de l'émergence et du développement du langage SQL.

· Rédaction d'instructions SQL.

· Récupérer des informations à partir de bases de données à l'aide de l'instruction SELECT.

· construction d'instructions SQL caractérisées par les caractéristiques suivantes :

· utiliser la construction WHERE pour sélectionner des lignes qui satisfont diverses conditions ;

· trier les résultats de la requête à l'aide de la construction ORDER BY ;

· utilisation des fonctions d'agrégation SQL ;

· regrouper les données sélectionnées à l'aide de la construction GROUP BY ;

· utilisation de sous-requêtes ;

· en utilisant des jointures de tables ;

· application d'opérations avec des ensembles (UNION, INTERSECT, SAUF).

· Apporter des modifications à la base de données à l'aide des instructions INSERT, UPDATE et DELETE.

L'un des langages nés du développement du modèle de données relationnelles est SQL, désormais très répandu et devenu en fait le langage standard des bases de données relationnelles. La norme de langage SQL a été publiée par l'ANSI (National Standards Institute) des États-Unis en 1986 et, en 1987, l'Organisation internationale de normalisation (ISO) a adopté cette norme comme norme internationale. Actuellement, le langage SQL est pris en charge par des centaines de types différents de SGBD, développés pour une grande variété de plates-formes informatiques, allant des ordinateurs personnels aux mainframes.

Cette conférence utilise la définition ISO de SQL.

Introduction à SQL

Dans cette partie, nous examinerons l'utilité du langage SQL, nous familiariserons avec son historique et analyserons les raisons pour lesquelles il est devenu si important pour les applications de bases de données.

Objectif du langage SQL

Tout langage conçu pour fonctionner avec des bases de données doit offrir à l'utilisateur les fonctionnalités suivantes :

· créer des bases de données et des tableaux avec une description complète de leur structure ;



· Effectuer des opérations de manipulation de données de base, telles que l'insertion, la modification et la suppression de données dans des tableaux ;

· Effectuer des requêtes simples et complexes.

De plus, le langage de base de données doit résoudre tous les problèmes ci-dessus avec un minimum d'effort de la part de l'utilisateur, et la structure et la syntaxe de ses commandes doivent être assez simples et faciles à apprendre.

Et enfin, le langage doit être universel, c'est-à-dire répondre à une norme reconnue, qui permettra d'utiliser la même syntaxe et la même structure de commandes lors du passage d'un SGBD à un autre. Le standard de langage SQL moderne satisfait presque toutes ces exigences.

SQL est un exemple de langage de transformation de données ou de langage conçu pour fonctionner avec des tables afin de transformer les données d'entrée sous la forme de sortie souhaitée. Le langage SQL, défini par la norme ISO, comporte deux composants principaux :

· Langage de définition de données (DDL), conçu pour définir les structures de bases de données et contrôler l'accès aux données ;

· Langage de manipulation de données (DML), conçu pour récupérer et mettre à jour des données.

Avant l'avènement du standard SQL3, SQL incluait uniquement des commandes permettant de définir et de manipuler les données ; il ne lui manquait aucune commande pour contrôler la progression des calculs. En d'autres termes, ce langage n'avait pas IF ... THEN ... ELSE, GO TO, DO ... WHILE et toute autre commande conçue pour contrôler la progression du processus de calcul. Ces tâches devaient être résolues par programme, à l'aide de langages de programmation ou de contrôle de tâches, ou de manière interactive, à la suite d'actions effectuées par l'utilisateur lui-même. En raison de ce caractère incomplet, du point de vue de l'organisation du processus informatique, le langage SQL pourrait être utilisé de deux manières. Le premier impliquait un travail interactif, consistant dans la saisie par l'utilisateur d'instructions SQL individuelles depuis le terminal. La seconde consistait à intégrer des instructions SQL dans des programmes en langage procédural.

Avantages du langage SQL3 dont la définition formelle a été adoptée en 1999 :

· Le langage SQL est relativement facile à apprendre.

· Il s'agit d'un langage non procédural, il doit donc préciser quelles informations doivent être obtenues, et non comment elles peuvent être obtenues. En d’autres termes, le langage SQL ne nécessite pas de spécifier de méthodes d’accès aux données.

· Comme la plupart des langages modernes, SQL prend en charge un format libre pour écrire des instructions. Cela signifie que les éléments de commande individuels ne sont pas associés à des positions fixes sur l'écran au fur et à mesure que vous tapez.

· La structure de la commande est spécifiée par un ensemble de mots-clés, qui sont des mots anglais ordinaires, tels que CREATE TABLE - Créer une table, INSERT - Insérer, SELECT - Sélectionner.

Par exemple:

CREATE TABLE [Ventes] ( (S), [Nom de l'objet] VARCHAR(15), [Coût] DECIMAL(7,2));

INSÉRER DANS LES VALEURS [Objet] ("SG16", "Brown", 8300);

SELECT , [Nom de l'objet], [Coût] ;

DE [Ventes]

OÙ [Coût] > 10 000 ;

· Le langage SQL peut être utilisé par un large éventail d'utilisateurs, notamment les administrateurs de bases de données (DBA), le personnel de direction de l'entreprise, les programmeurs d'applications et de nombreux autres utilisateurs finaux de diverses catégories.

Actuellement, il existe des normes internationales pour le langage SQL qui le définissent formellement comme le langage standard pour la création et la manipulation de bases de données relationnelles, ce qu'il est en réalité.

Histoire du langage SQL

L'histoire du modèle de données relationnelles, et indirectement du langage SQL, a commencé en 1970 avec la publication d'un article fondateur d'E. F. Codd, qui travaillait à l'époque au laboratoire de recherche IBM à San José. En 1974, D. Chamberlain, qui travaillait dans le même laboratoire, publiait une définition d'un langage appelé « Structured English Query Language », ou SEQUEL. Une version révisée de ce langage, SEQUEL/2, a été publiée en 1976 ; par la suite, son nom a dû être changé en SQL pour des raisons juridiques - l'abréviation SEQUEL était déjà utilisée par les philologues. Mais à ce jour, de nombreuses personnes prononcent encore l'acronyme SQL comme « suite », bien qu'il soit officiellement recommandé de le lire comme « es-qu-el ».

En 1976, IBM a publié un prototype de SGBD basé sur le langage SEQUEL/2, appelé « System R ». Le but de cet essai était de tester la faisabilité de la mise en œuvre du modèle relationnel. Entre autres aspects positifs, le résultat le plus important de ce projet peut être considéré comme le développement du langage SQL lui-même. Cependant, les racines de ce langage remontent au langage SQUARE (Specifying Queries as Rational Expressions), qui était le prédécesseur du langage SQL. Projet System R. Le langage SQUARE a été développé comme outil de recherche pour mettre en œuvre l'algèbre relationnelle à travers des phrases composées en anglais.

À la fin des années 1970, la société devenue aujourd’hui Oracle Corporation a lancé le SGBD Oracle. Il s'agit peut-être de la toute première implémentation commerciale d'un SGBD relationnel construit à l'aide du langage SQL.

Un peu plus tard, apparaît le SGBD INGRES, utilisant le langage de requête QUEL.

Ce langage était plus structuré que SQL, mais sa sémantique était moins proche de l'anglais ordinaire. Plus tard, lorsque SQL a été adopté comme langage standard pour les bases de données relationnelles, le SGBD INGRES a été entièrement converti pour l'utiliser. En 1981, IBM a lancé son premier SGBD relationnel commercial, appelé SQL/DS (pour l'environnement DOS/VSE). En 1982, une version de ce système a été publiée pour l'environnement VM/CMS, et en 1983 pour l'environnement MVS, mais déjà sous le nom de DB2.

En 1982, l'ANSI (National Standards Institute) des États-Unis a commencé à travailler sur le Relation Database Language (RDL), guidé par des documents conceptuels reçus d'IBM Corporation. En 1983, l'Organisation internationale de normalisation (ISO) s'est impliquée dans ces travaux. Les efforts conjoints des deux organisations ont abouti à la publication du standard de langage SQL. Le nom RDL a été abandonné en 1984 et le projet de langage a été repensé pour se rapprocher des implémentations existantes du langage SQL.

La version originale de la norme, publiée par l'ISO en 1987, a suscité une vague de critiques. Date, un chercheur bien connu dans ce domaine, a notamment souligné que la norme omet des fonctions critiques, notamment les contrôles d'intégrité référentielle, et certains opérateurs relationnels.

De plus, il a noté la redondance excessive du langage : une même demande pouvait être rédigée dans plusieurs versions différentes. La plupart des critiques ont été jugées justes et les ajustements nécessaires ont été apportés à la norme avant sa publication. Cependant, il a été décidé qu'il était plus important de publier la norme le plus rapidement possible afin qu'elle puisse servir de base commune sur laquelle le langage lui-même et ses implémentations pourraient être développés davantage, plutôt que d'attendre que toutes les fonctionnalités différentes soient disponibles. les experts considérés comme obligatoires ont été définis et convenus pour une langue similaire.

En 1989, l'ISO a publié un amendement à la norme définissant les fonctions d'intégrité des données. En 1992, la première version substantiellement révisée de la norme ISO, parfois appelée SQL2 ou SQL-92, a été publiée. Bien que certaines fonctions aient été définies dans cette norme pour la première fois, nombre d'entre elles ont déjà été implémentées en totalité ou en partie dans une ou plusieurs implémentations commerciales du langage SQL.

Et la version suivante du standard, communément appelée SQL3, n'a été publiée qu'en 1999. Cette version fournit une prise en charge supplémentaire pour les fonctionnalités de gestion de données orientées objet.

Les fonctions ajoutées au standard de langage par les développeurs d'implémentations commerciales sont appelées extensions. Par exemple, le standard du langage SQL définit six types différents de données pouvant être stockées dans des bases de données. Dans de nombreuses implémentations, cette liste est complétée par diverses extensions. Chaque implémentation d'une langue est appelée un dialecte. Il n’existe pas deux dialectes complètement identiques et il n’existe actuellement aucun dialecte entièrement conforme à la norme ISO.

De plus, à mesure que les développeurs de bases de données ajoutent de nouvelles fonctionnalités à leurs systèmes, ils élargissent continuellement leurs dialectes SQL, ce qui rend les dialectes individuels de plus en plus différents les uns des autres. Cependant, le noyau de base du langage SQL reste plus ou moins standardisé dans toutes les implémentations.

Bien que les concepts originaux du langage SQL aient été développés par IBM, son importance a rapidement incité d'autres développeurs à créer leurs propres implémentations. Actuellement, il existe littéralement des centaines de produits disponibles sur le marché construits à l'aide du langage SQL, et nous entendons constamment parler de la sortie de plus en plus de nouvelles versions,

PHP et bases de données

La capacité de stocker et de récupérer efficacement de grandes quantités d’informations a grandement contribué au développement réussi d’Internet. Généralement, les bases de données sont utilisées pour stocker des informations. Le fonctionnement de sites célèbres tels que Yahoo, Amazon et Ebay dépend en grande partie de la fiabilité des bases de données qui stockent d'énormes quantités d'informations. Bien entendu, la prise en charge des bases de données ne se concentre pas uniquement sur les intérêts des entreprises géantes : les programmeurs Web disposent de plusieurs implémentations de bases de données puissantes, distribuées à un coût relativement faible (voire même gratuites).

Une bonne organisation de la base de données offre des capacités de récupération de données plus rapides et plus flexibles. Il simplifie grandement la mise en œuvre des outils de recherche et de tri, et les problèmes de droits d'accès aux informations sont résolus à l'aide de contrôles de privilèges trouvés dans de nombreux systèmes de gestion de bases de données (SGBD). De plus, les processus de réplication et d’archivage des données sont simplifiés.

Le chapitre commence par une description détaillée de la récupération et de la mise à jour des données dans MySQL, probablement le SGBD le plus utilisé en PHP (http://www.mysql.com). En utilisant MySQL comme exemple, nous montrerons comment les données de la base de données sont chargées et mises à jour en PHP ; Nous examinerons les outils de recherche et de tri de base utilisés dans de nombreuses applications Web. Nous passerons ensuite au support par PHP de l'ODBC (Open Data Base Connectivity), une interface générique qui peut être utilisée pour se connecter à différents SGBD en même temps. La prise en charge d'ODBC dans PHP sera démontrée par la connexion et la récupération de données à partir d'une base de données Microsoft Access. Le chapitre se termine par un projet qui utilise PHP et MySQL pour créer un répertoire hiérarchique contenant des informations sur les sites favoris. Lorsque de nouveaux sites sont inclus dans le catalogue, l'utilisateur les affecte à l'une des catégories standards définies par l'administrateur du site.

Avant de parler de MySQL, je voudrais dire quelques mots sur SQL, le langage le plus courant pour travailler avec des bases de données. Le langage SQL est la base de presque tous les SGBD existants. Pour passer à l'examen d'exemples d'utilisation de bases de données, vous devez avoir au moins une compréhension générale du fonctionnement de SQL.

SQL est généralement décrit comme le langage standard utilisé pour interagir avec les bases de données relationnelles (voir ci-dessous). Cependant, SQL n’est pas un langage de programmation comme C, C++ ou PHP. Il s'agit plutôt d'un outil d'interface permettant d'effectuer diverses opérations de base de données, fournissant à l'utilisateur un ensemble standard de commandes. Les capacités de SQL ne se limitent pas à récupérer des données à partir d'une base de données. SQL prend en charge diverses options pour interagir avec une base de données, notamment :

  • définition de la structure des données-- définition des structures utilisées lors du stockage des données ;
  • échantillonnage de données-- charger les données de la base de données et les présenter dans un format pratique pour la sortie ;
  • informatique-- insertion, mise à jour et suppression d'informations ;
  • contrôle d'accès-- la possibilité d'autoriser/interdire l'échantillonnage, l'insertion, la mise à jour et la suppression de données au niveau des utilisateurs individuels ;
  • contrôle de l'intégrité des données-- Préservation de la structure des données en cas de problèmes tels que des mises à jour parallèles ou des pannes du système.

Veuillez noter que la définition de SQL indique que ce langage est destiné à fonctionner avec relationnel bases de données. Dans les SGBD relationnels, les données sont organisées sous forme d’un ensemble de tables interconnectées. Les relations entre les tables sont implémentées sous la forme de liens vers les données d'autres tables. Tableau peut être considéré comme un tableau bidimensionnel dans lequel l'emplacement de chaque élément est caractérisé par des valeurs de ligne et de colonne spécifiques. Un exemple de base de données relationnelle est présenté dans la Fig. 11.1.

Riz. 11.1.Exemple de base de données relationnelle

Comme on peut le voir sur la Fig. 11.1, chaque tableau est constitué de lignes (enregistrements) et de colonnes (champs). Chaque champ se voit attribuer un nom unique (dans la table). Notez la relation entre les tables clients et commandes, indiquée par une flèche. Un court identifiant client est inclus dans les informations de commande, ce qui évite le stockage redondant du nom du client et d’autres détails. Il existe une autre relation dans la base de données affichée : entre les tables de commandes et de produits. Cette connexion est établie à l'aide du champ prod_id, qui stocke l'identifiant du produit commandé par ce client (défini par le champ custjd). Ces connexions facilitent le référencement de données complètes sur les clients et les produits à l'aide d'identifiants simples. Une base de données correctement organisée devient un outil puissant pour organiser et stocker efficacement les données avec une redondance minimale. N'oubliez pas cette base de données, j'y ferai souvent référence dans d'autres exemples.

Alors, comment les opérations sur les bases de données relationnelles sont-elles effectuées ? Pour ce faire, SQL dispose d'un ensemble spécial de commandes générales, telles que SELECT, INSERT, UPDATE et DELETE. Par exemple, si vous avez besoin d'obtenir l'adresse e-mail d'un client avec l'ID 2001cu (voir Figure 11.1), il vous suffit d'exécuter la commande SQL suivante :

SELECT cust_email FROM clients WHERE custjd = "2001cu"

Tout est assez logique, n'est-ce pas ? En résumé, la commande ressemble à ceci :

SELECT nom_champ FROM nom_table [condition WHERE]

Les crochets indiquent que la dernière partie de la commande est facultative. Par exemple, pour obtenir les adresses e-mail de tous les clients de la table clients, exécutez simplement la requête suivante :

SELECT cust_email FROM clients

Supposons que vous souhaitiez ajouter une nouvelle entrée à la table des produits. La commande d'insertion la plus simple ressemble à ceci :

INSÉRER dans les produits VALEURS ("1009pr", "Tomates rouges", "1.43");

Si vous devez ultérieurement supprimer ces données, utilisez la commande suivante :

DELETE FROM produits WHERE prod_id = 1009r";

Il existe de nombreux types de commandes SQL et leur description complète dépasse le cadre de ce livre. Un livre séparé pourrait facilement être écrit sur ce sujet ! J'ai essayé de garder les commandes SQL utilisées dans les exemples relativement simples mais suffisamment réalistes. Il existe de nombreuses informations et ressources de formation SQL sur le Web. Certains liens sont fournis à la fin de cette section.

Il n'est pas nécessaire d'écrire les commandes SQL en caractères majuscules. Cependant, je préfère cette notation car elle permet de distinguer les composants de la requête.

Depuis que vous lisez ce livre, vous vous demandez probablement comment travailler avec des bases de données sur le Web ? En règle générale, d'abord, en utilisant certains

ou un langage d'interface (PHP, Java ou Perl), une connexion à la base de données est créée, après quoi le programme accède à la base de données avec des requêtes à l'aide d'un ensemble d'outils standard. Un langage d’interface peut être considéré comme une sorte de « colle » qui lie la base de données au Web. Je me tourne vers mon langage frontal préféré : PHP.

Dans ce chapitre...

  • Qu'est-ce que SQL
  • Idées fausses sur SQL
  • Un regard sur différentes normes SQL
  • Introduction aux commandes SQL standards et aux mots réservés
  • Représenter des nombres, des symboles, des dates, des heures et d'autres types de données
  • Valeurs et restrictions non définies
  • Utiliser SQL dans un système client/serveur
  • SQL sur le Web

SQL est un langage flexible qui peut être utilisé de différentes manières. C'est l'outil le plus couramment utilisé pour communiquer avec une base de données relationnelle. Dans ce chapitre, j'expliquerai ce qu'est et n'est pas SQL, et plus précisément en quoi SQL diffère des autres types de langages informatiques. Vous vous familiariserez ensuite avec les commandes et les types de données pris en charge par le SQL standard. De plus, j'expliquerai des concepts de base tels que valeurs non définies Et restrictions. Enfin, un aperçu sera donné de la manière dont SQL s'intègre dans l'environnement client/serveur, ainsi que dans l'Internet et les intranets des organisations.

Qu'est-ce que SQL et ce qu'il n'est pas

La première chose à comprendre à propos de SQL est qu'il ne s'agit pas d'un de procédure comme FORTRAN, Basic, C, COBOL, Pascal et Java. Pour résoudre un problème à l’aide de l’un de ces langages procéduraux, vous devez écrire une procédure qui effectue les opérations spécifiées les unes après les autres jusqu’à ce que la tâche soit terminée. Une procédure peut être une séquence linéaire ou contenir des branches, mais dans les deux cas, le programmeur précise l'ordre d'exécution.

En d'autres termes, SQL est non procédural langue. Pour l'utiliser pour résoudre un problème, dites à SQL, Quoi exactement vous en avez besoin comme si vous parliez au génie de la lampe d'Aladdin. Et en même temps, il n'est pas nécessaire de dire : comment obtenez-vous ce que vous voulez. Le système de gestion de base de données (SGBD) décidera de la meilleure façon de répondre à votre demande.

Bien. Je viens de dire que SQL n'est pas un langage procédural. En substance, c’est vrai. Cependant, avec des millions de programmeurs (et vous êtes peut-être l'un d'entre eux) habitués à résoudre les problèmes de manière procédurale, il y a eu beaucoup de pression ces dernières années pour ajouter certaines fonctionnalités procédurales à SQL. C'est pourquoi la nouvelle version de la spécification SQL, SQL:2003, inclut désormais des fonctionnalités de langage procédural telles que des blocs BEGIN, des instructions IF conditionnelles, des fonctions et des procédures. Grâce à ces nouveaux outils, les programmes peuvent être stockés sur un serveur afin de pouvoir être réutilisés par de nombreux utilisateurs.

Pour illustrer ce que je voulais dire lorsque je disais « dites au système exactement ce dont vous avez besoin », disons que vous disposez d'une table EMPLOYÉE avec des données sur les employés et que vous souhaitez en sélectionner toutes les lignes qui correspondent à tous les employés « seniors ». Les travailleurs « seniors » peuvent être définis comme toute personne âgée de plus de 40 ans ou gagnant plus de 60 000 $ par an. La sélection dont vous avez besoin peut être effectuée à l'aide de la requête suivante :

SÉLECTIONNEZ * PAR EMPLOYÉ OÙ ÂGE >40 OU SALAIRE >60000 ;

Cette instruction sélectionne dans la table EMPLOYEE toutes les lignes dans lesquelles la valeur de la colonne AGE (âge) est supérieure à 40 ou la valeur de la colonne SALARY (salaire) est supérieure à 60 000. SQL lui-même sait comment sélectionner les informations. Le moteur de base de données vérifie la base de données et décide lui-même de la manière dont la requête doit être exécutée. Il vous suffit d'indiquer les données dont vous avez besoin.

Souviens-toi:
Une requête est une question que vous posez à la base de données. Si l'une de ses données correspond aux conditions de votre demande, SQL vous la transmet
.

Les implémentations SQL modernes manquent de nombreuses constructions de programmation simples qui sont fondamentales pour la plupart des autres langages. Les applications quotidiennes nécessitent généralement au moins certaines de ces constructions, donc SQL est en fait sous-langue données. Même avec les ajouts apportés à SQL avec la norme SQL:1999 et les extensions supplémentaires ajoutées dans SQL:2003, vous devez toujours utiliser l'un des langages de programmation, tel que C, avec SQL pour créer une application complète.

Vous pouvez sélectionner des informations dans la base de données de l'une des manières suivantes.

  • Utilisation d'une requête unique et non programmable depuis la console de l'ordinateur, saisie d'une commande SQL et lecture des résultats de son exécution à l'écran. La console est un terme traditionnel désignant le matériel informatique qui fait le travail du clavier et de l'écran des PC modernes. Les requêtes de console sont utiles lorsque vous avez besoin d'une réponse rapide à une demande spécifique. Pour satisfaire certains besoins actuels, vous aurez peut-être besoin de données de la base de données qui n'ont jamais été requises auparavant. Vous n’en aurez peut-être plus jamais besoin, mais vous en avez besoin maintenant. Entrez la requête SQL appropriée à partir du clavier et après un certain temps, le résultat apparaîtra sur votre écran.
  • Utiliser un programme qui récupère des informations d'une base de données puis crée un rapport basé sur ces données, soit affiché à l'écran, soit imprimé. SQL peut également être utilisé de cette façon. Une requête SQL complexe qui pourrait être utile dans le futur peut être placée directement dans le programme. Cela vous permet de le réutiliser dans le futur. Ainsi, la formulation de la requête est exécutée une seule fois. Le chapitre 15 explique comment insérer du code SQL dans des programmes écrits dans un autre langage.

Fonctionnalité du langage SQL

Les principales fonctionnalités du langage SQL sont données ci-dessous.

Définition des données. Cette fonction SQL est une description de la structure des données supportées et de l'organisation des relations relationnelles (tables). Les opérateurs de création d'une base de données, de création de tables et d'accès aux données sont destinés à l'implémenter.

Création d'une base de données. Pour créer une nouvelle base de données, utilisez l'instruction CREATE DATABASE. La structure de l'instruction spécifie le nom de la base de données à créer.

Création de tableaux. La table de base est créée à l'aide de l'instruction CREATE TABLE. Cette instruction spécifie les noms des champs, leurs types de données et leur longueur (pour certains types de données). SQL utilise les types de données suivants :

ENTIER – entier ;

CHAR – valeur du caractère ;

VARCHAR – valeur de caractère, seuls les caractères non vides sont stockés ;

DECIMAL – nombre décimal ;

FLOAT – nombre à virgule flottante ;

DOUBLE PRÉCISION – virgule flottante double précision ;

DATETIME – date et heure ;

BOOL – Valeur booléenne.

L'instruction de création de table spécifie des restrictions sur les valeurs des colonnes et sur la table. Les restrictions possibles sont indiquées dans le tableau. 4.8

Tableau 4.8 Limites des données définies

Pour un modèle de données relationnel, la spécification d'une clé étrangère (FOREIGNKEY) est essentielle. Lors de la déclaration de clés étrangères, vous devez placer des contraintes appropriées sur la colonne, telles que NOT NULL.

Dans une instruction SQL, CHECK désigne les contraintes sémantiques qui garantissent l'intégrité des données, telles que la limitation de l'ensemble des valeurs valides pour une colonne particulière.

Vous ne pouvez pas utiliser l'instruction create table plus d'une fois sur la même table. Si, après sa création, des inexactitudes sont découvertes dans sa définition, des modifications peuvent être apportées à l'aide de l'instruction ALTER TABLE. Cette instruction est conçue pour modifier la structure d'une table existante : vous pouvez supprimer ou ajouter un champ à une table existante.

Manipulation de données. SQL permet à un utilisateur ou à un programme d'application de modifier le contenu d'une base de données en insérant de nouvelles données, en supprimant ou en modifiant des données existantes.

Insérer de nouvelles données est une procédure d'ajout de lignes à une base de données et est effectuée à l'aide de l'instruction INSERT.

Modification des données implique des modifications des valeurs dans une ou plusieurs colonnes d'un tableau et est effectué à l'aide d'une instruction UPDATE. Exemple:

Montant SET=montant+1000.00

OÙ montant>0

Supprimer des lignesà partir d'une table à l'aide de l'instruction DELETE. La syntaxe de l'opérateur est :

DE la table

La clause WHERE est facultative, mais si elle n'est pas incluse, toutes les entrées du tableau seront supprimées. Il est utile d'utiliser l'instruction SELECT avec la même syntaxe que l'instruction DELETE pour pré-vérifier quels enregistrements seront supprimés.

Assurer l’intégrité des données. Le langage SQL permet de définir des contraintes d'intégrité assez complexes, dont le respect sera vérifié pour toutes les modifications de la base de données. La surveillance des résultats des transactions, le traitement des erreurs qui se produisent et la coordination du travail parallèle avec la base de données de plusieurs applications ou utilisateurs sont assurés par COMMIT (enregistre la réussite de la transaction en cours et le début d'une nouvelle) et ROLLBACK (la nécessité pour un rollback - restauration automatique de l'état de la base de données au début de la transaction) opérateurs.

Échantillonnage de données est l'une des fonctions de base de données les plus importantes qui correspond à l'instruction SELECT. Un exemple d’utilisation de l’opérateur a été abordé dans la section précédente.

En SQL, vous pouvez créer des séquences de requêtes imbriquées (sous-requêtes). Il existe certains types de requêtes qu'il est préférable d'implémenter à l'aide de sous-requêtes. Ces requêtes incluent ce que l'on appelle des contrôles d'existence. Supposons que vous souhaitiez obtenir des données sur les étudiants qui n'ont pas obtenu une note de sept points. Si un ensemble vide est renvoyé, cela ne signifie qu'une chose : chaque élève a au moins une de ces notes.

Lier des tables. Les instructions SQL vous permettent de récupérer des données de plusieurs tables. Une façon d'y parvenir consiste à lier les tables à l'aide d'un champ commun.

L'instruction SELECT doit contenir une contrainte sur la correspondance des valeurs d'une colonne (champ) spécifique. Ensuite, seules les lignes dans lesquelles les valeurs de la colonne spécifiée correspondent seront extraites des tables associées. Le nom de la colonne est indiqué uniquement avec le nom de la table ; sinon la déclaration sera ambiguë.

Vous pouvez utiliser d'autres types de liaison de tables : l'opérateur INTER JOIN garantit que l'ensemble d'enregistrements résultant contient des valeurs correspondantes dans les champs associés. Les jointures externes (OUTER JOIN) permettent d'inclure dans le résultat de la requête toutes les lignes d'une table et les lignes correspondantes d'une autre.

Contrôle d'accès. SQL assure la synchronisation du traitement de la base de données par divers programmes d'application, protégeant ainsi les données contre tout accès non autorisé.

L'accès aux données dans un environnement multi-utilisateurs est contrôlé à l'aide des instructions GRANT et REVOKE. Dans chaque instruction, il est nécessaire de spécifier l'utilisateur, l'objet (table, vue) par rapport auquel les autorisations sont définies et les autorisations elles-mêmes. Par exemple, l'instruction GRANT donne à l'utilisateur X la possibilité de récupérer des données de la table PRODUCT :

OCTROYER UNE SÉLECTION SUR LE PRODUIT À X

L'instruction REVOKE révoque toutes les autorisations précédemment accordées.

Intégration de SQL dans les programmes d'application. Les applications réelles sont généralement écrites dans d'autres langages qui génèrent du code SQL et le transmettent au SGBD sous forme de texte ASCII.

La norme IBM pour les produits SQL réglemente l'utilisation du langage SQL intégré. Lors de l'écriture d'un programme d'application, son texte est un mélange de commandes du langage de programmation principal (par exemple C, Pascal, Cobol, Fortran, Assembler) et de commandes SQL avec un préfixe spécial par exemple. ExecSQL. La structure des instructions SQL a été étendue pour prendre en charge les variables du langage hôte dans une construction SQL.



Le processeur SQL modifie le type de programme en fonction des exigences du compilateur du langage de programmation principal. La fonction du compilateur est de traduire (traduire) un programme du langage de programmation source vers un langage proche du langage machine. Après compilation, le programme d'application (application) est un module indépendant.

Dialectes SQL

Les SGBD relationnels modernes utilisent des dialectes du langage SQL pour décrire et manipuler les données. Un sous-ensemble du langage SQL qui permet de créer et de décrire une base de données est appelé DDL (Data Definition Language).

Initialement, le langage SQL s'appelait SEQUEL (Structured English Query Language), puis SEQUEL/2, et enfin simplement SQL. Aujourd'hui, SQL est le standard de facto pour les SGBD relationnels.

Le premier standard de langage est apparu en 1989 - SQL-89 et était pris en charge par presque tous les SGBD relationnels commerciaux. Il était de nature générale et sujet à une interprétation large. Les avantages de SQL-89 peuvent être considérés comme la standardisation de la syntaxe et de la sémantique des opérateurs d'échantillonnage et de manipulation des données, ainsi que la fixation de moyens pour limiter l'intégrité de la base de données. Cependant, il manquait une section aussi importante que la manipulation du schéma de base de données. Le caractère incomplet de la norme SQL-89 a conduit à son apparition en 1992. la prochaine version du langage SQL.

SQL2 (ou SQL-92) couvre presque toutes les problématiques nécessaires : manipulation des schémas de bases de données, gestion des transactions et des sessions, support des architectures client-serveur ou des outils de développement d'applications.

La prochaine étape du développement du langage est la version SQL 3. Cette version du langage est complétée par un mécanisme de déclenchement, la définition d'un type de données arbitraire et une extension d'objet.

Actuellement, il existe trois niveaux de langue : débutant, intermédiaire et complet. De nombreux fabricants de leurs SGBD utilisent leurs propres implémentations SQL, basées au moins sur le niveau initial de la norme ANSI correspondante, et contenant quelques extensions spécifiques à un SGBD particulier. Dans le tableau 4.9 fournit des exemples de dialectes SQL.

Tableau 4.9 Dialectes SQL

SGBD Langage de requête
SGBD Système R SQL
DB2 SQL
Accéder SQL
SYBASE SQL partout Watcom-SQL
SYBASE SQL Serveur Transact_SQL
Mon SQL SQL
Oracle PL/SQL

Les bases de données orientées objet utilisent le langage de requête d'objet OQL (Object Query Language). Le langage OQL était basé sur la commande SELECT du langage SQL2 et ajoutait la possibilité de diriger une requête vers un objet ou une collection d'objets, ainsi que la possibilité d'appeler des méthodes au sein d'une seule requête.

La compatibilité de nombreux dialectes SQL utilisés détermine la compatibilité du SGBD. Ainsi, le SGBD SYBASE SQL Anywhere est aussi compatible que possible pour un SGBD de cette classe avec le SGBD SYBASE SQL Server. L'un des aspects de cette compatibilité est la prise en charge dans SYBASE SQL Anywhere d'un dialecte du langage SQL tel que Transact-SQL. Ce dialecte est utilisé dans SYBASE SQL Server et peut être utilisé dans SYBASE SQL Anywhere avec le dialecte SQL natif - Watcom-SQL.

Questions de sécurité

1. Comment classifier un SGBD ?

2. Quels modèles de bases de données existent ?

3. Quels sont les principaux éléments des modèles d'information ?

4. Quels types de relations existent entre les entités ?

5. Que sont les diagrammes ER et à quoi servent-ils ?

6. Que permet la procédure de normalisation des tables ?

7. Quels sont le langage et les outils logiciels du SGBD ?

8. De quel type de SGBD MS Access s’agit-il ?

9. Quels sont les principaux objets du SGBD MS Access ?

10. A quoi servent les principaux opérateurs SQL ?

Langage de requête structuré ou SQL est un langage de programmation déclaratif destiné à être utilisé dans les bases de données quasi-relationnelles. La plupart des fonctionnalités originales de SQL proviennent du calcul des tuples, mais les extensions récentes de SQL incluent de plus en plus d'algèbre relationnelle.
SQL a été créé à l'origine par IBM, mais de nombreux fournisseurs ont développé leurs propres dialectes. Il a été adopté comme norme par l’American National Standards Institute (ANSI) en 1986 et l’ISO en 1987. Dans la norme du langage de programmation SQL, l'ANSI a déclaré que la prononciation officielle de SQL est « es q el ». Cependant, de nombreux spécialistes des bases de données ont utilisé la prononciation « d'argot » « Sequel », qui reflète le nom original du langage, Sequel, qui a ensuite été modifié en raison d'un conflit de marque et de nom avec IBM. Programmation pour débutants.
Langage de programmation SQL a été révisé en 1992 et cette version est connue sous le nom de SQL-92. 1999 a ensuite été à nouveau révisé pour devenir SQL:1999 (AKA SQL3). Programmation pour les nuls. SQL 1999 prend en charge des objets qui n'étaient pas pris en charge auparavant dans d'autres versions, mais depuis fin 2001, seuls quelques systèmes de gestion de bases de données prenaient en charge les implémentations SQL : SQL 1999.
SQL, bien que défini comme ANSI et ISO, comporte de nombreuses variantes et extensions, dont la plupart ont leurs propres caractéristiques, telles que l'implémentation « PL/SQL » d'Oracle Corporation ou l'implémentation de Sybase et Microsoft appelée « Transact-SQL », ce qui peut prêter à confusion. ceux qui connaissent les bases de la programmation. Il n'est pas rare non plus que les implémentations commerciales omettent la prise en charge des principales fonctionnalités de la norme, telles que les types de données comme la date et l'heure, préférant certaines de leurs propres variantes. En conséquence, contrairement à ANSI C ou ANSI Fortran qui peuvent généralement être portés d'une plateforme à l'autre sans changements structurels majeurs, les requêtes du langage de programmation SQL peuvent rarement être portées entre différents systèmes de bases de données sans modifications significatives. La plupart des acteurs du secteur des bases de données pensent que ce manque de compatibilité est intentionnel, afin de fournir à chaque développeur son propre système de gestion de base de données et de lier l'acheteur à une base de données spécifique.
Comme son nom l'indique, le langage de programmation SQL est conçu à des fins spécifiques et limitées : interroger des données contenues dans une base de données relationnelle. En tant que tel, il s'agit d'un ensemble d'instructions de langage de programmation permettant de créer des échantillons de données, plutôt que d'un langage procédural tel que C ou BASIC, conçus pour résoudre un éventail beaucoup plus large de problèmes. Les extensions de langage telles que « PL/SQL » sont conçues pour résoudre cette limitation en ajoutant des éléments procéduraux à SQL tout en conservant les avantages de SQL. Une autre approche consiste à intégrer des commandes de langage de programmation procédurale dans des requêtes SQL et à interagir avec la base de données. Par exemple, Oracle et d'autres prennent en charge Java dans la base de données, tandis que PostgreSQL permet d'écrire des fonctions en Perl, Tcl ou C.
Une blague à propos de SQL : "SQL n'est ni structuré ni un langage." Le but de la blague est que SQL n'est pas un langage de Turing. .

Sélectionnez * dans T
C1 C2
1 un
2 b
C1 C2
1 un
2 b
Sélectionnez C1 dans T
C1
1
2
C1 C2
1 un
2 b
Sélectionnez * dans T où C1=1
C1 C2
1 un

Étant donné un tableau T, la requête Select * from T affichera tous les éléments de toutes les lignes du tableau.
A partir de la même table, la requête Select C1 from T affichera les éléments de la colonne C1 de toutes les lignes de la table.
A partir de la même table, la requête Select * from T which C1=1 affichera tous les éléments de toutes les lignes où la valeur de la colonne C1 est "1".

Mots-clés SQL

Les mots SQL sont divisés en plusieurs groupes.

Le premier est Langage de manipulation de données ou DML(langage de gestion de données). DML est un sous-ensemble du langage utilisé pour interroger les bases de données et ajouter, mettre à jour et supprimer des données.

  • SELECT est l'une des commandes DML les plus couramment utilisées et permet à l'utilisateur de spécifier une requête comme description définie du résultat souhaité. La requête ne précise pas comment les résultats doivent être organisés - traduire la requête sous une forme pouvant être exécutée dans la base de données est la tâche du système de base de données, plus spécifiquement de l'optimiseur de requêtes.
  • INSERT est utilisé pour ajouter des lignes (ensemble formel) à une table existante.
  • UPDATE est utilisé pour modifier les valeurs de données dans une ligne de tableau existante.
  • DELETE spécifie les lignes existantes qui seront supprimées de la table.

Trois autres mots-clés peuvent être considérés comme appartenant au groupe DML :

  • BEGIN WORK (ou START TRANSACTION, selon le dialecte SQL) peut être utilisé pour marquer le début d'une transaction de base de données qui se terminera entièrement ou ne se terminera pas du tout.
  • COMMIT indique que toutes les modifications de données apportées après l'exécution des opérations sont enregistrées.
  • ROLLBACK spécifie que toutes les modifications de données après la dernière validation ou restauration doivent être détruites, jusqu'au point qui a été enregistré dans la base de données comme « restauration ».

COMMIT et ROLLBACK sont utilisés dans des domaines tels que le contrôle et le verrouillage des transactions. Les deux instructions terminent toutes les transactions en cours (ensembles d'opérations sur la base de données) et suppriment tous les verrous sur la modification des données dans les tables. La présence ou l'absence d'une instruction BEGIN WORK ou similaire dépend de l'implémentation SQL particulière.

Le deuxième groupe de mots-clés appartient au groupe Langage de définition de données ou DDL (langage de définition de données). DDL permet à l'utilisateur de définir de nouvelles tables et leurs éléments associés. La plupart des bases de données SQL commerciales possèdent leurs propres extensions DDL qui permettent de contrôler des éléments non standard, mais généralement vitaux, d'un système particulier.
Les points principaux du DDL sont les commandes de création et de suppression.

  • CREATE spécifie les objets (tels que les tables) qui seront créés dans la base de données.
  • DROP spécifie quels objets existants dans la base de données seront supprimés, généralement de manière permanente.
  • Certains systèmes de bases de données prennent également en charge la commande ALTER, qui permet à l'utilisateur de modifier un objet existant de différentes manières, par exemple en ajoutant des colonnes à une table existante.

Le troisième groupe de mots-clés SQL est Langage de contrôle de données ou DCL (Data Control Language). DCL est responsable des droits d'accès aux données et permet à l'utilisateur de contrôler qui a accès pour afficher ou manipuler les données dans la base de données. Il y a deux mots-clés principaux ici :

  • GRANT - permet à l'utilisateur d'effectuer des opérations
  • REVOKE - Supprime ou restreint la capacité de l'utilisateur à effectuer des opérations.

Systèmes de bases de données utilisant SQL

  • InterBase
  • MySQL
  • Oracle
  • PostgreSQL
  • Serveur SQL

Comment devenir un professionnel du développement de sites Web et commencer à gagner de l’argent ? Cours vidéo bon marché avec une introduction introductive.



Des questions ?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :