T-SQL - Guide rapide
Dans les années 1970, le produit appelé «SEQUEL», un langage de requête anglais structuré, développé par IBM et plus tard SEQUEL a été renommé «SQL» qui signifie Structured Query Language.
En 1986, SQL a été approuvé par l'ANSI (American National Standards Institute) et en 1987, il a été approuvé par l'ISO (International Standards Organization).
SQL est un langage de requête de structure qui est un langage de base de données commun pour tous les produits SGBDR. Différents fournisseurs de produits SGBDR ont développé leur propre langage de base de données en étendant SQL pour leurs propres produits SGBDR.
T-SQL signifie Transact Structure Query Language, qui est un produit Microsoft et est une extension du langage SQL.
Exemple
MS SQL Server - SQL \ T-SQL
ORACLE - SQL \ PL-SQL
Le type de données SQL Server est un attribut qui spécifie les types de données de n'importe quel objet. Chaque colonne, variable et expression a un type de données associé dans SQL Server. Ces types de données peuvent être utilisés lors de la création de tables. Vous pouvez choisir un type de données particulier pour une colonne de table en fonction de vos besoins.
SQL Server propose sept catégories, y compris une autre catégorie de types de données à utiliser.
Types numériques exacts
Type | De | À |
---|---|---|
bigint | -9 223 372 036 854 775 808 | 9 223 372 036 854 775 807 |
int | -2 147 483 648 | 2 147 483 647 |
smallint | -32 768 | 32 767 |
minuscule | 0 | 255 |
bit | 0 | 1 |
décimal | -10 ^ 38 +1 | 10 ^ 38 –1 |
numérique | -10 ^ 38 +1 | 10 ^ 38 –1 |
argent | -922 337 203 685 477,5808 | +922 337 203 685 477 5807 |
petit argent | -214 748,3648 | +214.748.3647 |
Numérique et décimal sont des types de données à précision fixe et échelle et sont fonctionnellement équivalents.
Types numériques approximatifs
Type | De | À |
---|---|---|
Flotte | -1,79E + 308 | 1,79E + 308 |
Réel | -3,40E + 38 | 3,40E + 38 |
Types de date et d'heure
Type | De | À |
---|---|---|
datetime(Précision de 3,33 millisecondes) |
1 janv.1753 | 31 déc.9999 |
smalldatetime(Précision 1 minute) |
1 janv.1900 | 6 juin 2079 |
date(Précision d'un jour. Introduit dans SQL Server 2008) |
1 janvier 0001 | 31 déc.9999 |
datetimeoffset(Précision de 100 nanosecondes. Introduit dans SQL Server 2008) |
1 janvier 0001 | 31 déc.9999 |
datetime2(Précision de 100 nanosecondes. Introduit dans SQL Server 2008) |
1 janvier 0001 | 31 déc.9999 |
time(Précision de 100 nanosecondes. Introduit dans SQL Server 2008) |
00: 00: 00.0000000 | 23: 59: 59.9999999 |
Chaînes de caractères
Sr.Non | Type et description |
---|---|
1 | char Données de caractère non Unicode de longueur fixe avec une longueur maximale de 8 000 caractères. |
2 | varchar Données non Unicode de longueur variable avec un maximum de 8 000 caractères. |
3 | Varchar (max) Données non Unicode de longueur variable d'une longueur maximale de 231 caractères (introduites dans SQL Server 2005). |
4 | text Données non Unicode de longueur variable d'une longueur maximale de 2 147 483 647 caractères |
Chaînes de caractères Unicode
Sr.Non | Type et description |
---|---|
1 | nchar Données Unicode de longueur fixe d'une longueur maximale de 4 000 caractères. |
2 | nvarchar Données Unicode de longueur variable d'une longueur maximale de 4 000 caractères. |
3 | Nvarchar (max) Données Unicode de longueur variable avec une longueur maximale de 2 à 30 caractères (introduites dans SQL Server 2005). |
4 | ntext Données Unicode de longueur variable d'une longueur maximale de 1 073 741 823 caractères. |
Chaînes binaires
Sr.Non | Type et description |
---|---|
1 | binary Données binaires de longueur fixe d'une longueur maximale de 8 000 octets. |
2 | varbinary Données binaires de longueur variable d'une longueur maximale de 8 000 octets. |
3 | varbinary(max) Données binaires de longueur variable d'une longueur maximale de 2 31 octets (introduites dans SQL Server 2005). |
4 | image Données binaires de longueur variable d'une longueur maximale de 2 147 483 647 octets. |
Autres types de données
sql_variant - Stocke les valeurs de divers types de données pris en charge par SQL Server, à l'exception du texte, du ntext et de l'horodatage.
timestamp - Stocke un numéro unique à l'échelle de la base de données qui est mis à jour chaque fois qu'une ligne est mise à jour.
uniqueidentifier - Stocke un identifiant global unique (GUID).
xml- Stocke les données XML. Vous pouvez stocker des instances XML dans une colonne ou une variable (introduit dans SQL Server 2005).
cursor - Une référence à un curseur.
table - Stocke un jeu de résultats pour un traitement ultérieur.
hierarchyid - Un type de données système de longueur variable utilisé pour représenter la position dans une hiérarchie (introduit dans SQL Server 2008).
La création d'une table de base implique de nommer la table et de définir ses colonnes et le type de données de chaque colonne.
Le serveur SQL CREATE TABLE instruction est utilisée pour créer une nouvelle table.
Syntaxe
Voici la syntaxe de base de l'instruction CREATE TABLE -
CREATE TABLE table_name(
column1 datatype,
column2 datatype,
column3 datatype,
.....
columnN datatype,
PRIMARY KEY( one or more columns ));
CREATE TABLE est le mot-clé indiquant au système de base de données ce que vous voulez faire. Dans ce cas, vous souhaitez créer une nouvelle table. Le nom ou l'identificateur unique de la table suit l'instruction CREATE TABLE. Ensuite, entre parenthèses vient la liste définissant chaque colonne du tableau et de quel type de données il s'agit. La syntaxe devient plus claire à comprendre avec l'exemple suivant.
Une copie d'une table existante peut être créée à l'aide d'une combinaison de l'instruction CREATE TABLE et de l'instruction SELECT. Vous pouvez vérifier les détails complets dans Créer une table à l'aide d'une autre table.
Exemple
Dans cet exemple, créons une table CUSTOMERS avec ID comme clé primaire et NOT NULL sont les contraintes montrant que ces champs ne peuvent pas être NULL lors de la création d'enregistrements dans cette table -
CREATE TABLE CUSTOMERS(
ID INT NOT NULL,
NAME VARCHAR (20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25) ,
SALARY DECIMAL (18, 2),
PRIMARY KEY (ID));
Vous pouvez vérifier si votre table a été créée avec succès en regardant le message affiché par le serveur SQL, sinon vous pouvez utiliser la commande suivante -
exec sp_columns CUSTOMERS
La commande ci-dessus produit la sortie suivante.
TABLE_QUALIFIER TABLE_OWNER TABLE_NAME COLUMN_NAME DATA_TYPE TYPE_NAME
PRECISION LENGTH SCALE RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE
SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE SS_DATA_TYPE
TestDB dbo CUSTOMERS ID 4 int 10 4 0 10 0
NULL NULL 4 NULL NULL 1 NO 56
TestDB dbo CUSTOMERS NAME 12 varchar 20 20 NULL NULL 0
NULL NULL 12 NULL 20 2 NO 39
TestDB dbo CUSTOMERS AGE 4 int 10 4 0 10 0
NULL NULL 4 NULL NULL 3 NO 56
TestDB dbo CUSTOMERS ADDRESS 1 char 25 25 NULL NULL 1
NULL NULL 1 NULL 25 4 YES 39
TestDB dbo CUSTOMERS SALARY 3 decimal 18 20 2 10 1
NULL NULL 3 NULL NULL 5 YES 106
Vous pouvez maintenant voir que la table CUSTOMERS est disponible dans votre base de données que vous pouvez utiliser pour stocker les informations requises relatives aux clients.
Le serveur SQL DROP TABLE est utilisée pour supprimer une définition de table et toutes les données, index, déclencheurs, contraintes et spécifications d'autorisation pour cette table.
Note - Vous devez être prudent lorsque vous utilisez cette commande car une fois qu'une table est supprimée, toutes les informations disponibles dans la table seront également perdues à jamais.
Syntaxe
Voici la syntaxe de base de l'instruction DROP TABLE -
DROP TABLE table_name;
Exemple
Vérifions d'abord la table CUSTOMERS puis nous la supprimerons de la base de données -
Exec sp_columns CUSTOMERS;
La commande ci-dessus montre le tableau suivant.
TABLE_QUALIFIER TABLE_OWNER TABLE_NAME COLUMN_NAME DATA_TYPE TYPE_NAME
PRECISION LENGTH SCALE RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE
SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE SS_DATA_TYPE
TestDB dbo CUSTOMERS ID 4 int 10 4 0 10 0
NULL NULL 4 NULL NULL 1 NO 56
TestDB dbo CUSTOMERS NAME 12 varchar 20 20 NULL NULL 0
NULL NULL 12 NULL 20 2 NO 39
TestDB dbo CUSTOMERS AGE 4 int 10 4 0 10 0
NULL NULL 4 NULL NULL 3 NO 56
TestDB dbo CUSTOMERS ADDRESS 1 char 25 25 NULL NULL 1
NULL NULL 1 NULL 25 4 YES 39
TestDB dbo CUSTOMERS SALARY 3 decimal 18 20 2 10 1
NULL NULL 3 NULL NULL 5 YES 106
La table CUSTOMERS est disponible dans la base de données, alors supprimons-la. Voici la commande pour le même.
DROP TABLE CUSTOMERS;
Command(s) completed successfully.
Avec la commande ci-dessus, vous n'obtiendrez aucune ligne.
Exec sp_columns CUSTOMERS;
No rows\data will be displayed
Le serveur SQL INSERT INTO L'instruction est utilisée pour ajouter de nouvelles lignes de données à une table dans la base de données.
Syntaxe
Voici les deux syntaxes de base de l'instruction INSERT INTO.
INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]
VALUES (value1, value2, value3,...valueN);
Où colonne1, colonne2, ... colonneN sont les noms des colonnes de la table dans lesquelles vous souhaitez insérer des données.
Vous n'avez pas besoin de spécifier le nom des colonnes dans la requête SQL si vous ajoutez des valeurs pour toutes les colonnes de la table. Mais assurez-vous que l'ordre des valeurs est dans le même ordre que les colonnes du tableau. Voici la syntaxe SQL INSERT INTO -
INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);
Exemple
Les instructions suivantes créeront six enregistrements dans la table CUSTOMERS -
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Khilan', 25, 'Delhi', 1500.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'kaushik', 23, 'Kota', 2000.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (4, 'Chaitali', 25, 'Mumbai', 6500.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (5, 'Hardik', 27, 'Bhopal', 8500.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (6, 'Komal', 22, 'MP', 4500.00 );
Syntaxe
Vous pouvez créer un enregistrement dans la table CUSTOMERS en utilisant la deuxième syntaxe comme suit -
INSERT INTO CUSTOMERS VALUES (7, 'Muffy', 24, 'Indore', 10000.00 );
Toutes les instructions ci-dessus produiront les enregistrements suivants dans la table CUSTOMERS -
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
Remplir une table à l'aide d'une autre table
Vous pouvez remplir des données dans une table via l'instruction SELECT sur une autre table à condition qu'une autre table dispose d'un ensemble de champs, qui sont nécessaires pour remplir la première table. Voici la syntaxe -
INSERT INTO first_table_name
SELECT column1, column2, ...columnN
FROM second_table_name
[WHERE condition];
serveur SQL SELECTL'instruction est utilisée pour récupérer les données d'une table de base de données qui retourne des données sous la forme d'une table de résultats. Ces tableaux de résultats sont appelésresult-sets.
Syntaxe
Voici la syntaxe de base de l'instruction SELECT -
SELECT column1, column2, columnN FROM table_name;
Où, colonne1, colonne2 ... sont les champs d'une table dont vous voulez récupérer les valeurs. Si vous souhaitez récupérer tous les champs disponibles dans le champ, vous pouvez utiliser la syntaxe suivante -
SELECT * FROM table_name;
Exemple
Considérez la table CUSTOMERS ayant les enregistrements suivants -
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
La commande suivante est un exemple, qui récupérerait les champs ID, Nom et Salaire des clients disponibles dans la table CUSTOMERS -
SELECT ID, NAME, SALARY FROM CUSTOMERS;
La commande ci-dessus produira la sortie suivante.
ID NAME SALARY
1 Ramesh 2000.00
2 Khilan 1500.00
3 kaushik 2000.00
4 Chaitali 6500.00
5 Hardik 8500.00
6 Komal 4500.00
7 Muffy 10000.00
Si vous souhaitez récupérer tous les champs de la table CUSTOMERS, utilisez la requête suivante -
SELECT * FROM CUSTOMERS;
Ce qui précède produira la sortie suivante.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
Le serveur SQL UPDATE La requête est utilisée pour modifier les enregistrements existants dans une table.
Vous pouvez utiliser la clause WHERE avec la requête UPDATE pour mettre à jour les lignes sélectionnées, sinon toutes les lignes seraient affectées.
Syntaxe
Voici la syntaxe de base de la requête UPDATE avec la clause WHERE -
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
Vous pouvez combiner N nombre de conditions à l'aide des opérateurs AND ou OR.
Exemple
Considérez la table CUSTOMERS ayant les enregistrements suivants -
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
La commande suivante est un exemple, qui mettrait à jour ADDRESS pour un client dont l'ID est 6 -
UPDATE CUSTOMERS
SET ADDRESS = 'Pune'
WHERE ID = 6;
La table CUSTOMERS aura désormais les enregistrements suivants -
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 Pune 4500.00
7 Muffy 24 Indore 10000.00
Si vous souhaitez modifier toutes les valeurs de colonne ADDRESS et SALARY dans la table CUSTOMERS, vous n'avez pas besoin d'utiliser la clause WHERE. La requête UPDATE serait la suivante -
UPDATE CUSTOMERS
SET ADDRESS = 'Pune', SALARY = 1000.00;
La table CUSTOMERS aura désormais les enregistrements suivants.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Pune 1000.00
2 Khilan 25 Pune 1000.00
3 kaushik 23 Pune 1000.00
4 Chaitali 25 Pune 1000.00
5 Hardik 27 Pune 1000.00
6 Komal 22 Pune 1000.00
7 Muffy 24 Pune 1000.00
Le serveur SQL DELETE La requête est utilisée pour supprimer les enregistrements existants d'une table.
Vous devez utiliser la clause WHERE avec la requête DELETE pour supprimer les lignes sélectionnées, sinon tous les enregistrements seraient supprimés.
Syntaxe
Voici la syntaxe de base de la requête DELETE avec la clause WHERE -
DELETE FROM table_name
WHERE [condition];
Vous pouvez combiner N nombre de conditions à l'aide des opérateurs AND ou OR.
Exemple
Considérez la table CUSTOMERS ayant les enregistrements suivants -
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
La commande suivante est un exemple, qui supprimerait un client, dont l'ID est 6 -
DELETE FROM CUSTOMERS
WHERE ID = 6;
La table CUSTOMERS aura désormais les enregistrements suivants.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
7 Muffy 24 Indore 10000.00
Si vous souhaitez SUPPRIMER tous les enregistrements de la table CUSTOMERS, vous n'avez pas besoin d'utiliser la clause WHERE. La requête DELETE serait la suivante -
DELETE FROM CUSTOMERS;
La table CUSTOMERS n'aura plus aucun enregistrement.
Le serveur MS SQL WHERE La clause est utilisée pour spécifier une condition lors de la récupération des données à partir d'une seule table ou lors de la jonction avec plusieurs tables.
Si la condition donnée est satisfaite, alors seulement elle renvoie une valeur spécifique de la table. Vous devrez utiliser la clause WHERE pour filtrer les enregistrements et récupérer uniquement les enregistrements nécessaires.
La clause WHERE n'est pas seulement utilisée dans l'instruction SELECT, mais elle est également utilisée dans l'instruction UPDATE, DELETE, etc., que nous examinerons dans les chapitres suivants.
Syntaxe
Voici la syntaxe de base de l'instruction SELECT avec la clause WHERE -
SELECT column1, column2, columnN
FROM table_name
WHERE [condition]
Vous pouvez spécifier une condition en utilisant une comparaison ou des opérateurs logiques comme>, <, =, LIKE, NOT, etc. L'exemple suivant rendra ce concept clair.
Exemple
Considérez la table CUSTOMERS ayant les enregistrements suivants -
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
La commande suivante est un exemple qui récupère les champs ID, Nom et Salaire de la table CUSTOMERS où le salaire est supérieur à 2000.
SELECT ID, NAME, SALARY
FROM CUSTOMERS
WHERE SALARY > 2000;
La commande ci-dessus produira la sortie suivante.
ID NAME SALARY
4 Chaitali 6500.00
5 Hardik 8500.00
6 Komal 4500.00
7 Muffy 10000.00
La commande suivante est un exemple qui récupère les champs ID, Nom et Salaire de la table CUSTOMERS pour un client avec le nom «Hardik». Il est important de noter que toutes les chaînes doivent être données entre guillemets simples ('') alors que les valeurs numériques doivent être données sans guillemets comme dans l'exemple ci-dessus -
SELECT ID, NAME, SALARY
FROM CUSTOMERS
WHERE NAME = 'Hardik';
La commande ci-dessus produira la sortie suivante.
ID NAME SALARY
5 Hardik 8500.00
Le serveur MS SQL LIKELa clause est utilisée pour comparer une valeur à des valeurs similaires à l'aide d'opérateurs génériques. Deux caractères génériques sont utilisés conjointement avec l'opérateur LIKE -
- Le signe de pourcentage (%)
- Le trait de soulignement (_)
Le signe de pourcentage représente zéro, un ou plusieurs caractères. Le trait de soulignement représente un seul nombre ou caractère. Les symboles peuvent être utilisés dans des combinaisons.
Syntaxe
Voici la syntaxe de base de% et _.
SELECT *\column-list FROM table_name
WHERE column LIKE 'XXXX%'
or
SELECT *\column-list FROM table_name
WHERE column LIKE '%XXXX%'
or
SELECT *\column-list FROM table_name
WHERE column LIKE 'XXXX_'
or
SELECT *\column-list FROM table_name
WHERE column LIKE '_XXXX'
or
SELECT *\column-list FROM table_name
WHERE column LIKE '_XXXX_'
Vous pouvez combiner N nombre de conditions à l'aide des opérateurs AND ou OR. XXXX peut être n'importe quelle valeur numérique ou chaîne.
Exemple
Voici un certain nombre d'exemples montrant une partie WHERE ayant une clause LIKE différente avec les opérateurs '%' et '_'.
Sr.Non | Déclaration et description |
---|---|
1 | WHERE SALARY LIKE '200%' Recherche toutes les valeurs commençant par 200 |
2 | WHERE SALARY LIKE '%200%' Recherche toutes les valeurs qui ont 200 dans n'importe quelle position |
3 | WHERE SALARY LIKE '_00%' Recherche toutes les valeurs qui ont 00 dans les deuxième et troisième positions |
4 | WHERE SALARY LIKE '2_%_%' Recherche toutes les valeurs commençant par 2 et comportant au moins 3 caractères |
5 | WHERE SALARY LIKE '%2' Recherche toutes les valeurs qui se terminent par 2 |
6 | WHERE SALARY LIKE '_2%3' Recherche toutes les valeurs qui ont un 2 en deuxième position et se terminent par un 3 |
sept | WHERE SALARY LIKE '2___3' Recherche toutes les valeurs d'un nombre à cinq chiffres commençant par 2 et se terminant par 3 |
Considérez la table CUSTOMERS ayant les enregistrements suivants.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
La commande suivante est un exemple, qui affichera tous les enregistrements de la table CUSTOMERS où SALARY commence par 200.
SELECT * FROM CUSTOMERS
WHERE SALARY LIKE '200%';
La commande ci-dessus produira la sortie suivante.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
3 kaushik 23 Kota 2000.00
Le serveur MS SQL ORDERLa clause BY est utilisée pour trier les données par ordre croissant ou décroissant, en fonction d'une ou plusieurs colonnes. Certaines requêtes de tri de base de données donnent par défaut un ordre croissant.
Syntaxe
Voici la syntaxe de base de la clause ORDER BY.
SELECT column-list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC];
Vous pouvez utiliser plusieurs colonnes dans la clause ORDER BY. Assurez-vous que quelle que soit la colonne que vous utilisez pour trier, cette colonne doit être dans la liste des colonnes.
Exemple
Considérez la table CUSTOMERS ayant les enregistrements suivants -
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
La commande suivante est un exemple, qui trierait le résultat par ordre croissant par NOM et SALAIRE.
SELECT * FROM CUSTOMERS
ORDER BY NAME, SALARY
La commande ci-dessus produira la sortie suivante.
ID NAME AGE ADDRESS SALARY
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
3 kaushik 23 Kota 2000.00
2 Khilan 25 Delhi 1500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
1 Ramesh 32 Ahmedabad 2000.00
La commande suivante est un exemple, qui trierait le résultat par ordre décroissant par NOM.
SELECT * FROM CUSTOMERS
ORDER BY NAME DESC
La commande ci-dessus produira le résultat suivant -
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
7 Muffy 24 Indore 10000.00
6 Komal 22 MP 4500.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
5 Hardik 27 Bhopal 8500.00
4 Chaitali 25 Mumbai 6500.00
Le serveur SQL GROUP BY La clause est utilisée en collaboration avec l'instruction SELECT pour organiser des données identiques en groupes.
La clause GROUP BY suit la clause WHERE dans une instruction SELECT et précède la clause ORDER BY.
Syntaxe
Voici la syntaxe de base de la clause GROUP BY. La clause GROUP BY doit respecter les conditions de la clause WHERE et doit précéder la clause ORDER BY si elle est utilisée.
SELECT column1, column2
FROM table_name
WHERE [ conditions ]
GROUP BY column1, column2
ORDER BY column1, column2
Exemple
Considérez que la table CUSTOMERS contient les enregistrements suivants -
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
Si vous souhaitez connaître le montant total du salaire de chaque client, la requête GROUP BY sera la suivante.
SELECT NAME, SUM(SALARY) as [sum of salary] FROM CUSTOMERS
GROUP BY NAME;
La commande ci-dessus produira la sortie suivante.
NAME sum of salary
Chaitali 6500.00
Hardik 8500.00
kaushik 2000.00
Khilan 1500.00
Komal 4500.00
Muffy 10000.00
Ramesh 2000.00
Considérons maintenant la table CUSTOMERS suivante ayant les enregistrements suivants avec des noms en double.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
Si nous voulons connaître le montant total du salaire de chaque client, la requête suivante sera GROUP BY.
SELECT NAME, SUM(SALARY) as [sum of salary] FROM CUSTOMERS
GROUP BY NAME
La commande ci-dessus produira la sortie suivante.
NAME sum of salary
Hardik 8500.00
kaushik 8500.00
Komal 4500.00
Muffy 10000.00
Ramesh 3500.00
Le serveur MS SQL DISTINCT Le mot clé est utilisé en conjonction avec l'instruction SELECT pour éliminer tous les enregistrements en double et récupérer uniquement les enregistrements uniques.
Il peut y avoir une situation où vous avez plusieurs enregistrements en double dans une table. Lors de la récupération de tels enregistrements, il est plus judicieux de récupérer uniquement les enregistrements uniques au lieu de récupérer les enregistrements en double.
Syntaxe
Voici la syntaxe de base du mot clé DISTINCT pour éliminer les enregistrements en double.
SELECT DISTINCT column1, column2,.....columnN
FROM table_name
WHERE [condition]
Exemple
Considérez la table CUSTOMERS ayant les enregistrements suivants.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
Voyons comment la requête SELECT suivante renvoie des enregistrements de salaire en double.
SELECT SALARY FROM CUSTOMERS
ORDER BY SALARY
La commande ci-dessus produira la sortie suivante où le salaire 2000 vient deux fois, ce qui est un enregistrement en double de la table d'origine.
SALARY
1500.00
2000.00
2000.00
4500.00
6500.00
8500.00
10000.00
Utilisons maintenant le mot clé DISTINCT avec la requête SELECT ci-dessus et voyons le résultat.
SELECT DISTINCT SALARY FROM CUSTOMERS
ORDER BY SALARY
La commande ci-dessus produit la sortie suivante où nous n'avons aucune entrée en double.
SALARY
1500.00
2000.00
4500.00
6500.00
8500.00
10000.00
Le serveur MS SQL JoinsLa clause est utilisée pour combiner les enregistrements de deux ou plusieurs tables dans une base de données. Un JOIN est un moyen de combiner des champs de deux tables en utilisant des valeurs communes à chacune.
Considérez les deux tableaux suivants, (a) Le tableau CUSTOMERS est le suivant -
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
(b) Un autre tableau est ORDRES comme suit -
OID DATE CUSTOMER_ID AMOUNT
100 2009-10-08 00:00:00.000 3 1500.00
101 2009-11-20 00:00:00.000 2 1560.00
102 2009-10-08 00:00:00.000 3 3000.00
103 2008-05-20 00:00:00.000 4 2060.00
Joignons ces deux tables dans notre instruction SELECT comme suit -
SELECT ID, NAME, AGE, AMOUNT
FROM CUSTOMERS, ORDERS
WHERE CUSTOMERS.ID = ORDERS.CUSTOMER_ID
OR
SELECT A.ID, A.NAME, A.AGE, B.AMOUNT
FROM CUSTOMERS A inner join ORDERS B on A.ID = B.Customer_ID
La commande ci-dessus produira la sortie suivante.
ID NAME AGE AMOUNT
2 Khilan 25 1560.00
3 kaushik 23 1500.00
3 kaushik 23 3000.00
4 Chaitali 25 2060.00
Il est à noter que la jointure est effectuée dans la clause WHERE. Plusieurs opérateurs peuvent être utilisés pour joindre des tables, tels que =, <,>, <>, <=,> =,! =, BETWEEN, LIKE et NOT; ils peuvent tous être utilisés pour joindre des tables. Cependant, l'opérateur le plus courant est le symbole égal.
Types de jointure MS SQL Server -
Il existe différents types de jointures disponibles dans MS SQL Server -
INNER JOIN - Renvoie des lignes lorsqu'il y a une correspondance dans les deux tables.
LEFT JOIN - Renvoie toutes les lignes de la table de gauche, même s'il n'y a aucune correspondance dans la table de droite.
RIGHT JOIN - Renvoie toutes les lignes de la table de droite, même s'il n'y a aucune correspondance dans la table de gauche.
FULL JOIN - Renvoie des lignes lorsqu'il y a une correspondance dans l'une des tables.
SELF JOIN - Ceci est utilisé pour joindre une table à elle-même comme si la table était deux tables, en renommant temporairement au moins une table dans l'instruction MS SQL Server.
CARTESIAN JOIN - Renvoie le produit cartésien des ensembles d'enregistrements des deux tables jointes ou plus.
UNE sub-query ou Inner query ou Nested queryest une requête dans une autre requête SQL Server et incorporée dans la clause WHERE. Une sous-requête est utilisée pour renvoyer des données qui seront utilisées dans la requête principale comme condition pour restreindre davantage les données à récupérer.
Les sous-requêtes peuvent être utilisées avec les instructions SELECT, INSERT, UPDATE et DELETE avec les opérateurs tels que =, <,>,> =, <=, IN, BETWEEN, etc.
Il y a quelques règles que les sous-requêtes doivent suivre -
Vous devez mettre une sous-requête entre parenthèses.
Une sous-requête doit inclure une clause SELECT et une clause FROM.
Une sous-requête peut inclure des clauses WHERE, GROUP BY et HAVING facultatives.
Une sous-requête ne peut pas inclure de clauses COMPUTE ou FOR BROWSE.
Vous ne pouvez inclure une clause ORDER BY que lorsqu'une clause TOP est incluse.
Vous pouvez imbriquer des sous-requêtes jusqu'à 32 niveaux.
Sous-requêtes avec instruction SELECT
Syntaxe
Les sous-requêtes sont le plus souvent utilisées avec l'instruction SELECT. Voici la syntaxe de base.
SELECT column_name [, column_name ]
FROM table1 [, table2 ]
WHERE column_name OPERATOR
(SELECT column_name [, column_name ]
FROM table1 [, table2 ]
[WHERE])
Exemple
Considérez la table CUSTOMERS ayant les enregistrements suivants.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
Appliquons la sous-requête suivante avec l'instruction SELECT.
SELECT *
FROM CUSTOMERS
WHERE ID IN (SELECT ID FROM CUSTOMERS WHERE SALARY > 4500)
La commande ci-dessus produira la sortie suivante.
ID NAME AGE ADDRESS SALARY
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
7 Muffy 24 Indore 10000.00
Sous-requêtes avec instruction INSERT
Les sous-requêtes peuvent également être utilisées avec des instructions INSERT. L'instruction INSERT utilise les données renvoyées par la sous-requête pour les insérer dans une autre table. Les données sélectionnées dans la sous-requête peuvent être modifiées avec l'une des fonctions de caractère, de date ou de nombre.
Syntaxe
Voici la syntaxe de base.
INSERT INTO table_name [ (column1 [, column2 ]) ]
SELECT [ *|column1 [, column2 ]
FROM table1 [, table2 ]
[ WHERE VALUE OPERATOR ]
Exemple
Considérons une table CUSTOMERS_BKP avec une structure similaire à la table CUSTOMERS. Voici la syntaxe pour copier la table CUSTOMERS complète dans CUSTOMERS_BKP.
INSERT INTO CUSTOMERS_BKP
SELECT * FROM CUSTOMERS
WHERE ID IN (SELECT ID FROM CUSTOMERS)
Sous-requêtes avec instruction UPDATE
La sous-requête peut être utilisée conjointement avec l'instruction UPDATE. Une ou plusieurs colonnes d'une table peuvent être mises à jour lors de l'utilisation d'une sous-requête avec l'instruction UPDATE.
Syntaxe
Voici la syntaxe de base.
UPDATE table
SET column_name = new_value
[ WHERE OPERATOR [ VALUE ]
(SELECT COLUMN_NAME
FROM TABLE_NAME)
[ WHERE) ]
Exemple
Supposons que nous ayons la table CUSTOMERS_BKP disponible qui est une sauvegarde de la table CUSTOMERS.
L'exemple de commande suivant met à jour SALARY de 0,25 fois dans la table CUSTOMERS pour tous les clients dont l'ÂGE est supérieur ou égal à 27.
UPDATE CUSTOMERS
SET SALARY = SALARY * 0.25
WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP WHERE AGE >= 27 )
Cela aura un impact sur deux lignes et enfin la table CUSTOMERS aura les enregistrements suivants.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 500.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 2125.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
Sous-requêtes avec instruction DELETE
La sous-requête peut être utilisée conjointement avec l'instruction DELETE comme avec toutes les autres instructions mentionnées ci-dessus.
Syntaxe
Voici la syntaxe de base.
DELETE FROM TABLE_NAME
[ WHERE OPERATOR [ VALUE ]
(SELECT COLUMN_NAME
FROM TABLE_NAME)
[ WHERE) ]
Exemple
Supposons que nous ayons la table CUSTOMERS_BKP disponible qui est une sauvegarde de la table CUSTOMERS.
L'exemple de commande suivant supprime les enregistrements de la table CUSTOMERS pour tous les clients dont l'ÂGE est supérieur ou égal à 27.
DELETE FROM CUSTOMERS
WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP WHERE AGE >=27 )
Cela aurait un impact sur deux lignes et finalement la table CUSTOMERS aura les enregistrements suivants.
ID NAME AGE ADDRESS SALARY
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
Le serveur MS SQL Stored procedure est utilisé pour gagner du temps pour écrire du code encore et encore en stockant le même dans la base de données et également obtenir la sortie requise en passant des paramètres.
Syntaxe
Voici la syntaxe de base de la création de procédure stockée.
Create procedure <procedure_Name>
As
Begin
<SQL Statement>
End
Go
Exemple
Considérez la table CUSTOMERS ayant les enregistrements suivants.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
La commande suivante est un exemple qui récupère tous les enregistrements de la table CUSTOMERS dans la base de données Testdb.
CREATE PROCEDURE SelectCustomerstabledata
AS
SELECT * FROM Testdb.Customers
GO
La commande ci-dessus produira la sortie suivante.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
UNE transactionest une unité de travail effectuée sur une base de données. Les transactions sont des unités ou des séquences de travail accomplies dans un ordre logique, que ce soit de façon manuelle par un utilisateur ou automatiquement par une sorte de programme de base de données.
Une transaction est la propagation d'un ou plusieurs changements dans la base de données. Par exemple, si vous créez un enregistrement, mettez à jour un enregistrement ou supprimez un enregistrement de la table, vous effectuez une transaction sur la table. Il est important de contrôler les transactions pour garantir l'intégrité des données et gérer les erreurs de base de données.
En pratique, vous regrouperez de nombreuses requêtes SQL dans un groupe et vous les exécuterez toutes ensemble dans le cadre d'une transaction.
Propriétés des transactions
Les transactions ont les quatre propriétés standard suivantes, généralement désignées par l'acronyme ACID -
Atomicity- S'assure que toutes les opérations au sein de l'unité de travail sont terminées avec succès; sinon, la transaction est abandonnée au point d'échec et les opérations précédentes sont restaurées à leur état antérieur.
Consistency - Garantit que la base de données change correctement d'état lors d'une transaction validée avec succès.
Isolation - Permet aux transactions de fonctionner indépendamment et de manière transparente les unes des autres.
Durability - Garantit que le résultat ou l'effet d'une transaction validée persiste en cas de défaillance du système.
Contrôle des transactions
Les commandes suivantes sont utilisées pour contrôler les transactions -
COMMIT - Pour enregistrer les modifications.
ROLLBACK - Pour annuler les modifications.
SAVEPOINT - Crée des points dans des groupes de transactions dans lesquels ROLLBACK.
SET TRANSACTION - Place un nom sur une transaction.
Les commandes de contrôle transactionnel ne sont utilisées qu'avec les commandes DML INSERT, UPDATE et DELETE uniquement. Ils ne peuvent pas être utilisés lors de la création ou de la suppression de tables car ces opérations sont automatiquement validées dans la base de données.
Afin d'utiliser les commandes de contrôle transactionnel dans MS SQL Server, nous devons commencer la transaction par «begin tran» ou commencer la commande de transaction, sinon ces commandes ne fonctionneront pas.
Commande COMMIT
La commande COMMIT est la commande transactionnelle utilisée pour enregistrer les modifications invoquées par une transaction dans la base de données. Cette commande enregistre toutes les transactions dans la base de données depuis la dernière commande COMMIT ou ROLLBACK.
Syntaxe
Voici la syntaxe de la commande COMMIT.
COMMIT;
Exemple
Considérez la table CUSTOMERS ayant les enregistrements suivants.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
L'exemple de commande suivant supprimera les enregistrements de la table ayant age = 25, puis COMMIT les modifications dans la base de données.
Begin Tran
DELETE FROM CUSTOMERS
WHERE AGE = 25
COMMIT
As a result, two rows from the table would be deleted and SELECT statement will produce the following output.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
3 kaushik 23 Kota 2000.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
Commande ROLLBACK
La commande ROLLBACK est la commande transactionnelle utilisée pour annuler des transactions qui n'ont pas déjà été enregistrées dans la base de données. Cette commande ne peut être utilisée que pour annuler des transactions depuis la dernière commande COMMIT ou ROLLBACK a été émise.
Syntaxe
Voici la syntaxe de la commande ROLLBACK.
ROLLBACK
Exemple
Considérez la table CUSTOMERS ayant les enregistrements suivants.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
L'exemple de commande suivant supprimera les enregistrements de la table ayant age = 25, puis ROLLBACK les modifications dans la base de données.
Begin Tran
DELETE FROM CUSTOMERS
WHERE AGE = 25;
ROLLBACK
Par conséquent, l'opération de suppression n'aura aucun impact sur la table et l'instruction SELECT produira le résultat suivant.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
Commande SAVEPOINT
SAVEPOINT est un point dans une transaction où vous pouvez restaurer la transaction à un certain point sans annuler la transaction entière.
Syntaxe
Voici la syntaxe de la commande SAVEPOINT.
SAVE TRANSACTION SAVEPOINT_NAME
Cette commande sert uniquement à la création d'un SAVEPOINT parmi les instructions transactionnelles. La commande ROLLBACK est utilisée pour annuler un groupe de transactions.
Voici la syntaxe pour revenir à un SAVEPOINT.
ROLLBACK TO SAVEPOINT_NAME
Dans l'exemple suivant, nous supprimerons trois enregistrements différents de la table CUSTOMERS. Nous devrons créer un SAVEPOINT avant chaque suppression, afin de pouvoir ROLLBACK vers n'importe quel SAVEPOINT à tout moment pour remettre les données appropriées à leur état d'origine.
Exemple
Considérez la table CUSTOMERS ayant les enregistrements suivants -
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
Voici la série d'opérations -
Begin Tran
SAVE Transaction SP1
Savepoint created.
DELETE FROM CUSTOMERS WHERE ID = 1
1 row deleted.
SAVE Transaction SP2
Savepoint created.
DELETE FROM CUSTOMERS WHERE ID = 2
1 row deleted.
SAVE Transaction SP3
Savepoint created.
DELETE FROM CUSTOMERS WHERE ID = 3
1 row deleted.
Les trois suppressions ont eu lieu, cependant, nous avons changé d'avis et décidons de ROLLBACK vers le SAVEPOINT que nous avons identifié comme SP2. Parce que SP2 a été créé après la première suppression, les deux dernières suppressions sont annulées -
ROLLBACK Transaction SP2
Rollback complete.
Notez que seule la première suppression a eu lieu depuis que nous sommes revenus au SP2.
SELECT * FROM CUSTOMERS
6 lignes sélectionnées.
ID NAME AGE ADDRESS SALARY
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
Commande SET TRANSACTION
La commande SET TRANSACTION peut être utilisée pour lancer une transaction de base de données. Cette commande permet de spécifier les caractéristiques de la transaction qui suit.
Syntaxe
Voici la syntaxe de SET TRANSACTION.
SET TRANSACTION ISOLATION LEVEL <Isolationlevel_name>
Indexessont des tables de recherche spéciales que le moteur de recherche de base de données peut utiliser pour accélérer la récupération des données. En termes simples, unindexest un pointeur vers des données dans une table. Un index dans une base de données est très similaire à un index à la fin d'un livre.
Par exemple, si vous souhaitez référencer toutes les pages d'un livre qui traitent d'un certain sujet, vous vous référez d'abord à l'index, qui répertorie tous les sujets par ordre alphabétique et sont ensuite référencés à un ou plusieurs numéros de page spécifiques.
Un index permet d'accélérer les requêtes SELECT et les clauses WHERE, mais il ralentit la saisie des données, avec les instructions UPDATE et INSERT. Les index peuvent être créés ou supprimés sans effet sur les données.
La création d'un index implique l'instruction CREATE INDEX, qui vous permet de nommer l'index, de spécifier la table et la ou les colonnes à indexer, et d'indiquer si l'index est dans l'ordre croissant ou décroissant.
Les index peuvent également être uniques, similaires à la contrainte UNIQUE, en ce que l'index empêche les entrées en double dans la colonne ou la combinaison de colonnes sur laquelle il y a un index.
Commande CREATE INDEX
Voici la syntaxe de base de CREATE INDEX.
Syntaxe
CREATE INDEX index_name ON table_name
Index à une seule colonne
Un index à une seule colonne est un index créé à partir d'une seule colonne de table. Voici la syntaxe de base.
Syntaxe
CREATE INDEX index_name
ON table_name (column_name)
Exemple
CREATE INDEX singlecolumnindex
ON customers (ID)
Index uniques
Les index uniques sont utilisés non seulement pour les performances, mais également pour l'intégrité des données. Un index unique ne permet pas d'insérer des valeurs en double dans la table. Voici la syntaxe de base.
Syntaxe
CREATE UNIQUE INDEX index_name
on table_name (column_name)
Exemple
CREATE UNIQUE INDEX uniqueindex
on customers (NAME)
Index composites
Un index composite est un index sur deux ou plusieurs colonnes d'une table. Voici la syntaxe de base.
Syntaxe
CREATE INDEX index_name on table_name (column1, column2)
Exemple
CREATE INDEX compositeindex
on customers (NAME, ID)
Que vous souhaitiez créer un index à une seule colonne ou un index composite, prenez en compte la ou les colonnes que vous pouvez utiliser très fréquemment dans la clause WHERE d'une requête comme conditions de filtre.
Si une seule colonne est utilisée, un index à une seule colonne doit être le choix. Si deux colonnes ou plus sont fréquemment utilisées dans la clause WHERE comme filtres, l'index composite est le meilleur choix.
Index implicites
Les index implicites sont des index qui sont automatiquement créés par le serveur de base de données lors de la création d'un objet. Les index sont automatiquement créés pour les contraintes de clé primaire et les contraintes uniques.
Commande DROP INDEX
Un index peut être supprimé à l'aide de la commande MS SQL SERVER DROP. Des précautions doivent être prises lors de la suppression d'un index car les performances peuvent être ralenties ou améliorées.
Syntaxe
Voici la syntaxe de base.
DROP INDEX tablename.index_name
Quand éviter les index?
Bien que les index visent à améliorer les performances des bases de données, il y a des moments où ils doivent être évités. Les lignes directrices suivantes indiquent quand l'utilisation d'un index doit être reconsidérée -
Les index ne doivent pas être utilisés sur de petites tables.
Les tables qui ont des opérations de mise à jour ou d'insertion par lots fréquentes et importantes ne doivent pas être indexées.
Les index ne doivent pas être utilisés sur des colonnes contenant un nombre élevé de valeurs NULL.
Les colonnes fréquemment manipulées ne doivent pas être indexées.
MS SQL Server dispose de nombreuses fonctions intégrées pour effectuer le traitement sur des chaînes ou des données numériques. Voici la liste de toutes les fonctions intégrées SQL utiles -
SQL Server COUNT Function - La fonction d'agrégation SQL Server COUNT est utilisée pour compter le nombre de lignes dans une table de base de données.
SQL Server MAX Function - La fonction d'agrégation SQL Server MAX permet de sélectionner la valeur la plus élevée (maximum) pour une certaine colonne.
SQL Server MIN Function - La fonction d'agrégation SQL Server MIN permet de sélectionner la valeur la plus basse (minimum) pour une certaine colonne.
SQL Server AVG Function - La fonction d'agrégation SQL Server AVG sélectionne la valeur moyenne pour certaines colonnes de table.
SQL Server SUM Function - La fonction d'agrégation SQL Server SUM permet de sélectionner le total d'une colonne numérique.
SQL Server SQRT Function - Ceci est utilisé pour générer une racine carrée d'un nombre donné.
SQL Server RAND Function - Ceci est utilisé pour générer un nombre aléatoire à l'aide de la commande SQL.
SQL Server CONCAT Function - Ceci est utilisé pour concaténer plusieurs paramètres en un seul paramètre.
SQL Server Numeric Functions - Liste complète des fonctions SQL nécessaires pour manipuler les nombres en SQL.
SQL Server String Functions - Liste complète des fonctions SQL nécessaires pour manipuler des chaînes en SQL.
Les fonctions de chaîne MS SQL Server peuvent être appliquées à la valeur de chaîne ou renverront une valeur de chaîne ou des données numériques.
Voici la liste des fonctions String avec des exemples.
ASCII ()
La valeur du code Ascii viendra en sortie pour une expression de caractère.
Exemple
La requête suivante donnera la valeur de code Ascii d'un caractère donné.
Select ASCII ('word')
CARBONISER()
Le caractère viendra en sortie pour un code ou un entier Ascii donné.
Exemple
La requête suivante donnera le caractère pour un entier donné.
Select CHAR(97)
NCHAR ()
Le caractère Unicode viendra en sortie pour un entier donné.
Exemple
La requête suivante donnera le caractère Unicode pour un entier donné.
Select NCHAR(300)
CHARINDEX ()
La position de départ pour une expression de recherche donnée apparaîtra en sortie dans une expression de chaîne donnée.
Exemple
La requête suivante donnera la position de départ du caractère «G» pour l'expression de chaîne donnée «KING».
Select CHARINDEX('G', 'KING')
LA GAUCHE()
Partie gauche de la chaîne donnée jusqu'à ce que le nombre spécifié de caractères apparaisse en sortie pour une chaîne donnée.
Exemple
La requête suivante donnera la chaîne 'WORL' comme mentionné 4 nombre de caractères pour la chaîne donnée 'WORLD'.
Select LEFT('WORLD', 4)
DROITE()
La partie droite de la chaîne donnée jusqu'à ce que le nombre spécifié de caractères apparaisse en sortie pour une chaîne donnée.
Exemple
La requête suivante donnera la chaîne 'DIA' comme mentionné 3 nombre de caractères pour la chaîne donnée 'INDIA'.
Select RIGHT('INDIA', 3)
SUBSTRING ()
Une partie d'une chaîne basée sur la valeur de position de départ et la valeur de longueur sera fournie en sortie pour une chaîne donnée.
Exemple
Les requêtes suivantes donneront les chaînes 'WOR', 'DIA', 'ING' comme nous l'avons mentionné (1,3), (3,3) et (2,3) comme valeurs de début et de longueur respectivement pour les chaînes données 'WORLD' , «INDE» et «ROI».
Select SUBSTRING ('WORLD', 1,3)
Select SUBSTRING ('INDIA', 3,3)
Select SUBSTRING ('KING', 2,3)
LEN ()
Le nombre de caractères apparaîtra en sortie pour une expression de chaîne donnée.
Exemple
La requête suivante donnera le 5 pour l'expression de chaîne «HELLO».
Select LEN('HELLO')
INFÉRIEUR()
Une chaîne en minuscules apparaîtra en sortie pour une chaîne de données donnée.
Exemple
La requête suivante donnera le 'sqlserver' pour les données de caractère 'SQLServer'.
Select LOWER('SQLServer')
PLUS HAUT()
Une chaîne en majuscules apparaîtra en sortie pour une chaîne de données donnée.
Exemple
La requête suivante donnera le 'SQLSERVER' pour les données de caractère 'SqlServer'.
Select UPPER('SqlServer')
LTRIM ()
L'expression de chaîne apparaîtra en sortie pour une chaîne de données donnée après avoir supprimé les blancs de début.
Exemple
La requête suivante donnera le «MONDE» pour les données de caractère «MONDE».
Select LTRIM(' WORLD')
RTRIM ()
L'expression de chaîne viendra en sortie pour une chaîne de données donnée après avoir supprimé les blancs de fin.
Exemple
La requête suivante donnera le 'INDIA' pour les données de caractère 'INDIA'.
Select RTRIM('INDIA ')
REMPLACER()
L'expression de chaîne apparaîtra en sortie pour une chaîne de données donnée après le remplacement de toutes les occurrences du caractère spécifié par le caractère spécifié.
Exemple
La requête suivante donnera la chaîne 'KNDKA' pour les données de chaîne 'INDIA'.
Select REPLACE('INDIA', 'I', 'K')
REPRODUIRE()
L'expression de chaîne de répétition apparaîtra en sortie pour une chaîne de données donnée avec un nombre de fois spécifié.
Exemple
La requête suivante donnera la chaîne 'WORLDWORLD' pour les données de chaîne 'WORLD'.
Select REPLICATE('WORLD', 2)
INVERSER()
L'expression de chaîne inversée viendra en sortie pour une donnée de chaîne donnée.
Exemple
La requête suivante donnera la chaîne 'DLROW' pour les données de chaîne 'WORLD'.
Select REVERSE('WORLD')
SONDEX ()
Renvoie un code à quatre caractères (SOUNDEX) pour évaluer la similitude de deux chaînes données.
Exemple
La requête suivante donnera le «S530» pour les chaînes «Smith», «Smyth».
Select SOUNDEX('Smith'), SOUNDEX('Smyth')
DIFFÉRENCE()
La valeur entière viendra en tant que sortie de deux expressions données.
Exemple
La requête suivante donnera le 4 pour les expressions «Smith», «Smyth».
Select Difference('Smith','Smyth')
Note - Si la valeur de sortie est 0, cela indique une similitude faible ou inexistante entre 2 expressions.
ESPACE()
La chaîne viendra en sortie avec le nombre d'espaces spécifié.
Exemple
La requête suivante donnera le 'I LOVE INDIA'.
Select 'I'+space(1)+'LOVE'+space(1)+'INDIA'
DES TRUCS()
L'expression de chaîne viendra en sortie pour une chaîne de données donnée après le remplacement du caractère de départ jusqu'à la longueur spécifiée par le caractère spécifié.
Exemple
La requête suivante donnera la chaîne 'AIJKFGH' pour les données de chaîne 'ABCDEFGH' selon le caractère de départ donné et la longueur de 2 et 4 respectivement et 'IJK' comme chaîne cible spécifiée.
Select STUFF('ABCDEFGH', 2,4,'IJK')
STR ()
Les données de caractères viendront en sortie pour les données numériques données.
Exemple
La requête suivante donnera le 187,37 pour le 187,369 donné basé sur la longueur spécifiée comme 6 et décimal comme 2.
Select STR(187.369,6,2)
UNICODE ()
La valeur entière viendra comme sortie pour le premier caractère de l'expression donnée.
Exemple
La requête suivante donnera le 82 pour l'expression 'RAMA'.
Select UNICODE('RAMA')
QUOTENAME ()
La chaîne donnée sera fournie en sortie avec le délimiteur spécifié.
Exemple
La requête suivante donnera le "RAMA" pour la chaîne 'RAMA' donnée comme nous avons spécifié des guillemets doubles comme délimiteur.
Select QUOTENAME('RAMA','"')
PATINDEX ()
Position de départ de la première occurrence de l'expression donnée, comme nous l'avons spécifié, la position «I» est requise.
Exemple
La requête suivante donnera le 1 pour «INDE».
Select PATINDEX('I%','INDIA')
FORMAT()
L'expression donnée sera fournie en sortie avec le format spécifié.
Exemple
La requête suivante donnera le 'Lundi 16 novembre 2015' pour la fonction getdate selon le format spécifié avec 'D' faisant référence au nom du jour de la semaine.
SELECT FORMAT ( getdate(), 'D')
CONCAT ()
Une seule chaîne viendra en sortie après la concaténation des valeurs de paramètre données.
Exemple
La requête suivante donnera le 'A, B, C' pour les paramètres donnés.
Select CONCAT('A',',','B',',','C')
Voici la liste des fonctions de date dans MS SQL Server.
AVOIR UN RENDEZ-VOUS()
Il renverra la date actuelle avec l'heure.
Syntaxe
Syntaxe de la fonction ci-dessus -
GETDATE()
Exemple
La requête suivante renverra la date actuelle avec l'heure dans MS SQL Server.
Select getdate() as currentdatetime
DATEPART ()
Il renverra la partie de la date ou de l'heure.
Syntaxe
Syntaxe de la fonction ci-dessus -
DATEPART(datepart, datecolumnname)
Exemple
Example 1 - La requête suivante renverra la partie de la date actuelle dans MS SQL Server.
Select datepart(day, getdate()) as currentdate
Example 2 - La requête suivante renverra la partie du mois en cours dans MS SQL Server.
Select datepart(month, getdate()) as currentmonth
DATEADD ()
Il affichera la date et l'heure en ajoutant ou en soustrayant la date et l'intervalle de temps.
Syntaxe
Syntaxe de la fonction ci-dessus -
DATEADD(datepart, number, datecolumnname)
Exemple
La requête suivante renverra la date et l'heure après 10 jours à partir de la date et de l'heure actuelles dans MS SQL Server.
Select dateadd(day, 10, getdate()) as after10daysdatetimefromcurrentdatetime
DATEDIFF ()
Il affichera la date et l'heure entre deux dates.
Syntaxe
Syntaxe de la fonction ci-dessus -
DATEDIFF(datepart, startdate, enddate)
Exemple
La requête suivante renverra la différence d'heures entre les dates du 16/11/2015 et du 11/11/2015 dans MS SQL Server.
Select datediff(hour, 2015-11-16, 2015-11-11) as
differencehoursbetween20151116and20151111
CONVERTIR()
Il affichera la date et l'heure dans différents formats.
Syntaxe
Syntaxe de la fonction ci-dessus -
CONVERT(datatype, expression, style)
Exemple
Les requêtes suivantes renverront la date et l'heure dans un format différent dans MS SQL Server.
SELECT CONVERT(VARCHAR(19),GETDATE())
SELECT CONVERT(VARCHAR(10),GETDATE(),10)
SELECT CONVERT(VARCHAR(10),GETDATE(),110)
Les fonctions numériques MS SQL Server peuvent être appliquées sur des données numériques et renverront des données numériques.
Voici la liste des fonctions numériques avec des exemples.
ABDOS()
La valeur absolue viendra comme sortie pour l'expression numérique.
Exemple
La requête suivante donnera la valeur absolue.
Select ABS(-22)
ACOS ()
La valeur du cosinus d'arc sera fournie en sortie pour l'expression numérique spécifiée.
Exemple
La requête suivante donnera la valeur de l'arc cosinus de 0.
Select ACOS(0)
UN PÉCHÉ()
La valeur sinusoïdale de l'arc sera fournie en sortie pour l'expression numérique spécifiée.
Exemple
La requête suivante donnera la valeur sinusoïdale de l'arc de 0.
Select ASIN(0)
UN BRONZAGE()
La valeur de tangente d'arc sera fournie en sortie pour l'expression numérique spécifiée.
Exemple
La requête suivante donnera la valeur d'arc tangente de 0.
Select ATAN(0)
ATN2 ()
La valeur de tangente d'arc dans les quatre quadrants sera fournie en sortie pour l'expression numérique spécifiée.
Exemple
La requête suivante donnera la valeur de la tangente de l'arc dans les quatre quadrants de 0.
Select ATN2(0, -1)
Considérez la table CUSTOMERS ayant les enregistrements suivants.
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
ENTRE()
Si les valeurs existent entre deux expressions données, celles-ci seront fournies en sortie.
Exemple
La requête suivante donnera la sortie suivante.
SELECT salary from customers where salary between 2000 and 8500
Production
salary
2000.00
2000.00
6500.00
8500.00
4500.00
MIN ()
La valeur minimale proviendra de la sortie de l'expression donnée.
Exemple
La requête suivante donnera «1500,00» pour l'expression «salaire» donnée de la table des clients.
Select MIN(salary)from CUSTOMERS
MAX ()
La valeur maximale proviendra de la sortie de l'expression donnée.
Exemple
La requête suivante donnera «10000,00» pour l'expression «salaire» donnée de la table des clients.
Select MAX(salary)from CUSTOMERS
SQRT ()
La racine carrée de l'expression numérique donnée apparaîtra en sortie.
Exemple
La requête suivante donnera 2 pour les 4 expressions numériques données.
Select SQRT(4)
PI()
La valeur PI viendra en sortie.
Exemple
La requête suivante donnera 3,14159265358979 pour la valeur PI.
Select PI()
PLAFOND()
La valeur donnée apparaîtra en sortie après avoir arrondi les décimales qui est la prochaine valeur la plus élevée.
Exemple
La requête suivante donnera 124 pour la valeur 123,25 donnée.
Select CEILING(123.25)
SOL()
La valeur donnée viendra en sortie après avoir arrondi les décimales qui sont inférieures ou égales à l'expression.
Exemple
La requête suivante donnera 123 pour la valeur 123,25 donnée.
Select FLOOR(123.25)
JOURNAL()
Le logarithme naturel de l'expression donnée apparaîtra en sortie.
Exemple
La requête suivante donnera 0 pour la valeur 1 donnée.
Select LOG(1)