Non classé

Comment apprendre SQL

collation et SQL

De nos jours, il est relativement facile de commencer à apprendre le langage SQL. De nombreuses ressources sont faciles à trouver en effectuant une recherche sur le web si vous souhaitez apprendre le langage SQL. La plupart des fournisseurs de SGBDR partagent de la documentation sur leur dialecte SQL, qui comprend souvent des tutoriels. SQL est très standardisé, mais la plupart des fournisseurs ont des extensions propriétaires dont vous devez être conscient. L'utilisation de ces extensions rend les migrations complexes. Les domaines où l'on trouve le plus de différences sont le langage procédural et les fonctions avancées. Les extensions propres aux fournisseurs ne sont généralement pas bien documentées, car ils souhaitent conserver leurs clients le plus longtemps possible.

Pourquoi apprendre SQL ?

SQL est utilisé depuis les années 1980 et il n'y a pas de successeur probable dans un avenir prévisible. Il ne s'agit donc pas d'un ensemble de compétences qui deviendra obsolète au cours de votre carrière. Les bases de données relationnelles sont les SGBD les plus courants sur le marché. Le SGBDR a évolué pendant des décennies pour s'adapter aux nouveaux types de données, formats de données, plateformes et méthodes d'accès, ce qui rend les compétences SQL très pertinentes. Les compétences en SQL sont appréciées dans de nombreuses disciplines, notamment le développement de logiciels, l'administration informatique, l'automatisation du marketing et l'informatique décisionnelle. informatique décisionnelle et l'informatique décisionnelle. Cette polyvalence fait de SQL une compétence transférable et recherchée. L'informatique décisionnelle se démocratisant de plus en plus et étant utilisée au-delà de l'informatique, SQL peut être considéré comme une compétence commerciale et informatique.

Illustration du monde à travers une loupe avec une femme assise sur le bord. Regardez de plus près comment apprendre SQL

Qui doit apprendre SQL ?

De nombreuses fonctions commerciales nécessitent des compétences en SQL. Les fonctions techniques telles que le développement de logiciels et les administrateurs de bases de données (DBA) doivent posséder des compétences en SQL pour être efficaces. Les fonctions telles que les opérations de vente, qui utilisent largement les rapports dans des outils tels que Salesforce, constatent que la connaissance du langage SQL facilite grandement l'établissement de rapports car, sous le manteau, Salesforce utilise de nombreuses requêtes SQL. Les analystes commerciaux qui travaillent pour des cadres ou dans des secteurs d'activité utilisent largement des outils bi tels que Qlik Sense, Tableau et Power BI pour visualiser les données afin de montrer les performances de l'entreprise. Les administrateurs informatiques qui utilisent des produits tels que System Center doivent connaître SQL, car SQL Server est la base de données de gestion Embarqué .

Illustration de personnes travaillant sur des silos de données. Apprendre le langage SQL

De quoi avez-vous besoin pour apprendre SQL ?

Le langage SQL est utilisé pour gérer les données stockées dans un ensemble de tables reliées entre elles. L'algèbre relationnelle est la base de l'interaction à un bas niveau dans la base de données. En tant qu'utilisateur du langage SQL, il est très utile de visualiser la base de données comme un ensemble de tables connexes composées de lignes et de colonnes. Il peut être utile de visualiser les relations à l'aide d'un diagramme de Venn. Comprendre la modélisation des données est une excellente condition préalable à l'apprentissage du langage SQL. Cela vous aide à comprendre pourquoi les données sont structurées de cette manière. Le langage SQL n'est pas aussi difficile à apprendre qu'un langage de programmation traditionnel car il est déclaratif. Vous indiquez simplement à la base de données les données que vous voulez, et elle se charge de les obtenir.

