SQL

SQL : Tout ce qu'il faut savoir

collation et SQL

L'histoire de SQL

Le laboratoire IBM de Santa Teresa a publié en 1970 la conception d'un système de gestion de base de données relationnelles SGBDR) appelé System R, dont l'auteur est Edgar Frank Codd. Le schéma de la base de données comprenait plusieurs tables liées, composées de lignes et de colonnes. Les tables étaient initialement manipulées et interrogées à l'aide d'une forme d'algèbre relationnelle. Donald Chamberlin et Raymond Boyce ont développé le premier langage procédural conçu pour le SGBDR, appelé SEQUEL. Ce langage a ensuite été abrégé en SQL, abréviation de Structured requête Language (langage de requête structuré), à la suite d'un litige portant sur la marque déposée. Le langage SQL comporte des sous-ensembles permettant de modifier et de créer des objets de base de données tels que des tables et des vues, y compris le langage de définition des données (DDL). Le rôle principal du langage SQL est de requête tables, de supprimer, de mettre à jour et d'insérer des lignes de données. En 1986, SQL est devenu une norme ANSI et ISO/CEI que de nombreux fournisseurs ont mise en œuvre. Actian est encore aujourd'hui un membre actif de l'organisme de normalisation afin que sa technologie de base de données relationnelle, telle que la plateforme de données Actian, soit alignée sur les normes SQL.

Le premier SGBDR commercial d'IBM était SQL/DS, qui fonctionnait sur des ordinateurs centraux. IBM a ensuite publié une version de son SGBDR DB2 qui fonctionnait sur des ordinateurs centraux et des systèmes basés sur Unix. Oracle a créé le premier SGBDR commercial fonctionnant sur plusieurs systèmes d'exploitation tels que VM, MVS, VMS, Windows, Linux et Solaris. L'équipe de Richard Stonebreaker aux laboratoires de Berkeley en Californie a abouti à la création des bases de données Ingres, Informix et Sybase qui ont d'abord été utilisées sur des mini-ordinateurs et des systèmes Unix tels que Sun Solaris. Ingres a été le premier SGBDR à support requêtes distribuées. Le premier SGBDR en grappe fonctionnait sur DEC VMS. Microsoft SQL Server a été développé à partir d'une base de code sous licence de Sybase.

Avant que la technologie SGBDR ne devienne courante, les bases de données utilisaient des méthodes d'accès pour récupérer les enregistrements stockés à l'aide d'index, de listes liées d'enregistrements ou de hiérarchies liées d'enregistrements. Les bases de données relationnelles étant devenues populaires, les bases de données non relationnelles ont été dotées d'un accès SQL pour faciliter les requête personnes ayant des compétences en SQL. IDMS-R, une base de données en réseau, et Actian Vector, un magasin de données en colonnes, en sont des exemples.

La technologie SGBDR s'oriente de plus en plus vers les plateformes en nuage, où se concentre la majeure partie de la croissance du marché des bases de données.

Qu'est-ce que SQL ?

Le langage SQL permet d'extraire facilement des données d'une base de données à l'aide d'un ensemble standard d'opérateurs permettant de stocker, de manipuler et d'extraire des données des bases de données. Par exemple, l'instruction SELECT * FROM CUSTOMERS récupère toutes les lignes et colonnes de la table CUSTOMERS. Des prédicats tels que la clause WHERE peuvent être utilisés pour spécifier des sous-ensembles de données. Si la table contient une colonne STATE, l'instruction SQL suivante ne récupérera que les clients de Californie :

SELECT * FROM CUSTOMERS WHERE STATE = 'CA'

Plusieurs tables peuvent être reliées entre elles en les concevant avec des colonnes clés communes. Un processus de conception de base de données est utilisé pour établir des relations entre les objets de la base de données, ce qui permet d'interroger les données de plusieurs tables à l'aide d'une seule instruction SQL. Par exemple, la colonne STATE peut être commune à la table CUSTOMERS et à la table ORDERS, ce qui vous permet d'extraire les commandes liées à des états spécifiques ou de regrouper les résultats par état dans votre rapport.

