L'instruction SQL SELECT

Récupération de données à l'aide de l'instruction SQL Select

SQL est un langage de base de données complet. SQL, prononcé Sequel ou simplement SQL, est un langage de programmation informatique utilisé pour interroger des bases de données relationnelles suivant une approche non procédurale. Lorsque vous extrayez des informations d'une base de données à l'aide de SQL, cela s'appelle interroger la base de données.

Une base de données relationnelle est mise en œuvre grâce à l'utilisation d'un système de gestion de base de données relationnelle (SGBDR). Un SGBDR exécute toutes les fonctions de base du logiciel SGBD mentionnées ci-dessus avec une multitude d'autres fonctions qui rendent le modèle relationnel plus facile à comprendre et à mettre en œuvre. Les utilisateurs du SGBDR manipulent les données à l'aide d'un langage de manipulation de données spécial. Les structures de base de données sont définies à l'aide d'un langage de définition de données. Les commandes que les utilisateurs du système exécutent pour stocker et récupérer des données peuvent être entrées sur un terminal avec une interface SGBDR en tapant les commandes, ou entrées en utilisant un certain type d'interface graphique. Le SGBD traite ensuite les commandes.

Capacités de l'instruction SELECT

La récupération des données à partir de la base de données se fait grâce à une utilisation appropriée et efficace de SQL. Trois concepts de la théorie relationnelle englobent la capacité de l'instruction SELECT: projection, sélection et jointure.

  • Projection: une opération de projet sélectionne uniquement certaines colonnes (champs) d'une table. La table de résultats contient un sous-ensemble des colonnes disponibles et peut inclure n'importe quoi, d'une seule colonne à toutes les colonnes disponibles.

  • Sélection: une opération de sélection sélectionne un sous-ensemble de lignes (enregistrements) dans une table (relation) qui satisfont à une condition de sélection. La possibilité de sélectionner des lignes à partir d'un jeu de résultats complet est appelée Sélection. Cela implique un filtrage conditionnel et un transfert de données. Le sous-ensemble peut aller de l'absence de lignes, si aucune des lignes ne satisfait la condition de sélection, à toutes les lignes d'une table.

  • Jointure: une opération de jointure combine les données de deux ou plusieurs tables en fonction d'une ou plusieurs valeurs de colonne courantes. Une opération de jointure permet à un utilisateur du système d'information de traiter les relations qui existent entre les tables. L'opération de jointure est très puissante car elle permet aux utilisateurs du système d'étudier les relations entre les éléments de données qui pourraient ne pas être anticipées au moment de la conception d'une base de données.

Considérez les structures de tableau ci-dessus. La récupération du nom du prénom, de l'id du service et du salaire d'un seul employé à partir de la table EMPLOYEES est une projection. La récupération des détails des employés dont le salaire est inférieur à 5000, à partir de la table EMPLOYEES, est Sélection. Récupérer le prénom de l'employé, le nom du service en rejoignant EMPLOYEES et DEPARTMENTS est en train de rejoindre.

Instruction SELECT de base

La syntaxe de base d'une instruction SELECT est présentée ci-dessous.

SELECT  [DISTINCT | ALL] {* | select_list}
FROM {table_name [alias] | view_name} 
    [{table_name [alias]  | view_name}]...  
