Maison / Navigateurs / Fonctions d'agrégation SQL - SUM, MIN, MAX, AVG, COUNT. Fonctions SQL intégrées Fonctions mathématiques Exemples de requêtes

Fonctions d'agrégation SQL - SUM, MIN, MAX, AVG, COUNT. Fonctions SQL intégrées Fonctions mathématiques Exemples de requêtes

Dernière mise à jour : 29/07/2017

Vous pouvez utiliser les fonctions suivantes pour travailler avec des chaînes dans T-SQL :

    LEN : Renvoie le nombre de caractères d'une chaîne. En paramètre, une chaîne est passée à la fonction, dont il faut trouver la longueur :

    SELECT LEN("Pomme") -- 5

    LTRIM : Supprime les espaces de début d'une chaîne. Il prend une chaîne en paramètre :

    SELECT LTRIM("Pomme")

    RTRIM : Supprime les espaces de fin d'une chaîne. Il prend une chaîne en paramètre :

    SELECT RTRIM("Pomme")

    CHARINDEX : renvoie l'index auquel la première occurrence d'une sous-chaîne dans une chaîne est trouvée. Le premier paramètre est une sous-chaîne et le deuxième paramètre est une chaîne dans laquelle effectuer la recherche :

    SELECT CHARINDEX("pl", "Pomme") -- 3

    PATINDEX : renvoie l'index auquel se trouve la première occurrence d'un motif particulier dans une chaîne :

    SELECT PATINDEX("%p_e%", "Pomme") -- 3

    LEFT : coupe un certain nombre de caractères depuis le début de la chaîne. Le premier paramètre de la fonction est une chaîne, et le second est le nombre de caractères à couper en premier dans la chaîne :

    SÉLECTIONNER À GAUCHE ("Apple", 3) -- App

    DROITE : coupe un nombre spécifié de caractères à partir de la fin d'une chaîne. Le premier paramètre de la fonction est une chaîne, et le second est le nombre de caractères à couper en premier dans la chaîne :

    SÉLECTIONNER À DROITE("Pomme", 3) -- ple

    SUBSTRING : coupe une sous-chaîne d'une certaine longueur à partir d'une chaîne, en commençant à un certain index. Le premier paramètre de la fonction est une chaîne, le second est l'index de départ à couper et le troisième paramètre est le nombre de caractères à couper :

    SÉLECTIONNER LA SOUS-CHAÎNE("Galaxy S8 Plus", 8, 2) -- S8

    REPLACE : Remplace une sous-chaîne par une autre dans une chaîne. Le premier paramètre de la fonction est une chaîne, le second est la sous-chaîne à remplacer et le troisième est la sous-chaîne à remplacer par :

    SÉLECTIONNER REMPLACER ("Galaxy S8 Plus", "S8 Plus", "Note 8") - Galaxy Note 8

    REVERSE : inverse la chaîne :

    SÉLECTIONNER INVERSE("123456789") -- 987654321

    CONCAT : concatène deux chaînes en une seule. En paramètre, il faut à partir de 2 ou plusieurs lignes à connecter :

    SELECT CONCAT("Tom", " ", "Smith") -- Tom Smith

    LOWER : convertit une chaîne en minuscule :

    SELECT LOWER("Pomme") -- pomme

    UPPER : convertit une chaîne en majuscule

    SÉLECTIONNER MAJUSCULE("Pomme") -- POMME

    SPACE : renvoie une chaîne qui contient un certain nombre d'espaces

Prenons par exemple un tableau :

CREATE TABLE Products (Id INT IDENTITY PRIMARY KEY, ProductName NVARCHAR(30) NOT NULL, Manufacturer NVARCHAR(20) NOT NULL, ProductCount INT DEFAULT 0, Price MONEY NOT NULL);

Et lors de l'extraction de données, nous utilisons des fonctions de chaîne :

SELECT UPPER(LEFT(Fabricant,2)) AS Abréviation, CONCAT(ProductName, " - ", Manufacturer) AS FullProdName FROM Produits ORDER BY Abréviation

Fonctions intégrées SQL conçu pour faciliter et accélérer le traitement des données. La particularité est qu'ils peuvent être spécifiés directement dans l'expression. Toutes les fonctions intégrées peuvent être conditionnellement divisées en groupes.

Fonctions mathématiques:

    abdos(sens) - renvoie la valeur absolue du nombre ;

    Tour(valeur, précision) - renvoie une valeur numérique arrondie à l'argument spécifié précision le nombre de décimales ;

    PANCARTE(sens) - renvoie un moins si le nombre est négatif, et un plus sinon ;

    PUISSANCE(valeur, degré) – élève un nombre à une puissance ;

    SQRT(sens) - extrait la racine carrée d'un nombre ;

    PLAFOND(sens)- renvoie l'entier le plus proche supérieur ou égal à la valeur ;

    - SOL(sens) Renvoie l'entier le plus proche inférieur ou égal à la valeur.

Fonctions de chaîne :

    ASCII(ligne) - Retour ASCII code du premier caractère de la chaîne ;

    CHUNR(Numéro) – renvoie un caractère par ASCII code;

    LEN (ligne) – renvoie la longueur de la chaîne en caractères, à l'exclusion des espaces de fin ;

    LGARNITURE(ligne)/ RTRIM(ligne)- supprime les espaces au début/à la fin d'une chaîne ;

    LA GAUCHE(chaîne, nombre)/ RLUTTE(chaîne, nombre)- renvoie l'argument spécifié Numéro le nombre de caractères dans la chaîne, à partir du bord gauche/droit ;

    SOUS-CHAINE(ligne, position, longueur) - renvoie une sous-chaîne de la longueur spécifiée à partir de la chaîne, à partir de la position spécifiée ;

    PLUS BAS(ligne) /PLUS HAUT(ligne) - renvoie une chaîne convertie en minuscules/majuscules, etc.

Fonctions pour travailler avec les dates :

    AVOIR UN RENDEZ-VOUS() - Renvoie une valeur qui contient la date et l'heure de l'ordinateur sur lequel l'instance de SQL Server s'exécute ;

    JOURNÉE(date de valeur)– renvoie un nombre à partir de la date spécifiée ;

    MOIS(date de valeur)- renvoie le numéro du mois à partir de la date spécifiée ;

    AN(date de valeur)- renvoie la valeur de l'année à partir de la date spécifiée ;

    DATENANE( partie, valeur_date) - renvoie une chaîne de caractères représentant la partie spécifiée ( journée, mois, Heureetc.) à compter de la date indiquée ;

    DATEPART( partie, valeur_date) - renvoie un entier représentant la partie spécifiée ( journée, mois, Heureetc.) à compter de la date indiquée.

Fonctions de conversion de type de données

    MOULAGE (sens COMME Type de données)

    CONVERTIR(Type de données, sens)

Dispute sens dans les fonctions, spécifie la valeur à convertir.

7.3. Commandes du langage de définition de données

Le langage de définition de données contient des commandes pour créer, modifier et supprimer une base de données et ses objets.

Créer un tableau

La création d'une nouvelle table est effectuée par la commande CRÉER UN TABLEAU. La commande décrit la structure de la table, chaque colonne de la table et les contraintes d'intégrité qui doivent être définies pour la table.

Syntaxe de la commande :

CRÉER UN TABLEAU nom_table (( description_colonne |nom_colonne_calculé COMME expression | table_level_integrity_constraints) [, ...])

Le nom de la table est un identifiant d'une longueur maximale de 128 caractères.

Une table peut contenir une colonne calculée, auquel cas la valeur de la colonne est déterminée par une expression stockée dans la structure de la table. Une colonne calculée ne peut pas être modifiée, elle ne peut donc pas être NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY ou DEFAULT.

La syntaxe pour décrire une colonne de table est :

nom de colonne Type de données[(la taille)]

[(DEFAULT default_value | IDENTITY [(valeur, pas)]}]

[column_level_integrity_constraints]