Joints SQL

Lors de la conception d'un schéma de base de données, il est judicieux d'organiser les tables afin d'obtenir la plus grande souplesse possible pour les requêtes. La normalisation est le terme utilisé pour décrire le processus d'optimisation du nombre de tables et de la manière dont elles sont reliées, en minimisant la duplication des données. Deux tables ou vues ou plus peuvent être référencées dans une seule instruction SQL SELECT en effectuant une jointure de table. Les tables doivent être reliées entre elles par une colonne de clé commune.

Voici les types de jointures où la gauche et la droite correspondent à l'ordre des tables nommées dans l'instruction SELECT :

JOINTE INNER : cette jointure renvoie les enregistrements dont les valeurs correspondent dans les deux tables.

JOINTE COMPLÈTE : cette jointure renvoie tous les enregistrements qui ont une correspondance dans la table de gauche ou de droite.

JOINTE DE GAUCHE : ce type de jointure renvoie les enregistrements de la table de gauche, ainsi que les enregistrements qui satisfont aux conditions de la table de droite.

JOINTE DE DROITE : ce type de jointure renvoie les enregistrements de la table de droite et ceux qui satisfont à la condition de la table de gauche.

Pour comprendre les clauses JOIN, vous devez vous familiariser avec les clés et les clés étrangères, ainsi qu'avec les relations entre les tables. Par exemple, une table de clients peut avoir pour clé primaire l'identifiant du client. Une table Orders contenant une colonne Customer-ID sera considérée comme une clé étrangère dans cette table.

Chaque table que vous souhaitez utiliser dans les relations doit avoir une contrainte de clé primaire.

ou une combinaison de champs définie par une expression. Par exemple, un champ ou une combinaison de champs définis par une expression :