Si vous voulez savoir comment fonctionne un SGBDR , beaucoup offrent la possibilité de visualiser les plans d'exécution des requête ou les profileurs de requête . Ces plans d'exécution des requête vous indiquent, par exemple, quand un balayage complet de la table est effectué parce qu'une table n'a pas d'index approprié ou qu'elle est trop petite pour être indexée, et comment les ensembles de résultats intermédiaires sont fusionnés et triés quand un balayage de plage est effectué. La plupart des gens ne s'inquiètent de ces choses que si leurs requêtes tournent lentement ou si le service informatique se plaint d'une utilisation inefficace des ressources, ce qui peut être coûteux si l'on utilise un service en nuage externe qui facture les cycles du processeur .

Illustration de trois centres de stockage de données. Venez lire comment apprendre SQL

Combien de temps faut-il pour apprendre SQL ?

Les compétences SQL de base peuvent être acquises en quelques jours. Les jointures complexes et les requêtes imbriquées peuvent prendre des semaines à apprendre. L'optimisation d'une base de données peut prendre des années à maîtriser. De nombreux systèmes de base de données d'entreprise modernes offrent des outils qui rendent le réglage beaucoup plus simple. De nombreux services modernes de bases de données en nuage offrent une mise à l'échelle élastique pour automatiser la parallélisation des opérations SQL afin de maintenir des temps de réponse courts, même si vous devez manipuler des téraoctets de données.

Ensemble d'appareils multiples connectés à un stockage de données en nuage. Savez-vous comment apprendre SQL

Où puis-je l'apprendre ?

La Code Academy est un point de départ populaire pour l'apprentissage de SQL.

Codecademy est très intuitif, il vous enseigne la syntaxe SQL et vous donne la possibilité d'essayer par vous-même. Il s'agit également d'une excellente ressource pour établir une correspondance entre les parcours professionnels et les cours requis pour des parcours spécifiques.

Il existe des options supplémentaires pour spécifier les actions référentielles, les séquences et le partitionnement, qui sont décrites sur le site web Actian Documentation.

Si vous souhaitez disposer d'un outil simple à utiliser pour apprendre les différentes variantes de SQL par fournisseur, W3 School est une excellente ressource.

Illustration d'une femme travaillant au sommet d'un silo de données. Il est temps d'apprendre SQL

Quel SQL apprendre

Les aspects du langage SQL que vous devez apprendre dépendent de votre fonction. Si votre rôle consiste à analyser des données, l'apprentissage de toutes les variantes de l'instruction SELECT est le meilleur point de départ. Passez ensuite à la compréhension des vues et des index. Si vous disposez des autorisations nécessaires pour créer des objets, il peut être très utile d'expérimenter votre propre schéma.

Si vous travaillez dans le domaine du développement de logiciels, vous devez apprendre à concevoir des bases de données avant de vous plonger dans le langage SQL. Vous pouvez avoir besoin de compétences spécialisées dans l'écriture de fonctions utilisateur et de procédures SQL afin de pouvoir stocker et exécuter le code de l'application à proximité des données sur lesquelles il opère.

En tant qu'administrateur de bases de données, vous devrez commencer par suivre un cours d'administration de bases de données. Ce cours vous apprend à créer une base de données, à ajouter des utilisateurs, à charger des données et à récupérer une sauvegarde.

La description de la déclaration SELECT ci-dessous a pour but de montrer la puissance et la portée de cette déclaration de requête .

Si, par exemple, vous voulez savoir qui est le client 10 dans la table CLIENTS. Vous pouvez utiliser l'instruction ci-dessous :

SELECT CUSTOMER-NAME FROM CUSTOMERS WHERE CUSTOMER-ID =10 ;

Si la table contient une colonne ETAT, l'instruction SQL suivante ne récupérera que les clients du Colorado :

SELECT * FROM CUSTOMERS WHERE STATE = 'CO' ;