[WHERE  condition]
[GROUP BY  condition_list]
[HAVING  condition]
[ORDER BY  {column_name | column_#  [ ASC | DESC ] } ...

La clause SELECT est obligatoire et exécute l'opération de projet relationnel.

La clause FROM est également obligatoire. Il identifie une ou plusieurs tables et / ou vues à partir desquelles récupérer les données de colonne affichées dans une table de résultats.

La clause WHERE est facultative et exécute l'opération de sélection relationnelle. Il spécifie les lignes à sélectionner.

La clause GROUP BY est facultative. Il organise les données en groupes par un ou plusieurs noms de colonne répertoriés dans la clause SELECT.

La clause facultative HAVING définit les conditions concernant les groupes à inclure dans une table de résultats. Les groupes sont spécifiés par la clause GROUP BY.

La clause ORDER BY est facultative. Il trie les résultats de la requête par une ou plusieurs colonnes dans l'ordre croissant ou décroissant.

Expressions arithmétiques et valeurs NULL dans l'instruction SELECT

Une expression arithmétique peut être créée à l'aide des noms de colonne, des opérateurs et des valeurs constantes pour incorporer une expression dans une instruction SELECT. L'opérateur applicable à une colonne dépend du type de données de la colonne. Par exemple, les opérateurs arithmétiques ne conviennent pas aux valeurs littérales de caractère. Par exemple,

SELECT employee_id, sal * 12 ANNUAL_SAL
FROM employees;

La requête ci-dessus contient l'expression arithmétique (sal * 12) pour calculer le salaire annuel de chaque employé.

Opérateurs arithmétiques

Les opérateurs agissent sur les colonnes (appelées opérandes) pour aboutir à un résultat différent. Dans le cas de plusieurs opérateurs dans une expression, l'ordre d'évaulation est décidé par la priorité des opérateurs. Voici les règles élémentaires de préséance -

  • La multiplication et la division se produisent avant l'addition et la soustraction.

  • Les opérateurs ayant la même priorité sont évalués de gauche à droite.

  • Utilisez des parethèses pour remplacer le comportement par défaut des opérateurs.

Le tableau ci-dessous montre la priorité des opérateurs, dans de tels cas. Fonctionnement du symbole de l'opérateur de niveau de priorité

Description   Operator	Precedence	   
Addition	+	Lowest	   
Subtraction	-	Lowest	   
Multiplication	*	Medium	   
Division	/	Medium	   
Brackets	( )	Highest

Examinez les requêtes ci-dessous (a), (b) et (c)

  • SQL> SELECT 2*35 FROM DUAL;
  • SQL> SELECT salary + 1500 FROM employees;
  • SQL> SELECT first_name, salary, salary + (commission_pct* salary) FROM employees;

La requête (a) multiplie deux nombres, tandis que (b) montre une addition de 1 500 $ aux salaires de tous les employés. La requête (c) montre l'ajout d'un composant de commission au salaire de l'employé. Selon la précédente, la première commission serait calculée sur le salaire, puis ajoutée au salaire.

Alias ​​de colonne

Un alias est utilisé pour renommer une colonne ou une expression lors de l'affichage. L'alias d'une colonne ou d'une expression apparaît comme en-tête dans la sortie d'une requête. Il est utile pour fournir un en-tête significatif aux expressions longues dans la requête SELECT. Par défaut, l'alias apparaît en majuscules dans la sortie de la requête sans espaces. Pour remplacer ce comportement, l'alias doit être placé entre guillemets pour conserver la casse et les espaces dans le nom de l'alias.

SELECT price * 2 as DOUBLE_PRICE, price * 10 "Double Price"
FROM products;

DOUBLE_PRICE	Double Price
------------	------------
39.9			39.9
60			60
51.98			51.98

Opérateurs de concaténation

L'opérateur de concaténation peut être utilisé pour joindre deux valeurs de chaîne ou expressions dans une requête SELECT. Le symbole de la double barre verticale est utilisé comme opérateur de concaténation de chaîne. Elle s'applique uniquement aux valeurs de colonne de caractère et de chaîne résultant en une nouvelle expression de caractère. Exemple

SQL> SELECT 'ORACLE'||' CERTIFICATION' FROM dual;

La requête ci-dessus montre la concaténation de deux valeurs littérales de caractères.

Littéraux

Toute valeur codée en dur, qui n'est pas stockée dans la base de données, dans la clause SELECT, est connue comme Literal. Il peut s'agir d'un nombre, d'un caractère ou d'une valeur de date. Les valeurs de caractère et de date doivent être placées entre guillemets. Considérez les requêtes SQL ci-dessous, des exemples d'utilisation de littéraux de différents types de données dans les requêtes SQL.

La requête ci-dessous utilise deux littéraux de caractères pour les joindre.

SQL> SELECT 'ORACLE'||' CERTIFICATION' FROM DUAL

La requête ci-dessous utilise des caractères littéraux pour afficher le salaire de l'employé.

SQL> SELECT first_name ||'earns'|| salary||' as of '|||sysdate
FROM employees

Opérateur de devis

L'opérateur de citation est utilisé pour spécifier le séparateur de guillemets de votre choix. Vous pouvez choisir un délimiteur pratique, en fonction des données.

SELECT 	department_name|| ' Department' ||q'['s Manager Id: ]'|| manager_id
FROM departments;

NUL

Si une colonne n'a pas de valeur définie, elle est considérée comme NULL. La valeur NULL indique inconnu ou indisponible. Ce n'est pas zéro pour les valeurs numériques, pas d'espace vide pour les valeurs de caractères.

Les colonnes avec une valeur NULL peuvent être sélectionnées dans une requête SELECT et peuvent faire partie d'une expression arithmétique. Toute expression arithmétique utilisant des valeurs NULL donne NULL. Pour cette raison, les colonnes avec une valeur NULL doivent être gérées différemment en spécifiant leurs valeurs alternatives à l'aide des fonctions fournies par Oracle telles que NVL ou NULLIF.

SQL> SELECT NULL + 1000 NUM 
FROM DUAL;

NUM
--------

Mot-clé DISTINCT

Si les données sont censées avoir des résultats en double, utilisez le mot clé DISTINCT pour éliminer les doublons et n'afficher que les résultats uniques dans la sortie de la requête. Seules les colonnes sélectionnées sont validées pour la duplication et les lignes seront logiquement éliminées de la sortie de la requête. Pour être noté, le mot clé DISTINCT doit apparaître juste après la clause SELECT.

La requête simple ci-dessous illustre l'utilisation de DISTINCT pour afficher des identifiants de service uniques à partir de la table EMPLOYEES.

SQL> SELECT DISTINCT DEPARTMENT_ID 
FROM employees;

DEPARTMENT_ID
---------------
10
20
30
40

Commande DESCRIBE

Les métadonnées structurelles d'une table peuvent être obtenues en interrogeant la base de données pour la liste des colonnes qui la composent à l'aide de la commande DESCRIBE. Il listera les noms de colonnes utilisés, leur propriété null et le type de données.

Syntax:

DESC[RIBE] [SCHEMA].object name

Par exemple,

DESC EMPLOYEE

affichera la structure de la table EMPLOYEE, c'est-à-dire les colonnes, leurs types de données, la précision et la propriété Nullable.