CREATE TABLE customer (

    Customer-ID int NOT NULL PRIMARY KEY,

    Nom du client char (60),

    ...

Chaque table qui doit être liée à la table des clients doit avoir un champ correspondant à la clé primaire Customer-ID et, pour préserver l'intégrité relationnelle, ce champ doit avoir une contrainte de clé étrangère. Pour préserver l'intégrité relationnelle, ce champ doit avoir une contrainte de clé étrangère :

CREATE TABLE Orders (

    Customer-ID int NOT NULL PRIMARY KEY,

    ...

    Customer-ID int FOREIGN KEY REFERENCES Customer(Customer-ID)

) ;

Les clés primaires sont toujours indexées et uniques, ce qui signifie que les valeurs des clés ne peuvent pas être dupliquées. Les autres champs peuvent être indexés de manière facultative. Il est souvent utile de créer des index pour les champs de clés étrangères et pour les champs qui apparaissent dans les clauses WHERE et ORDER BY, mais pas toujours, en raison de la surcharge potentielle liée aux écritures et aux mises à jour qui doivent mettre à jour les index.

La requête ci-dessous permet de retrouver toutes les commandes passées par Jim Clarks :

SELECT CustomerName, OrderID FROM customers

INNER JOIN Orders ON customer.Customer-ID = Orders.Customer-ID

WHERE CustomerName = "Jim Clarks" ;

En fait, il existe quatre types de JOIN : INNER, OUTER, LEFT et RIGHT. La JOIN INNER est la JOIN par défaut, le mot INNER peut donc être omis, et c'est celle qui n'inclut que les lignes qui contiennent des valeurs correspondantes dans les deux tables. Si vous souhaitez répertorier les clients, qu'ils aient ou non des commandes, vous utiliserez une JOINTE DE GAUCHE, par exemple :

SELECT CustomerName, OrderID FROM Customers

LEFT JOIN Orders ON Customer.Customer-ID = Orders.Customer-ID

ORDER BY CustomerName ;

Les outils bi populaires outils bi facilitent la jointure de plusieurs tables en écrivant le code SQL requis pour vous de manière graphique en glissant et déposant les tables et les champs sur un canevas.

À quoi sert SQL ?

L'utilisation la plus courante du langage SQL consiste à récupérer des données dans des bases de données. Les données peuvent être lues à partir d'une seule table ou vue, de plusieurs tables, dans une seule base de données ou dans plusieurs bases de données distribuées.

Outre l'instruction SELECT présentée dans la section précédente, voici un sous-ensemble d'instructions SQL et leur utilité :

  • CREATE DATABASE - crée une instance de base de données pour stocker des objets tels que des tables et des index.
  • CREATE TABLE - permet de créer une table de données
  • INSERT - permet d'insérer de nouvelles lignes dans un tableau
  • UPDATE - permet de modifier les données contenues dans une table de base de données.
  • DELETE - est utilisé pour supprimer des lignes de données
  • GRANT - est utilisé pour donner aux utilisateurs la permission de voir ou de modifier les objets de la base de données tels que les tables.
  • REVOKE - permet de retirer des autorisations à des utilisateurs ou à des groupes d'utilisateurs.
  • ALTER - permet à l'utilisateur d'ajouter ou de supprimer des colonnes d'un objet afin de mettre à jour les autorisations.
  • DROP TABLE - supprime une table
  • CREATE INDEX - crée un index pour permettre un accès efficace aux données à l'aide d'une clé-valeur.
  • TRUNCATE TABLE - permet à l'utilisateur de vider le contenu d'une table.

L'instruction SELECT peut contenir des fonctions d'agrégation, notamment :

  • COUNT() - renvoie le nombre total de lignes répondant aux critères de l'instruction.
  • MIN() - renvoie la plus petite valeur de l'ensemble de résultats
  • MAX() - renvoie la plus grande valeur de l'ensemble de résultats
  • AVG() - renvoie la moyenne des valeurs de l'ensemble de résultats
  • GROUP BY - regroupe les résultats en fonction de la valeur d'une colonne donnée.
  • ORDER BY - permet de trier les résultats en fonction de la colonne spécifiée.

Commentaires dans SQL

Les commentaires peuvent être sur une ou plusieurs lignes. Un commentaire sur une seule ligne commence par un double trait d'union, comme dans l'exemple ci-dessous :

-- Voici mon commentaire

Un commentaire sur plusieurs lignes est entouré d'une paire de /* et */, comme dans l'exemple ci-dessous :

/* Il s'agit d'une
plusieurs lignes
commentaire */

Opérations en série

Il existe principalement trois opérations d'ensemble : UNION, INTERSECT et EXCEPT.

UNION - Cet opérateur combine l'ensemble des résultats de deux ou plusieurs instructions SELECT.

Exemple :

SELECT Columns FROM Table1

UNION

SELECT Columns FROM Table2 ;

INTERSECT - Cette clause combine deux instructions SELECT et renvoie l'intersection des ensembles de données des deux instructions SELECT.

Exemple :

SELECT Colonne1 , Colonne2 ....

FROM NomTable

WHERE Condition

INTERSECT

SELECT Colonne1 , Colonne2 ....

FROM NomTable

WHERE Condition

SAUF - Cet opérateur renvoie les lignes qui sont renvoyées par la première opération SELECT et qui ne sont pas renvoyées par la deuxième opération SELECT.

Exemple :

SELECT NomColonne

FROM NomTable

SAUF

SELECT NomColonne

FROM NomTable ;

Qu'en est-il du code procédural ?

Qu'en est-il du code de procédure ?

Le langage SQL est avant tout un langage déclaratif. Il est parfois utile d'utiliser un code procédural dans un SGBDR. Les procédures exécutées dans la base de données peuvent par exemple consister à effectuer un calcul complexe ou à utiliser une procédure stockée avant ou après une opération telle qu'un INSERT ou un DELETE. Les procédures stockées sont généralement propriétaires à l'aide d'un langage interprété ou compilé en tant que fonction définie par utilisateur (UDF).

Comment accède-t-on à SQL ?

Les fournisseurs de SGBDR proposent généralement une interface de ligne de commande pour leur base de données, qui peut être utilisée dans un shell de commande ou dans un script de commande. Actian fournit une interface de niveau d'appel (CLI). Cette interface est généralement utile pour les administrateurs de base de données et les développeurs qui configurent une base de données ou qui effectuent des tâches de maintenance telles que la réalisation de sauvegardes ou la création de copies de la base de données à des fins de test.

L'interface ODBC permet à des applications existantes telles que Microsoft Excel d'utiliser Embarqué SQL pour récupérer des données de SQL Server et d'autres bases de données.

Les applications Java utilisent le pilote JDBC pour accéder aux bases de données en utilisant SQL.

Les développeurs d'applications utilisent des interfaces de programmation d'applications (API) pour intégrer Embarquer instructions SQL dans leurs applications, qui peuvent être écrites en C, Python ou COBOL, par exemple. Les lignes de la base de données peuvent être récupérées une à la fois, par lots ou par tableaux.

La plateforme de données Actian fournit un éditeur de requête basé sur le web pour faciliter la construction et l'exécution de requête SQL.

informatique décisionnelle Des outils tels que Looker, Tableau, Qlik Sense et Microsoft Power BI fournissent des outils visuels permettant d'écrire des instructions SQL pour créer des tableaux de bord qui peuvent accéder aux technologies de base de données de plusieurs fournisseurs. Toutes ces solutions BI peuvent être utilisées avec la plateforme de données Actian.

Quelle est la différence entre SQL et MySQL ?

SQL est un langage de requête normalisé conçu pour faciliter l'extraction de données d'une base de données à l'aide d'un ensemble standard d'opérateurs permettant de stocker, de manipuler et d'extraire des données d'une base de données. La différence entre SQL et MySQL est que MySQL n'est pas un langage de requête base de données mais un produit de base de données open-source.

Qu'est-ce qu'un serveur SQL ?

Sorti en 1989, SQL Server est le propre système de gestion de base de données relationnelles SGBDR de Microsoft. Il a été conçu comme une base de données complète pour concurrencer Oracle Database (DB) et MySQL.

SQL Server prend en charge ANSI SQL, le langage SQL standard, et contient T-SQL, sa propre implémentation SQL. SQL Server Management Studio (SSMS) est le principal outil d'interface de SQL Server. Microsoft SQL Server est parfois appelé MSSQL.

Microsoft SQL Server est proposé avec différents ensembles de fonctionnalités pour répondre aux besoins de SGBDR des petites entreprises comme des grandes.

Le langage SQL est-il facile à apprendre ?

Comme la plupart des compétences, le langage SQL de base peut être appris en quelques semaines, mais sa maîtrise peut prendre des mois. L'essentiel est de comprendre comment la base de données est conçue et quels sont les index existants afin de savoir quelles requêtes ont un sens. Il est également important d'apprécier les limites de la conception d'une base de données.

Bases de données transactionnelles et bases de données orientées vers l'Support décision

Une base de données transactionnelle optimisée pour la saisie des commandes peut comporter très peu d'index afin de garantir que les ressources de calcul disponibles puissent absorber des taux de transaction élevés. L'exécution de requêtes SQL complexes directement sur ces bases de données opérationnelles peut ralentir les transactions et avoir un impact sur les clients et le chiffre d'affaires. Si une prise de décision complexe est nécessaire, un entrepôt de données est mieux adapté. Un entrepôt de données est organisé de manière à support prise de décision; il comporte donc davantage d'index et une grande partie des données peut être pré-agrégée dans des vues afin d'accélérer les requêtes. L'entrepôt de données est alimenté à partir d'instantanés périodiques des bases de données opérationnelles ou est mis à jour en temps réel au fur et à mesure que les enregistrements changent dans le système opérationnel.

Où puis-je apprendre SQL ?

Il existe de nombreuses ressources et cours de programmation SQL en ligne.