Plusieurs tables peuvent être reliées entre elles en partageant des colonnes communes. Ces colonnes peuvent éventuellement être indexées pour permettre un accès plus rapide.
Les tables peuvent être jointes logiquement au moment de l'exécution, et la nature de la jointure peut être exprimée en SQL.

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, ainsi que les enregistrements qui satisfont à la condition de la table de gauche.

Les tables peuvent être reliées entre elles par des relations de clés primaires et étrangères. Par exemple, une table de clients peut avoir pour clé primaire l'identifiant du client. Une table Commandes contenant une colonne ID-Client sera considérée comme une clé étrangère dans cette table.

Les clés primaires sont généralement indexées et contiennent des valeurs uniques.

Les applications utilisent SQL pour récupérer et insérer des données dans des bases de données, y compris des bases de données distribuées.

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

  • 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.

Les commentaires en SQL aident à la compréhension et à la maintenance des applications. Vous trouverez ci-dessous des exemples de commentaires sur une ou plusieurs lignes :

- Voici mon commentaire

/* Ceci est
ligne multiple
commentaire */

Il est utile de visualiser le schéma d'une base de données à l'aide d'un diagramme de Venn, en particulier lors de l'utilisation d'opérateurs d'ensemble tels que UNION, INTERSECT et EXCEPT dans les instructions SELECT.

  • UNION - Cet opérateur est utilisé pour combiner l'ensemble des résultats de deux ou plusieurs instructions SELECT.
    Exemple :
SELECT Columns FROM Table1
UNION
SELECT Columns FROM Table2 ;
  • INTERSECT - Cette clause est utilisée pour combiner deux instructions SELECT et renvoyer l'intersection des ensembles de données des deux instructions SELECT.
    Exemple :
SELECT Column1 , Column2 ....
FROM NomTable
WHERE Condition
INTERSECT
SELECT Colonne1, Colonne2 ....
FROM Nom de la table
WHERE Condition
  • SAUF - Cet opérateur renvoie les lignes 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 ;

Les expressions de cas fournissent une capacité de décodage qui permet de transformer une expression en une autre. Les expressions de casse peuvent apparaître partout où d'autres formes d'expressions peuvent être utilisées.

Il existe deux formes d'expressions de cas :

  • Simple
  • Recherché

La syntaxe d'une expression de cas simple est la suivante :

CASE expr WHEN expr1 THEN expr2 WHEN expr3 THEN expr4... [ELSE exprn] END

L'expression initiale du cas est comparée tour à tour aux expressions de chaque clause WHEN. Le résultat du cas est l'expression de la clause THEN correspondant à la première clause WHEN, dont l'expression est égale à l'expression du cas. Si aucune des expressions WHEN ne correspond à l'expression du cas, le résultat est la valeur de l'expression de la clause ELSE. S'il n'y a pas de clause ELSE, le résultat est la valeur nulle.

La syntaxe de l'expression de la casse recherchée est la suivante :

CASE WHEN search_conditon1 THEN expr1 WHEN search_expression2 THEN expr2...[ELSE exprn] END

Les conditions de recherche de chaque clause WHEN sont évaluées à tour de rôle. Le résultat du cas est l'expression de la clause THEN correspondant à la première clause WHEN dont la condition de recherche est évaluée comme vraie. Si aucune des conditions de recherche de la clause WHEN n'est évaluée comme vraie, le résultat est la valeur de l'expression de la clause ELSE. S'il n'y a pas de clause ELSE, le résultat est la valeur nulle.

Au-delà de la déclaration SELECT

Une fois l'instruction SELECT maîtrisée, les instructions SQL ci-dessous permettent de créer et de modifier des objets contenus dans la base de données :

Voici quelques exemples d'instructions SQL :

  • CREATE TABLE - permet de créer un objet table.
  • 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 rapidement le contenu d'une table.

La plus complexe des instructions ci-dessus est CREATE TABLE. Elle est expliquée plus en détail ci-dessous :

Création d'un tableau