DEFAULT - vous permet de spécifier la valeur attribuée à la colonne dans l'enregistrement nouvellement ajouté.

IDENTITY Indique qu'une colonne activée pour la numérotation automatique (colonne de compteur) est en cours de création. Une seule colonne de compteur peut être définie dans une table. Le paramètre value spécifie la valeur initiale du compteur et le paramètre step spécifie le pas d'incrémentation. Si ces paramètres ne sont pas définis, ils ont la valeur 1. IDENTITY ne peut être défini que pour les colonnes de type entier ou décimal. L'insertion de valeurs dans une colonne IDENTITY n'est pas autorisée.

Il existe deux groupes de contraintes d'intégrité gérées par le SGBD :

Contraintes d'intégrité déclaratives qui sont déclarées lors de la création ou de la modification d'une table ;

Contraintes d'intégrité procédurale gérées par des déclencheurs.

Les contraintes d'intégrité déclaratives peuvent être des contraintes de niveau table et des contraintes de niveau table. Une contrainte au niveau de la colonne s'applique à une seule colonne. Chaque contrainte d'intégrité déclarative peut recevoir un nom.

La description des contraintes au niveau des colonnes a la syntaxe suivante :

((CLÉ PRIMAIRE | UNIQUE | NOT NULL ) |RÉFÉRENCES DE CLÉ ÉTRANGÈRE nom_table( nom de colonne)

|CHECK expression_booléenne)

Le nom de la contrainte d'intégrité des données doit être unique dans la base de données. Considérez les contraintes qui peuvent être définies au niveau de la colonne :

Contrainte PRIMARY KEY. Toutes les valeurs de clé primaire de la table doivent être uniques et non nulles. Une table ne peut avoir qu'une seule clé primaire. S'il est composite, les contraintes d'intégrité sur la clé primaire sont définies au niveau de la table ;

Contraintes d'unicité de valeur de colonne UNIQUE. Cela signifie qu'une table ne peut pas avoir deux enregistrements qui ont la même valeur dans cette colonne ;

Une contrainte NOT NULL qui empêche la colonne de stocker une valeur NULL ;