La syntaxe de l'instruction CREATE TABLE peut être aussi simple que l'exemple ci-dessous :

CREATE TABLE DEPT (Dept-ID int, Dept-Name varchar(255), Dept-Cost-Center int ) ;

Vous pouvez créer des tableaux en utilisant un autre tableau comme modèle. Par exemple, le tableau ci-dessous ne contient que des lignes relatives au département ID 10 :

CREATE TABLE DEPARTMENT-10 AS SELECT * FROM DEPARTMENTS WHERE Department-ID = 10 ;

La syntaxe CREATE TABLE suivante concerne une base de données Actian, qui a le format suivant :

CREATE TABLE [schema.]nom_de_table (column_specification {, column_specification })
[contrainte_table {, contrainte_table}] [avec_clause]
  • table_name - Définit le nom de la nouvelle table.
  • column_specification - Définit les caractéristiques de la colonne.
  • table_constraint - Spécifie la contrainte de niveau table telle que décrite dans Contraintes de niveau table et colonne.
  • with_clause - Spécifie les options de la clause WITH séparées par une virgule. Pour plus d'informations, voir Clause WITH.

Spécification de la colonne

La spécification de colonne dans une instruction CREATE TABLE définit les caractéristiques d'une colonne dans la table.

La spécification de la colonne a le format suivant : nom_de_la_colonne type de données

[[WITH] DEFAULT default_spec | WITH DEFAULT | NOT DEFAULT] [WITH NULL | NOT NULL] [MASKED [AS {BASIC | NULL | 0 | ' ' }] [GENERATED ALWAYS AS [seq_name] IDENTITY [(seq_options)] | GENERATED BY DEFAULT AS [seq_name] IDENTITY [(seq_options)]] [[CONSTRAINT constraint_name] column_constraint { [CONSTRAINT constraint_name] column_constraint}]] [[CONSTRAINT constraint_name] column_constraint}]] [CONSTRAINT constraint_name [[CONSTRAINT nom_de_la_contrainte_de_la_colonne { [CONSTRAINT nom_de_la_contrainte_de_la_colonne}]]
  • column_name - Attribue un nom valide (voir les règles de dénomination des objets) à la colonne.
  • datatype - Attribue un type de données valide à la colonne.
  • Clause DEFAULT - Indique si la colonne est obligatoire.
  • AVEC NULL | NON NULL - Indique si la colonne accepte les zéros :
    • WITH NULL - (Par défaut) Indique que la colonne accepte les valeurs nulles. Si aucune valeur n'est fournie par l'utilisateur, null est inséré.
    • NOT NULL - Indique que la colonne n'accepte pas les valeurs nulles.
  • [MASKED [AS {BASIC | NULL | 0 | ‘ ‘ }] – Displays the column with the specified mask characteristic. The mask characteristic defines how to display the masked data:
  • BASIC - Remplit la largeur de la colonne avec des astérisques
  • NULL - NULL
  • 0 - 0
  • ' ' - vide
GENERATED ALWAYS AS [seq_name] IDENTITY [(seq_options)] | GENERATED BY DEFAULT AS [seq_name] IDENTITY [(seq_options)]

Indique que la colonne est une colonne IDENTITY. La colonne doit être définie comme un entier ou un bigint.

[CONSTRAINT nom_de_la_contrainte] contrainte_de_la_colonne

Spécifie les contrôles à effectuer sur le contenu de la colonne pour garantir des valeurs de données appropriées.

Clause DEFAULT - La clause WITH|NOT DEFAULT de la spécification de la colonne spécifie si une colonne nécessite une entrée.

Cette clause a le format suivant :

[WITH] DEFAULT default_spec | WITH DEFAULT | NOT DEFAULT

[WITH] DEFAULT default_spec - Indique que si aucune valeur n'est fournie (parce qu'aucune n'est requise), Actian insère la valeur par défaut. La valeur par défaut doit être compatible avec le type de données de la colonne.

Pour les colonnes de caractères, les valeurs par défaut valables comprennent les constantes : utilisateur, CURRENT_USER et SYSTEM_USER.

Pour les colonnes booléennes, les valeurs par défaut valides sont FALSE ou TRUE.

AVEC DEFAUT - Indique que si aucune valeur n'est fournie, Actian insère 0 pour les colonnes numériques et monétaires, une chaîne vide pour les colonnes de caractères, la date actuelle pour les colonnes de dates ANSI et l'horodatage actuel pour les colonnes d'horodatage.

NOT DEFAULT - Indique que la colonne est obligatoire (qu'elle doit être renseignée).

Voici un exemple d'utilisation de la clause DEFAULT:

CREATE TABLE DEPT(dname CHAR(10),
    location   CHAR(10)  DEFAULT 'CO',
    création   DATE      DEFAUT '01/01/22',
    budget     MONEY     DEFAULT 10000) ;

Contraintes

Pour vous assurer que le contenu des colonnes répond aux exigences de votre base de données, spécifiez des contraintes.

Les contraintes peuvent être spécifiées pour des colonnes individuelles ou pour l'ensemble du tableau. Pour plus d'informations, voir Contraintes au niveau de la table et au niveau de la colonne.

Les types de contraintes sont les suivants :

  • Contrainte d'unicité - Assure qu'une valeur n'apparaît qu'une seule fois dans une colonne. Les contraintes uniques sont spécifiées à l'aide de l'option UNIQUE.
  • Contrainte de référence - Assure qu'une valeur attribuée à une colonne apparaît dans une colonne correspondante d'une autre table. Les contraintes référentielles sont spécifiées à l'aide de l'option REFERENCES.
  • Contrainte de clé primaire - Déclare une ou plusieurs colonnes à utiliser dans des contraintes référentielles dans d'autres tables. Les clés primaires doivent être uniques.

Contraintes au niveau des tables et des colonnes

Les contraintes peuvent être spécifiées pour des groupes de colonnes dans le cadre de la définition de la table (contraintes au niveau de la table) ou pour des colonnes individuelles dans le cadre de la spécification de la colonne (contraintes au niveau de la colonne).

La contrainte a la syntaxe suivante :

[CONSTRAINT nom_de_la_contrainte] contrainte

  • constraint_name - Définit un nom pour la contrainte. Si le nom est omis, plateforme de données Actian en attribue un. Le nom de la contrainte est utilisé pour supprimer la contrainte à l'aide de l'instruction ALTER TABLE.
  • constraint - Il s'agit soit d'une contrainte au niveau de la table (table_constraint), soit d'une contrainte au niveau de la colonne (column_constraint).

table_constraint est un ou plusieurs des éléments suivants :

UNIQUE (nom_de_colonne {, nom_de_colonne}) PRIMARY KEY (nom_de_colonne {, nom_de_colonne}) REFERENCES [schema.]nom_de_table [(nom_de_colonne {, nom_de_colonne})] [enforce_option] [referential_actions]

column_constraint est un ou plusieurs des éléments suivants :

  • UNIQUE
  • CLÉ PRIMAIRE
  • FOREIGN KEY (nom_de_colonne {, nom_de_colonne})
  • REFERENCES [schema.]nom_de_table[(nom_de_colonne)] [enforce_option] [referential_actions]

où :

  • enforce_option - Indique si les contraintes sont appliquées. Les valeurs valides sont les suivantes :
    • NOT ENFORCED - N'applique pas la contrainte lorsqu'elle est définie ou lorsque la table est mise à jour. Les index ne sont pas créés pour les contraintes NOT ENFORCED.
    • ENFORCED - (Par défaut) Applique la contrainte.

Il existe des options supplémentaires pour spécifier les actions référentielles, les séquences et le partitionnement, qui sont décrites sur le site web Actian Documentation.