Contrainte de clé étrangère FOREIGN KEY (contrainte d'intégrité référentielle). Pour une colonne qui est une clé étrangère, utilisez REFERENCES pour spécifier le nom de la table à laquelle le lien est établi, et le nom de la colonne de cette table qui sera liée. Une telle table est la table principale (parente) par rapport à la table créée. La colonne de la table principale dont les valeurs sont liées doit avoir une contrainte PRIMARY KEY.

Si la clé de table étrangère se compose de plusieurs champs, la contrainte FOREIGN KEY doit être spécifiée au niveau de la table. Dans ce cas, vous devez lister toutes les colonnes incluses dans la clé étrangère, spécifier le nom de la table principale et les noms des colonnes de la table principale auxquelles la clé étrangère fait référence.

L'intégrité référentielle établit les règles d'ajout et de modification de données dans une table à l'aide d'une clé étrangère et de sa contrainte de clé primaire correspondante. Les clauses ON UPDATE et ON DELETE d'une clé étrangère définissent les règles suivantes pour modifier les données associées :

NO ACTION - vous permet de modifier (supprimer) uniquement les valeurs de la table principale qui n'ont pas de valeurs de clé étrangère correspondantes dans la table enfant. Cette règle est en vigueur par défaut ;

CASCADE signifie que chaque valeur de la clé étrangère de la table enfant sera automatiquement modifiée (supprimée) lorsque la valeur de la clé primaire de la table parent est modifiée ;

SET NULL signifie qu'en cas de modification (suppression) de la clé primaire de la table parent, dans toutes les lignes de référence de la table enfant, les valeurs de la clé étrangère se verront automatiquement attribuer des valeurs NULL ;

SET DEFAULT signifie qu'en cas de modification (suppression) de la clé primaire de la table parent, dans toutes les lignes de référence de la table enfant, les valeurs de la clé étrangère se verront automatiquement attribuer des valeurs par défaut.

Complétons l'exemple de la base de données de formation "Université", dont la conception a été envisagée au Chap. 4.3 tableaux DISCIPLINE et DÉCLARATION GÉNÉRALE. Les tableaux 6 et 7 décrivent la structure logique des tableaux.

Tableau 6

Structure logique de l'objet d'information DISCIPLINE

Tableau 7

La structure logique de l'objet d'information GENERAL STATEMENT

Signe clé

Format de champ

Nom

Précision

Numéro de livre d'enregistrement

Numéro de livret scolaire inscrit

texte

Code de discipline

Code de discipline

Numérique

entier long

numérique

Donnons des demandes de création de tables conformément à celle illustrée à la fig. 35 modèle de base de données infologique.

Riz. 35. Schéma de base de données "Université"

Comme vous pouvez le voir sur le schéma de la base de données, la table FACULTY est une table indépendante, elle est donc créée en premier. Une demande de création d'une table, en tenant compte de la description de la structure logique dans Table. 4 (p. 61) ressemblera à :

Faculté CRÉER TABLE

([numéro de département] tinyint PRIMARY KEY , [nom du département] char(50))

La table SPECIALTY est également indépendante, nous la créons en second. Lors de la création d'une requête, elle utilise la description de la structure logique dans Table. 5 (p. 62).

CRÉER TABLE [spécialité] (

[numéro de spécialité] int PRIMARY KEY,

[nom de la spécialité] char (60),

[coût de l'éducation] )

La table GROUP dépend des tables FACULTY et SPECIALTY. Nous utilisons le tableau 3 (p. 61) lors de la création d'une requête et tenons compte du fait que les colonnes numéro de faculté et numéro de spécialité sont des clés étrangères :

CRÉER TABLE [groupe] (

[numéro de groupe] smallint PRIMARY KEY,

[numéro de spécialité] int FOREIGN KEY REFERENCES spécialité( chambre spécial- nouvelles)LORS DE LA SUPPRESSION EN CASCADE SUR LA MISE À JOUR EN CASCADE,

[numéro de faculté] tinyint FOREIGN KEY REFERENCES faculté( chambre la faculté) ON DELETE CASCADE ON UPDADE CASCADE, [numéro de cours] tinyint)

La table STUDENT est une table dépendante de GROUP. Sur la base des données du tableau 2 (p. 60), nous allons faire une requête. Notons également que la colonne numéro de groupe sont des clés étrangères :

CRÉER TABLE [élève] (

[numéro de groupe] smallint NOT NULL FOREIGN KEY REFERENCES group( chambre groupes) ,

[nom de famille] char(15) NOT NULL ,

[date de naissance] datetime NOT NULL ,

[commercial] bit NOT NULL ,

[nom d'enregistrement] char(9))

Les données de la table GENERAL RECORD dépendent des tables STUDENT et DISCIPLINE. Dans ce tableau, la clé primaire est composite et chacune des colonnes de clé primaire est une clé étrangère (voir Tableau 7 et Figure 35).

Utilisons la description de la structure logique de la table des disciplines donnée dans le tableau 6 et formulons une requête :

CREER TABLE [discipline] (

[code discipline] entier CLE PRIMAIRE,

[nom de la discipline] car(50))

Vous pouvez maintenant créer une requête pour créer une table d'instructions générales. Comme la clé primaire de la table est une clé composite, la contrainte PRIMARY KEY doit être définie au niveau de la table. Par exemple, définissons également les contraintes FOREIGN KEY au niveau de la table. La requête ressemblera à :

CRÉER TABLE [fiche générale] (

[code discipline] entier,

[numéro de carnet de notes] char(8),

[grade] NOT NULL , PRIMARY KEY ([code de discipline],[numéro de classe]), FOREIGN KEY ([code de discipline]) REFERENCES [discipline] ([code de discipline]), FOREIGN KEY ([numéro de classe]) REFERENCES [étudiant ] ([numéro du carnet de notes]))

Changer la structure d'un tableau

La modification de la structure d'une table se fait avec la commande ALTER TABLE. À l'aide de la commande, vous pouvez modifier les propriétés des colonnes existantes, les supprimer ou ajouter de nouvelles colonnes à la table, gérer les restrictions d'intégrité, tant au niveau de la colonne qu'au niveau de la table. L'affectation de nombreux paramètres et mots clés est similaire à l'affectation des paramètres et mots clés correspondants de la commande CREATE TABLE.

Suppression d'un tableau

La suppression d'une table s'effectue à l'aide de la commande DROP TABLE. Syntaxe de la commande :

TABLEAU DE DÉCOMPTE table

Par exemple, une requête pour supprimer la table STUDENT ressemble à ceci :

DROP TABLE Étudiant

La suppression d'une table DEVRAIT tenir compte des relations établies dans la base de données entre les tables. Si une autre table fait référence à la table en cours de suppression à l'aide de la contrainte d'intégrité FOREIGN KEY, le SGBD n'autorisera pas sa suppression.

Créer un index

Les index sont utilisés pour accélérer l'accès à des données spécifiques dans une table de base de données. Un index est une structure qui ordonne les valeurs dans une ou plusieurs colonnes d'une table de base de données, comme la colonne Nom de famille de la table STUDENT. Si vous recherchez un étudiant spécifique par nom de famille, l'index vous aide à obtenir les informations dont vous avez besoin plus rapidement qu'en cherchant dans toutes les lignes du tableau.

Un index fournit des pointeurs vers les valeurs de données stockées dans des colonnes spécifiques d'une table et organise ces pointeurs en fonction de l'ordre de tri spécifié. La recherche de données dans une table à l'aide d'un index est similaire à la recherche d'un index dans un livre. Tout d'abord, une recherche est effectuée pour une valeur spécifique dans l'index, puis le saut correspondant est effectué via le pointeur vers la ligne contenant cette valeur.

Un index est créé à l'aide de la commande CREATE INDEX :

CRÉER UN INDEX

Nom_ index ON nom _les tables(colonne [,…])

où UNIQUE indique que l'index ne doit stocker que des valeurs uniques.

Un index peut être créé sur une ou plusieurs colonnes (index composite). Les index composites vous permettent de distinguer les enregistrements qui ont la même valeur dans la même colonne.

Exemple : Créer un index composite sur la table STUDENT pour les champs Nom et Date de naissance

CRÉER INDEX Ind_Fam ON

Étudiant(Nom, [Date de naissance] DESC)

Vous ne devez créer un index sur une table que si vous avez l'intention d'interroger fréquemment les données dans les colonnes indexées. Les index occupent de l'espace disque et ralentissent les ajouts, les suppressions et les mises à jour de lignes.

Suppression d'un index de table

La commande DROP supprime un index d'une table. La syntaxe de la commande DROP pour supprimer un index est :

INDICE DE CHUTE indice SUR table

Avant qu'un index puisse être supprimé d'une table ou de la table elle-même, il doit être fermé.

Exemple : supprimer l'index Ind_Fam de la table STUDENT

DROP INDEX Ind_Fam ON Étudiant

Les fonctions Transact-SQL peuvent être agrégées ou scalaires. Ces types de fonctions sont traités dans cet article.

Fonctions d'agrégation

Les fonctions d'agrégation effectuent des calculs sur un groupe de valeurs de colonne et renvoient toujours une valeur unique à partir du résultat de ces calculs. Le langage Transact-SQL prend en charge plusieurs fonctions d'agrégation courantes :

MOY

Calcule la moyenne arithmétique des données contenues dans une colonne. Les valeurs sur lesquelles le calcul est effectué doivent être numériques.

MIN et MAX

Déterminez la valeur maximale et minimale de toutes les valeurs de données contenues dans la colonne. Les valeurs peuvent être numériques, chaîne ou temporaires (date/heure).

SOMME

Calcule la somme totale des valeurs d'une colonne. Les valeurs sur lesquelles le calcul est effectué doivent être numériques.

COMPTER

Compte le nombre de valeurs non nulles dans une colonne. La fonction count(*) est la seule fonction d'agrégation qui n'effectue pas de calculs sur les colonnes. Cette fonction renvoie le nombre de lignes (que les colonnes individuelles contiennent ou non des valeurs nulles).

COUNT_BIG

Similaire à la fonction count, à la différence qu'elle renvoie une valeur de données BIGINT.

L'utilisation de fonctions d'agrégation régulières dans une instruction SELECT sera traitée dans l'un des articles suivants.

Fonctions scalaires

Les fonctions scalaires Transact-SQL sont utilisées dans la création d'expressions scalaires. (Une fonction scalaire effectue des calculs sur une seule valeur ou une liste de valeurs, tandis qu'une fonction d'agrégation effectue des calculs sur un groupe de valeurs à partir de plusieurs lignes.) Les fonctions scalaires peuvent être réparties dans les catégories suivantes :

    fonctions numériques;

    fonctions de date ;

    fonctions de chaîne ;

    fonctions système ;

    fonctions de métadonnées.

Ces types de fonctions sont abordés dans les sections suivantes.

Fonctions numériques

Les fonctions numériques Transact-SQL sont des fonctions mathématiques permettant de modifier des valeurs numériques. La liste des fonctions numériques et leur brève description sont données dans le tableau ci-dessous :

Fonctions numériques Transact-SQL
Fonction Syntaxe La description Exemple d'utilisation
abdos ABS(n)

Renvoie la valeur absolue (c'est-à-dire que les valeurs négatives sont renvoyées comme positives) de l'expression numérique n.

SELECT ABS(-5.320) -- Renvoie 5.320 SELECT ABS(8.90) -- Renvoie 8.90

ACOS, ASIN, ATAN, ATN2 ACOS(n), ASIN(n), ATAN(n), ATN2(n, m)

Fonctions trigonométriques inverses qui calculent le cosinus inverse, le sinus inverse, l'arc tangente de la valeur de n (pour ATN2, l'arc tangente de n/m est calculé). Les valeurs d'entrée n, m et le résultat sont du type de données FLOAT.

COS, SIN, TAN, COT COS(n), SIN(n), TAN(n), COT(n)

Fonctions trigonométriques qui calculent le cosinus, sinus, tangente, cotangente de la valeur n. Le résultat est de type de données FLOAT.

DEGRÉS, RADIANS DEGRÉS(n), RADIANS(n)

La fonction DEGREES convertit les radians en degrés, RADIANS, respectivement, et vice versa.

SELECT DEGREES(PI() / 4) -- Renvoie 45 SELECT COS(RADIANS(60.0)) -- Renvoie 0.5

PLAFOND PLAFOND(n)

Arrondit un nombre à une valeur entière supérieure.

SELECT PLAFOND(-5.320) -- Renvoie -5 SELECT PLAFOND(8.90) -- Renvoie 9

TOUR ARRONDI(n, p, [t])

Arrondit la valeur de n au p le plus proche. Lorsque p est un nombre positif, la partie fractionnaire de n est arrondie, et lorsqu'il est négatif, la partie entière est arrondie. Lorsque vous utilisez l'argument facultatif t, le nombre n n'est pas arrondi, mais tronqué (c'est-à-dire arrondi vers le bas).

SELECT ROUND(5.3208, 3) -- Renvoie 5.3210 SELECT ROUND(125.384, -1) -- Renvoie 130.000 SELECT ROUND(125.384, -1, 1) -- Renvoie 120.000

SOL PLANCHER(n)

Arrondit au nombre entier le plus proche.

SELECT FLOOR(5.88) -- Renvoie 5

EXP EXP(n)

Calcule la valeur de e n .

LOG, LOG10 LOG(n), LOG10(n)

LOG(n) - calcule le logarithme népérien (base e) du nombre n, LOG10(n) - calcule le logarithme décimal (base 10) du nombre n.

PI PI()

Renvoie la valeur de π (3,1415).

PUISSANCE PUISSANCE(x, y)

Calcule la valeur x y.

RAND RAND()

Renvoie un nombre FLOAT arbitraire entre 0 et 1.

ROWCOUNT_BIG ROWCOUNT_BIG()

Renvoie le nombre de lignes de table qui ont été traitées par la dernière instruction Transact-SQL exécutée par le système. La valeur de retour est de type BIGINT.

PANCARTE SIGNE(n)

Renvoie le signe de la valeur n sous forme de nombre : +1 si positif, -1 si négatif.

CARRÉ, CARRÉ CARRÉ(n), CARRÉ(n)

SQRT(n) - calcule la racine carrée du nombre n, SQUARE(n) - renvoie le carré de l'argument n.

Fonctions de date

Les fonctions de date évaluent les parties correspondantes de la date ou de l'heure d'une expression, ou renvoient la valeur d'un intervalle de temps. Les fonctions de date prises en charge par Transact-SQL et une brève description de celles-ci sont répertoriées dans le tableau ci-dessous :

Fonctions de date Transact-SQL
Fonction Syntaxe La description Exemple d'utilisation
AVOIR UN RENDEZ-VOUS AVOIR UN RENDEZ-VOUS()

Renvoie la date et l'heure actuelles du système.

SÉLECTIONNER OBTENIR DATE()

DATEPART DATEPART(élément, date)

Renvoie la partie de date spécifiée dans le paramètre d'élément sous la forme d'un entier.

Renvoie 1 (janvier) SELECT DATEPART(month, "01/01/2012") -- Renvoie 4 (mercredi) SELECT DATEPART(weekday, "01/02/2012")

DATENAME DATENAME (élément, date)

Renvoie la partie de la date spécifiée dans le paramètre item sous forme de chaîne de caractères.

Renvoie janvier SELECT DATENAME(month, "01/01/2012") -- Renvoie mercredi SELECT DATENAME(weekday, "01/02/2012")

DATE DIFF DATEDIFF (élément, dat1, dat2)

Calcule la différence entre les deux parties des dates dat1 et dat2 et renvoie un résultat entier dans les unités spécifiées dans l'argument de l'élément.

Renvoie 19 (19 ans entre les dates) SELECT DATEDIFF(année, "01/01/1990", "01/01/2010") -- Renvoie 7305 (7305 jours entre les dates) SELECT DATEDIFF(jour, "01/01/1990 ", "01/01/2010") .2010")

DATEADD DATEADD (élément, n, date)

Ajoute le nième nombre d'unités spécifié dans l'argument de l'élément à la date spécifiée. (La valeur de l'argument n peut également être négative.)

Ajouter 3 jours à la date actuelle SELECT DATEADD(day, 3, GETDATE())

Fonctions de chaîne

Les fonctions de chaîne manipulent les valeurs de colonne, qui ont généralement un type de données caractère. Les fonctions de chaîne prises en charge par Transact-SQL et une brève description de celles-ci sont répertoriées dans le tableau ci-dessous :

Fonctions de chaîne Transact-SQL
Fonction Syntaxe La description Exemple d'utilisation
ASCII, UNICODE ASCII(car), UNICODE(car)

Convertit le caractère spécifié en entier ASCII correspondant.

SÉLECTIONNER ASCII("W") -- 87 SÉLECTIONNER UNICODE("W") -- 1102

CHAR, NCHAR CHAR(entier), NCHAR(entier)

Convertit un code ASCII (ou Unicode si NCHAR) en le caractère correspondant.

SÉLECTIONNER CHAR(87) -- "W" SÉLECTIONNER NCHAR(1102) -- "w"

CHARINDEX CHARINDEX (chaîne1, chaîne2)

Renvoie la position de départ de l'occurrence de la sous-chaîne str1 dans la chaîne str2. Si la chaîne str2 ne contient pas la sous-chaîne str1, la valeur 0 est renvoyée.

Renvoie 5 SELECT CHARINDEX ("morph", "polymorphisme")

DIFFÉRENCE DIFFERENCE(chaîne1, chaîne2)

Renvoie un entier de 0 à 4 qui est la différence entre les valeurs SOUNDEX des deux chaînes str1 et str2. La méthode SOUNDEX renvoie un nombre qui caractérise le son de la corde. Avec cette méthode, des cordes au son similaire peuvent être déterminées. Ne fonctionne que pour les caractères ASCII.

Renvoie 2 SELECT DIFFERENCE ("orthographe", "dire")

GAUCHE DROITE GAUCHE(chaîne, longueur), DROITE(chaîne, longueur)

Renvoie le nombre de premiers caractères de la chaîne str, donné par le paramètre de longueur pour LEFT, et les derniers caractères de longueur de str pour la fonction RIGHT.

DECLARE @str nvarchar(30) = "Sync" ; -- Retour "sync" SELECT LEFT(@str, 4) -- Retour "zation" SELECT RIGHT(@str, 5)

LEN LEN(str)

Renvoie le nombre de caractères (pas le nombre d'octets) de la chaîne donnée dans l'argument, y compris les espaces de fin.

INFÉRIEUR, SUPÉRIEUR INFÉRIEUR (chaîne), SUPÉRIEUR (chaîne)

La fonction LOWER convertit toutes les lettres majuscules de str1 en minuscules. Les lettres minuscules et autres caractères inclus dans la chaîne ne sont pas affectés. La fonction UPPER convertit toutes les lettres minuscules de la chaîne str en majuscules.

DECLARE @str nvarchar(30) = "Sync" ; -- Retour "SYNC" SELECT UPPER(@str) -- Retour "sync" SELECT LOWER(@str)

LTRIM, RTRIM LTRIM(chaîne), RTRIM(chaîne)

La fonction LTRIM supprime les espaces de tête dans la chaîne str, RTRIM supprime en conséquence les espaces à la fin de la chaîne.

NOM DU DEVIS QUOTENAME(char_string)

Renvoie une chaîne Unicode délimitée pour convertir la chaîne d'entrée en un identificateur délimité valide.

DECLARE @str nvarchar(30) = "Sync" ; -- Renvoie "[Sync]" SELECT QUOTENAME(@str)

PATINDEX PATINDEX(%p%,expr)

Renvoie la position de départ de la première occurrence du motif p dans l'expression donnée, ou zéro si le motif donné n'est pas trouvé.

Renvoie 4 SELECT PATINDEX("%xro%", "Sync")

REMPLACER REMPLACER(str1, str2, str3)

Remplace toutes les occurrences de la sous-chaîne str2 dans la chaîne str1 par la sous-chaîne str3.

Renvoie "Desync" SELECT REPLACE("Sync", "Sync", "Desync")

REPRODUIRE REPLICATE(str, i)

Répète la chaîne str i fois.

Renvoie "aBaBaBaBaB" SELECT REPLICATE("aB", 5)

INVERSE INVERSE(str)

Imprime la chaîne str dans l'ordre inverse.

Renvoie "yaicazinorchnis" SELECT REVERSE("Sync")

SOUNDEX SOUNDEX (str)

Renvoie un code soundex à quatre caractères utilisé pour déterminer la similarité de deux chaînes. Ne fonctionne que pour les caractères ASCII.

ESPACE ESPACE (longueur)

Renvoie une chaîne d'espaces de la longueur spécifiée par le paramètre de longueur. Similaire à REPLICATE(" ", longueur).

STR STR (f[, len[, d]])

Convertit l'expression à virgule flottante donnée f en une chaîne, où len est la longueur de la chaîne, y compris la virgule décimale, le signe, les chiffres et les espaces (la valeur par défaut est 10), et d est le nombre de chiffres fractionnaires à renvoyer.

Renvoie "3.14" SELECT STR (3.1415, 4, 2)

DES TRUCS STUFF (str1, a, longueur, str2)

Supprime les caractères de longueur de la chaîne str1, en commençant à la position a, et insère la chaîne str2 à leur place.

Note dans un livre SELECT STUFF("Notebook", 5, 0," in a ") -- Manuel SELECT STUFF("Notebook", 1, 4, "Hand")

SOUS-CHAINE SOUS-CHAINE (chaîne1, a, longueur)

Extrait de la chaîne str, en commençant à la position a, une sous-chaîne de longueur length.

Fonctions du système

Les fonctions système Transact-SQL fournissent une mine d'informations sur les objets de base de données. La plupart des fonctions système utilisent un identificateur numérique (ID) interne qui est attribué à chaque objet de base de données lors de sa création. Avec cet identifiant, le système peut identifier de manière unique chaque objet de la base de données.

Le tableau suivant répertorie certaines des fonctions système les plus importantes avec une brève description :

Fonctions système Transact-SQL
Fonction Syntaxe La description Exemple d'utilisation
MOULAGE CAST (w type AS [(longueur)]

Convertit l'expression w en type de type de données spécifié (si possible). L'argument w peut être n'importe quelle expression valide.

Renvoie 3 SELECT CAST (3.1258 AS INT)

SE FONDRE COALESCER (a1, a2)

Renvoie la première valeur d'expression dans la liste des expressions a1, a2, ... qui n'est pas nulle.

COL_LENGTH COL_LENGTH (obj, col)

Renvoie la longueur de la colonne col de l'objet de base de données (table ou vue) obj.

Renvoie 4 SELECT COL_LENGTH ("Employé", "Id")

CONVERTIR CONVERT (type[(longueur)], w)

Équivalent à la fonction CAST, mais les arguments sont spécifiés différemment. Peut être utilisé avec n'importe quel type de données.

CURRENT_TIMESTAMP CURRENT_TIMESTAMP

Renvoie la date et l'heure actuelles.

UTILISATEUR ACTUEL UTILISATEUR ACTUEL

Renvoie le nom de l'utilisateur courant.

DONNEES DONNEES (z)

Renvoie le nombre d'octets occupés par l'expression z.

Cette requête renvoie la longueur de chaque champ SELECT DATALENGTH(FirstName) FROM Employee

GETANSINULL GETANSINULL("nombase")

Renvoie 1 si l'utilisation de valeurs nulles dans la base de données dbname est conforme à la norme ANSI SQL.

ISNULL ISNULL (expr, valeur)

Renvoie la valeur de expr si elle n'est pas NULL ; sinon, la valeur est renvoyée.

ESTNUMÉRIQUE ESTNUMÉRIQUE (expr)

Détermine si expr a un type numérique valide.

NOUVELID NOUVELID()

Crée un ID unique composé d'une chaîne binaire de 16 octets utilisée pour stocker des valeurs du type de données UNIQUEIDENTIFIER.

NEWSEQUENTIALID NEWSEQUENTIALID()

Crée un GUID supérieur à tout autre GUID précédemment généré par cette fonction sur l'ordinateur spécifié. (Cette fonction ne peut être utilisée que comme valeur par défaut pour une colonne.)

NULLIF NULLIF(expr1,expr2)

Renvoie null si les valeurs de expr1 et expr2 sont identiques.

La requête renvoie NULL pour un projet dont -- a Number = "p1" SELECT NULLIF(Number, "p1") FROM Project

PROPRIÉTÉSERVEUR SERVERPROPERTY (nom de la propriété)

Renvoie des informations sur les propriétés du serveur de base de données.

SYSTEM_USER SYSTEM_USER

Renvoie l'ID de l'utilisateur actuel.

IDENTIFIANT D'UTILISATEUR IDENTIFIANT D'UTILISATEUR()

Renvoie le nom d'utilisateur de l'ID utilisateur. Si aucun utilisateur n'est spécifié, l'ID utilisateur actuel est renvoyé.

NOM D'UTILISATEUR NOM D'UTILISATEUR()

Renvoie le nom d'utilisateur avec l'identifiant spécifié. Si ID n'est pas spécifié, le nom de l'utilisateur actuel est renvoyé.

Fonctions de métadonnées

Fondamentalement, les fonctions de métadonnées renvoient des informations sur une base de données et des objets de base de données spécifiés. Le tableau ci-dessous répertorie certaines des fonctions de métadonnées les plus importantes avec une brève description :

Fonctions de métadonnées Transact-SQL
Fonction Syntaxe La description Exemple d'utilisation
COL_NAME COL_NAME (tab_id, col_id)

Renvoie le nom de la colonne avec le col_id spécifié de la table avec l'id tab_id.

Renvoie le nom de la colonne "LastName" SELECT COL_NAME (OBJECT_ID("Employee"), 3)

PROPRIÉTÉ DE LA COLONNE COLUMNPROPERTY (id, col, propriété)

Renvoie des informations sur la colonne spécifiée.

Renvoie la valeur de la propriété PRECISION -- pour la colonne Id de la table Employee SELECT COLUMNPROPERTY (OBJECT_ID("Employee"), "Id", "precision")

PROPRIÉTÉ DE LA BASE DE DONNÉES DATABASEPROPERTY (base de données, propriété)

Renvoie la valeur de la propriété property de la base de données database.

Renvoie la valeur de la propriété IsNullConcat -- pour la base de données SampleDb SELECT DATABASEPROPERTY ("SampleDb", "IsNullConcat")

DB_ID db_id()

Renvoie l'identifiant de la base de données db_name. Si aucun nom de base de données n'est spécifié, l'ID de la base de données actuelle est renvoyé.

DB_NAME DB_NAME()

Renvoie le nom de la base de données qui a l'id db_id. Si l'identifiant n'est pas spécifié, le nom de la base de données courante est renvoyé.

INDEX_COL INDEX_COL (table, i, non)

Renvoie le nom de la colonne indexée de la table table. La colonne est indiquée par l'ID d'index i et le numéro de position de la colonne dans cet index.

INDEXPROPRIÉTÉ INDEXPROPERTY (obj_id, index_name, propriété)

Renvoie les propriétés d'index ou de statistiques nommées pour l'ID de table, le nom d'index ou de statistique et le nom de propriété spécifiés.

OBJECT_NAME OBJECT_NAME (obj_id)

Renvoie le nom de l'objet de base de données avec obj_id.

SÉLECTIONNER NOM_OBJET(245575913);

OBJECT_ID OBJECT_ID (nom_objet)

Renvoie l'ID d'objet obj_name de la base de données.

Renvoie 245575913 - ID de la table des employés SELECT OBJECT_ID("Employee")

OBJETPROPRIÉTÉ OBJECTPROPERTY (obj_id, propriété)

Renvoie des informations sur les objets de la base de données actuelle.

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 de données supportée et de l'organisation des relations relationnelles (tables). Pour sa mise en œuvre, les opérateurs de création de base de données, de création de tables et d'accès aux données sont destinés.

Création de base de données. L'instruction CREATE DATABASE est utilisée pour créer une nouvelle base de données. 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. Cet opérateur spécifie les noms des champs, leurs types de données, leur longueur (pour certains types de données). SQL utilise les types de données suivants :

INTEGER est un 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 PRECISION - virgule flottante double précision ;

DATETIME - date et heure ;

BOOL est une valeur booléenne.

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

Tableau 4.8 Restrictions sur les données définies

Pour un modèle de données relationnel, il est indispensable de spécifier une clé étrangère (FOREIGNKEY). Lorsque vous déclarez des clés étrangères, vous devez imposer des contraintes appropriées sur la colonne, telles que NOT NULL.

Dans une instruction SQL, CHECK désigne des contraintes sémantiques qui garantissent l'intégrité des données, telles que la limitation de l'ensemble de 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 ont été trouvées dans sa définition, des modifications peuvent être apportées à l'aide de l'instruction ALTER TABLE. Cette instruction est destinée à 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 à une 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.

Insertion 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 de valeurs dans une ou plusieurs colonnes d'une table et est effectuée à l'aide de l'instruction UPDATE. Exemple:

SET montant=montant+1000.00

OÙ somme>0

Suppression de lignes de la table se fait à l'aide de l'instruction DELETE. La syntaxe de l'opérateur est :

DE table

La clause WHERE est facultative, cependant, si elle n'est pas incluse, tous les enregistrements de la table seront supprimés. 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 la satisfaction sera vérifiée pour toute modification de la base de données. Le contrôle des résultats des transactions, la gestion 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 les instructions COMMIT (fixe la fin réussie de la transaction en cours et le début d'une nouvelle) et ROLLBACK (le besoin d'un rollback - restauration automatique de l'état de la base de données au début de la transaction)

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

En SQL, vous pouvez créer des séquences imbriquées de requêtes (sous-requêtes). Certains types de requêtes sont mieux implémentés à l'aide de sous-requêtes. Ces requêtes incluent ce que l'on appelle des vérifications d'existence. Supposons que vous vouliez obtenir des données sur les étudiants qui n'ont pas un score de "sept". Si un ensemble vide est renvoyé, cela signifie qu'une seule chose - chaque étudiant a au moins une telle évaluation.

Liaison de tableaux. Les instructions SQL vous permettent d'extraire des données de plusieurs tables. Une façon de procéder consiste à lier des tables sur un seul champ commun.

L'instruction SELECT doit contenir une restriction sur la coïncidence des valeurs d'une certaine colonne (champ). 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, l'opérateur sera ambigu.

Vous pouvez utiliser d'autres types de liaison de table : l'opérateur INTER JOIN (jointure interne) fournit la présence dans l'ensemble d'enregistrements résultant, en faisant correspondre les valeurs dans les champs liés. Les jointures externes (OUTER JOIN) vous permettent d'inclure dans le résultat de la requête toutes les lignes d'une table et leurs 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, la protection des données contre les accès non autorisés.

L'accès aux données dans un environnement multi-utilisateurs est régi par les instructions GRANT et REVOKE. Dans chaque déclaration, vous devez 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é d'extraire des données de la table PRODUCT :

ACCORDER LA 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.

Les produits IBM Standard for SQL spécifient l'utilisation d'Embedded SQL. 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 s'adapter aux variables du langage hôte dans les constructions SQL.

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

Dialectes SQL

Dans les SGBD relationnels modernes, les dialectes du langage SQL sont utilisés 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).

SQL s'appelait à l'origine SEQUEL (Structured English Query Language), puis SEQUEL/2, puis simplement SQL. Aujourd'hui, SQL est la norme de facto pour les systèmes de gestion de bases de données relationnelles.

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

SQL2 (ou SQL-92) couvre à peu près tout ce dont vous avez besoin : manipulation de schéma de base de données, gestion des transactions et des sessions, architectures client-serveur ou outils de développement d'applications.

La prochaine étape du développement du langage est la variante 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.

Il existe actuellement trois niveaux de langue : Débutant, Intermédiaire et Complet. De nombreux fournisseurs de bases de données utilisent leurs propres implémentations de SQL, basées au moins sur le niveau initial de la norme ANSI pertinente et contenant certaines extensions spécifiques à un SGBD particulier. En tableau. 4.9 montre 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 Anywhere watcom-sql
Serveur SQL SYBASE Transact_SQL
MySQL SQL
Oracle PL/SQL

Les bases de données orientées objet utilisent le langage de requête objet OQL (Object Query Language). Le langage OQL était basé sur la commande SQL2 SELECT et ajoutait la possibilité d'envoyer une requête à un objet ou à une collection d'objets, ainsi que la possibilité d'appeler des méthodes dans 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 le plus compatible possible pour un SGBD de cette classe avec le SGBD SYBASE SQL Server. L'un des aspects de cette compatibilité est le support dans SYBASE SQL Anywhere d'un dialecte du langage SQL tel que Transaction SQL. Ce dialecte est utilisé dans SYBASE SQL Server et peut être utilisé dans SYBASE SQL Anywhere avec son propre dialecte du langage SQL - watcom-sql.

question test

1. Comment classer un SGBD ?

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

3. Quels sont les principaux éléments des modèles infologiques ?

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

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

6. Que permet la procédure de normalisation de table ?

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

8. Quel type de SGBD est MS Access ?

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

10. À quoi servent les instructions SQL de base ?

La norme de langage SQL a été adoptée en 1992 et est toujours utilisée aujourd'hui. C'est lui qui est devenu la norme pour beaucoup.Bien sûr, certains fabricants utilisent leurs propres interprétations de la norme. Mais dans tout système, il existe toujours des composants principaux - les instructions SQL.

Introduction

À l'aide d'instructions SQL, les valeurs et les tables sont gérées et reçues pour une analyse et un affichage plus approfondis. Il s'agit d'un ensemble de mots-clés par lesquels le système comprend quoi faire avec les données.

Plusieurs catégories d'instructions SQL sont définies :

  • définition des objets de la base de données ;
  • manipulation de valeur ;
  • protection et gestion;
  • paramètres de session ;
  • informations de base ;
  • SQL statique ;
  • SQL dynamique.

Instructions SQL pour manipuler des données

INSÉRER. Insère des lignes dans une table existante. Il peut être utilisé à la fois pour une valeur et plusieurs, déterminés par certaines conditions. Par exemple:

nom de table (nom de colonne 1, nom de colonne 2)

VALEURS (valeur 1, valeur 2).

Pour utiliser l'instruction INSERT sur plusieurs valeurs, la syntaxe est :

nom de table 1 (nom de colonne 1, nom de colonne 2)

SELECT nom de colonne 1, nom de colonne 2

FROM nom de table 2

WHERE nom de table 2.nom de colonne 1>2

Cette requête sélectionnera toutes les données de la table 2 supérieures à 2 dans la colonne 1 et les insèrera dans la première.

METTRE À JOUR. Comme son nom l'indique, cette instruction de requête SQL met à jour les données d'une table existante en fonction d'un certain attribut.

UPDATE nom de table 1

SET nom de colonne 2 = "Basilic"

WHERE nom de table 1.nom de colonne 1 = 1

Cette construction remplira avec la valeur Vasily toutes les lignes dans lesquelles elle rencontre le chiffre 1 dans la première colonne.

Données du tableau. Vous pouvez spécifier n'importe quelle condition ou supprimer toutes les lignes.

SUPPRIMER DU nom de la table

WHERE nom de table.nom de colonne 1 = 1

La requête ci-dessus supprimera de la base de données toutes les données avec une valeur de un dans la première colonne. Et voici comment vous pouvez effacer toute la table :

instruction SELECT

L'objectif principal de SELECT est de sélectionner des données en fonction de certaines conditions. Le résultat de son travail est toujours un nouveau tableau avec des données sélectionnées. L'opérateur MS peut être utilisé dans de nombreuses requêtes différentes. Par conséquent, vous pouvez également envisager d'autres mots clés connexes.

Pour sélectionner toutes les données d'une table particulière, utilisez le signe "*".

FROM nom de table 1

Le résultat de cette requête sera une copie exacte du tableau 1.

Et ici, il y a une sélection selon la condition WHERE, qui obtient du tableau 1 toutes les valeurs supérieures à 2 dans la colonne 1.

FROM nom de table 1

WHERE nom de table 1.nom de colonne 1 > 2

Vous pouvez également spécifier dans la sélection que seules certaines colonnes sont nécessaires.

SELECT nom de table 1.nom de colonne 1

FROM nom de table 1

Le résultat de cette requête sera toutes les lignes avec des valeurs de la colonne 1. À l'aide des instructions MS SQL, vous pouvez créer votre propre table en remplaçant, calculant et substituant certaines valeurs à la volée.

nom de table 1.nom de colonne 1

nom de table 1.nom de colonne 2

nom de table 1.nom de colonne 3

nom de table 1.nom de colonne 2 * nom de table 1.nom de colonne 3 AS SUMMA

FROM nom de table 1

Cette requête apparemment complexe récupère toutes les valeurs de la table 1, puis crée de nouvelles colonnes EQ et SUMMA. On inscrit le signe « + » dans la première, et dans la seconde le produit des données des colonnes 2 et 3. Le résultat peut être présenté sous forme de tableau, pour comprendre son fonctionnement :

Lorsque vous utilisez l'instruction SELECT, vous pouvez immédiatement trier les données en fonction d'un attribut. Pour cela, le mot ORDER BY est utilisé.

nom de table 1.nom de colonne 1

nom de table 1.nom de colonne 2

nom de table 1.nom de colonne 3

FROM nom de table 1

ORDRE PAR nom de colonne 2

Le tableau résultant ressemblera à ceci :

Autrement dit, toutes les lignes ont été définies dans un ordre tel que les valeurs de la colonne 2 étaient dans l'ordre croissant.

Les données peuvent également être extraites de plusieurs tables. Pour plus de clarté, vous devez d'abord imaginer qu'il y en a deux dans la base de données, quelque chose comme ceci :

Tableau "Employés"

Tableau "Salaire"

Vous devez maintenant lier d'une manière ou d'une autre ces deux tables pour obtenir des valeurs communes. En utilisant des instructions SQL de base, vous pouvez procéder comme ceci :

Numéro du personnel

Le nom de l'employé

Salaire Taux

Salaire.

DE Employés, Salaire

WHERE Employés.Numéro = Salaire.Numéro

Ici, il y a une sélection de deux tables de valeurs différentes, unies par numéro. Le résultat sera le jeu de données suivant :

Un peu plus sur SELECT. Utilisation des fonctions d'agrégation

L'un des principaux opérateurs peut effectuer des calculs sur le fetch. Pour ce faire, il utilise certaines fonctions et formules.

Par exemple, pour obtenir le nombre d'enregistrements de la table "Employés", il faut utiliser la requête :

SÉLECTIONNER COMPTER (*) COMME N

DE Employés

Le résultat est un tableau avec une valeur et une colonne.

Vous pouvez utiliser cette requête et voir ce qui se passe :

SOMME(Salaire. Couru) AS SUMMA

MAX(Salaire.Accrued) AS MAX

MIN (Salaire. Couru) COMME MIN

AVG(Salaire.Accrued) AS SRED

DE Salaire

La table finale ressemblera à ceci :

De cette manière, vous pouvez sélectionner les valeurs souhaitées dans la base de données en effectuant le calcul de diverses fonctions à la volée.

Union, intersection et différences

Combiner plusieurs requêtes en SQL

SELECT Employés.Nom

DE Employés

WHERE Employés.Nombre = 1

SELECT Employés.Nom

DE Employés, Salaire

WHERE Salaire.Numéro = 1

Il faut garder à l'esprit qu'avec une telle jointure, les tables doivent être compatibles. C'est-à-dire avoir le même nombre de colonnes.

Syntaxe de l'instruction SELECT et ordre de traitement

Tout d'abord, SELECT définit la zone à partir de laquelle il prendra des données. Le mot-clé FROM est utilisé pour cela. S'il n'est pas précisé quoi choisir exactement.

Ensuite, il peut y avoir une clause SQL WHERE. Avec son aide, SELECT parcourt toutes les lignes de la table et vérifie la conformité des données à la condition.

S'il y a un GROUP BY dans la requête, les valeurs sont regroupées en fonction des paramètres spécifiés.

Opérateurs de comparaison de données

Il en existe plusieurs types. En SQL, les opérateurs de comparaison peuvent tester différents types de valeurs.

    "=". Dénote, comme vous pouvez le deviner, l'égalité de deux expressions. Par exemple, il a déjà été utilisé dans les exemples ci-dessus - WHERE Salary.Number = 1.

    ">". Plus de signe. Si la valeur du côté gauche de l'expression est supérieure, la logique VRAI est renvoyée et la condition est considérée comme satisfaite.

    «<». Знак меньше. Обратный предыдущему оператор.

    Panneaux "<=» и «>=". Il diffère des opérateurs plus et moins simples en ce que si les opérandes sont égaux, la condition sera également vraie.

COMME

Ce mot-clé peut être traduit par "similaire". L'opérateur LIKE en SQL est utilisé à peu près de la même manière - il exécute une requête selon un modèle. C'est-à-dire qu'il vous permet d'étendre la sélection de données de la base de données à l'aide d'expressions régulières.

Par exemple, la tâche suivante a été définie : à partir de la base déjà connue "Employés" pour récupérer toutes les personnes dont le nom se termine par "I". La requête peut alors s'écrire comme ceci :

DE Employés

WHERE Nom COMME `%i`

Le signe de pourcentage dans ce cas signifie un masque, c'est-à-dire n'importe quel caractère et son nombre. Et par la lettre "i", SQL déterminera que le dernier caractère doit être exactement cela.

CAS

Cette instruction SQL Server est une implémentation de la sélection multiple. Il ressemble à la construction de commutateur dans de nombreux langages de programmation. L'instruction CASE dans SQL exécute une action sur plusieurs conditions.

Par exemple, vous devez sélectionner les valeurs maximales et minimales dans le tableau des salaires.

La requête peut alors s'écrire comme ceci :

DE Salaire

WHERE CASE WHEN SELECT MAX(Accrued) THEN Maximum

QUAND SÉLECTIONNEZ MIN(Accrued) ALORS Minimum

Dans ce contexte, le système recherche la valeur maximale et minimale dans la colonne Couru. Ensuite, en utilisant END, un champ "total" est créé, dans lequel "Maximum" ou "Minimum" sera saisi, selon le résultat de la condition.

Soit dit en passant, SQL a également une forme plus compacte de CASE - COALESCE.

Opérateurs de définition de données

Cette vue vous permet d'apporter une variété de modifications aux tables - créer, supprimer, modifier et travailler avec des index.

Le premier qui mérite d'être considéré est CREATE TABLE. Il ne fait rien de plus que créer une table. Si vous tapez simplement la requête CREATE TABLE, rien ne se passera, car vous devez encore spécifier quelques paramètres.

Par exemple, pour créer la table Employés déjà familière, vous devez utiliser les commandes :

CRÉER TABLE Employés

(Nombre nombre(10) NON NULL

Nom varchar(50) NOT NULL

Nom de famille varchar(50) NOT NULL)

Dans cette requête, les noms des champs et leurs types sont immédiatement déterminés entre parenthèses, ainsi que s'il peut être égal à NULL.

TABLEAU DE DÉCOMPTE

Effectue une tâche simple, en supprimant la table spécifiée. Possède un paramètre IF EXISTS supplémentaire. Il absorbe une erreur à la suppression si la table recherchée n'existe pas. Exemple d'utilisation :

SUPPRIMER TABLE Employés SI EXISTE.

CRÉER UN INDEX

SQL dispose d'un système d'index qui vous permet d'accélérer l'accès aux données. En général, il s'agit d'un lien qui pointe vers une colonne spécifique. Vous pouvez créer un index avec une simple requête :

CREATE INDEX nom_index

ON nom_table(nom_colonne)

Cet opérateur est utilisé dans T-SQL, Oracle, PL SQL et de nombreuses autres technologies d'interprétation.

MODIFIER TABLE

Un opérateur très fonctionnel avec de nombreuses options. En général, cela modifie la structure, la définition et le placement des tables. L'opérateur est utilisé dans Oracle SQL, Postgres et bien d'autres.

    AJOUTER. Ajoute une colonne à un tableau. Sa syntaxe est : ALTER TABLE nom_table ADD nom_colonne type_données_stockées. Peut avoir une option IF NOT EXISTS pour supprimer l'erreur si la colonne en cours de création existe déjà ;

    GOUTTE. Supprime une colonne. Il possède également une clé IF EXISTS, sans laquelle une erreur sera générée indiquant que la colonne requise est manquante ;

    MONNAIE. Sert à renommer le nom du champ en celui spécifié. Exemple d'utilisation : ALTER TABLE nom_table CHANGE ancien_nom nouveau_nom ;

    MODIFIER. Cette commande vous aidera à modifier le type et les attributs supplémentaires d'une colonne spécifique. Et il est utilisé comme ceci : ALTER TABLE nom_table MODIFY nom_colonne attributs type_données ;

CRÉER UNE VUE

En SQL, il existe une vue. En bref, c'est une sorte de table virtuelle avec des données. Il est formé à la suite d'une sélection à l'aide de l'instruction SQL SELECT. Les vues peuvent restreindre l'accès à la base de données, les masquer, remplacer les vrais noms de colonnes.

Le processus de création se déroule sur une simple requête :

CREATE VIEW nom de la vue AS SELECT FROM * nom de la table

L'échantillonnage peut se produire sur l'ensemble de la base de données dans son ensemble et selon certaines conditions.

Un peu sur les fonctions

Les requêtes SQL utilisent très souvent diverses fonctions intégrées qui vous permettent d'interagir avec les données et de les transformer à la volée. Cela vaut la peine de les considérer, car ils font partie intégrante d'un langage structuré.

    COMPTER. Compte les enregistrements ou les lignes d'une table particulière. En tant que paramètre, vous pouvez spécifier le nom de la colonne, puis les données en seront extraites. SELECT COUNT * FROM Employés ;

    A.V.G. s'applique uniquement aux colonnes contenant des données numériques. Son résultat est la détermination de la moyenne arithmétique de toutes les valeurs ;

    MIN et MAX. Ces fonctions ont déjà été utilisées dans cet article. Ils déterminent les valeurs maximales et minimales de la colonne spécifiée ;

    SOMME. C'est simple - la fonction calcule la somme des valeurs des colonnes. Il est utilisé exclusivement pour le type de données numérique. En ajoutant le paramètre DISTINCT à la requête, seules les valeurs uniques seront additionnées ;

    TOUR. Fonction d'arrondi des nombres fractionnaires décimaux. La syntaxe utilise le nom de la colonne et le nombre de décimales ;

    len. Une fonction simple qui calcule la longueur des valeurs d'une colonne. Le résultat sera un nouveau tableau avec une indication du nombre de caractères ;

    À PRÉSENT. Ce mot-clé est utilisé pour calculer la date et l'heure actuelles.

Opérateurs supplémentaires

De nombreux exemples d'instructions SQL ont des mots-clés qui effectuent de petites tâches mais simplifient encore considérablement les sélections ou les opérations de base de données.

    COMME. Il est utilisé lorsque vous avez besoin de visualiser le résultat en attribuant le nom spécifié à la table résultante.

    ENTRE. Un outil de sélection très pratique. Il spécifie la plage de valeurs à partir de laquelle obtenir les données. L'entrée accepte un paramètre à partir de et jusqu'à quel nombre la plage est utilisée ;.

    NE PAS. Un opérateur donne le contraire d'une expression.

    TRONQUER. Supprime les données de la région spécifiée de la base de données. Il se distingue des opérateurs similaires par l'impossibilité de récupérer les données après leur utilisation. Il convient de noter que l'implémentation de ce mot-clé dans différentes interprétations de SQL peut différer. Par conséquent, avant d'essayer d'utiliser TRUNCATE, il est préférable de lire les informations d'aide.

    LIMITE. Définit le nombre de lignes à afficher. La particularité de l'opérateur est qu'il est toujours situé à la fin. Il prend un paramètre obligatoire et un facultatif. Le premier spécifie le nombre de lignes avec les données sélectionnées à afficher. Et si le second est utilisé, alors l'opérateur fonctionne comme pour une plage de valeurs.

    SYNDICAT. Un opérateur très pratique pour combiner plusieurs requêtes. Il en a déjà rencontré parmi les exemples dans cet article. Vous pouvez afficher les lignes souhaitées de plusieurs tables en les joignant avec UNION pour une utilisation plus pratique. La syntaxe est : SELECT nom_colonne FROM nom_table UNION SELECT autre_nom_colonne FROM autre_nom_table. Le résultat est un tableau croisé dynamique avec des requêtes combinées.

    CLÉ PRIMAIRE. Traduit par "clé primaire". En fait, c'est cette terminologie qui est utilisée dans les documents de référence. Il représente l'identifiant de ligne unique. Il est utilisé, en règle générale, lors de la création d'une table pour spécifier le champ qui la contiendra.

    DÉFAUT. Tout comme l'opérateur précédent, il est utilisé dans le processus d'exécution de la requête de création. Il définit la valeur par défaut qui sera renseignée dans le champ lors de sa création.

    NUL. Les débutants et pas seulement les programmeurs oublient très souvent la possibilité d'obtenir une valeur NULL lors de requêtes. En conséquence, une erreur se glisse dans le code, ce qui est difficile à détecter lors du débogage. Par conséquent, lors de la création de tables, de la sélection ou du recalcul de valeurs, vous devez vous arrêter et vous demander si l'occurrence de NULL dans cette section de la requête est prise en compte.

    Mémoire. Cet article a montré plusieurs fonctions qui peuvent effectuer certaines tâches. Lors du développement d'un shell pour travailler avec la base de données, vous pouvez "l'emporter" sur le calcul d'expressions simples sur le système de gestion de base de données. Dans certains cas, cela donne une amélioration significative des performances.

    Restrictions. Si vous n'avez besoin d'en obtenir que deux à partir d'une base de données contenant des milliers de lignes, vous devez utiliser des opérateurs tels que LIMIT ou TOP. Il n'est pas nécessaire d'extraire des données à l'aide du langage de développement shell.

    Composé. Après avoir reçu des données de plusieurs tables, de nombreux programmeurs commencent à les rassembler à l'aide de la mémoire shell. Mais pourquoi? Après tout, vous pouvez faire une demande dans laquelle tout cela sera présent. Vous n'avez pas besoin d'écrire de code supplémentaire et de réserver de la mémoire supplémentaire dans le système.

    Tri. S'il est possible d'appliquer le tri dans la requête, c'est-à-dire par le SGBD, vous devez l'utiliser. Cela permettra d'économiser considérablement sur les ressources lors de l'exécution d'un programme ou d'un service.

    Beaucoup de demandes. Si vous devez insérer de nombreux enregistrements de manière séquentielle, alors pour l'optimisation, vous devriez penser à insérer des données par lots dans une requête. Cela augmentera également les performances de l'ensemble du système dans son ensemble.

    Placement judicieux des données. Avant de compiler la structure de la base de données, vous devez vous demander si un tel nombre de tables et de champs est nécessaire. Peut-être existe-t-il un moyen de les fusionner ou d'en supprimer certains. Très souvent, les programmeurs utilisent une quantité excessive de données qui ne seront jamais utilisées nulle part.

    Les types. Pour économiser de l'espace et des ressources, vous devez être sensible aux types de données que vous utilisez. S'il est possible d'utiliser un type moins "lourd" en mémoire, alors il faut l'utiliser. Par exemple, si l'on sait que dans un champ donné la valeur numérique ne dépassera pas 255, alors pourquoi utiliser un INT de 4 octets s'il y a un TINYINT de 1 octet.

Conclusion

En conclusion, il convient de noter que le langage de requête structuré SQL est désormais utilisé presque partout - sites, services Web, programmes PC, applications pour appareils mobiles. Par conséquent, la connaissance de SQL aidera toutes les branches du développement.

Cependant, les modifications de la norme de langue d'origine diffèrent parfois les unes des autres. Par exemple, les instructions SQL PL peuvent avoir une syntaxe différente de celle de SQL Server. Par conséquent, avant de commencer à développer avec cette technologie, vous devez lire les manuels correspondants.

À l'avenir, il est peu probable que des analogues qui pourraient surpasser SQL en termes de fonctionnalités et de performances apparaissent, ce domaine est donc un créneau assez prometteur pour tout programmeur.