DevInformatique Ralis par HACHIMI SAFAE MODULE N 16



















![EXEMPLE : SELECT LEN('Bonjour')AS[Longueur] , UPPER('bonjour')AS[Majuscule] , LOWER('BONJOUR')AS[Miniscule] SELECT LTRIM(' Bonjour')AS[LEFT] , RTRIM('bonjour')AS[RIGHT] SELECT EXEMPLE : SELECT LEN('Bonjour')AS[Longueur] , UPPER('bonjour')AS[Majuscule] , LOWER('BONJOUR')AS[Miniscule] SELECT LTRIM(' Bonjour')AS[LEFT] , RTRIM('bonjour')AS[RIGHT] SELECT](https://slidetodoc.com/presentation_image_h2/dbc4f72255eea7865ab05511e17952c1/image-20.jpg)


![EXEMPLE 1 : SELECT GETDATE()AS[DATE_ACTUELLE], SYSDATETIME()AS[Date_Syteme], GETUTCDATE()AS[DATE_AA] SELECT DAY(GETDATE())AS[JOUR], MONTH(GETDATE())AS[MOIS], YEAR(GETDATE())AS[ANNEE] SELECT DATEPART(DAY, GETDATE())AS[JOUR_A], EXEMPLE 1 : SELECT GETDATE()AS[DATE_ACTUELLE], SYSDATETIME()AS[Date_Syteme], GETUTCDATE()AS[DATE_AA] SELECT DAY(GETDATE())AS[JOUR], MONTH(GETDATE())AS[MOIS], YEAR(GETDATE())AS[ANNEE] SELECT DATEPART(DAY, GETDATE())AS[JOUR_A],](https://slidetodoc.com/presentation_image_h2/dbc4f72255eea7865ab05511e17952c1/image-23.jpg)

![EXEMPLE 2 : SELECT DATEADD(DAY, 12, GETDATE())AS[AJOUTERJOUR] SELECT DATEADD(MONTH, 3, GETDATE())AS[AJOUTERJOUR] SELECT DATEADD(YEAR, 2, EXEMPLE 2 : SELECT DATEADD(DAY, 12, GETDATE())AS[AJOUTERJOUR] SELECT DATEADD(MONTH, 3, GETDATE())AS[AJOUTERJOUR] SELECT DATEADD(YEAR, 2,](https://slidetodoc.com/presentation_image_h2/dbc4f72255eea7865ab05511e17952c1/image-25.jpg)



- Slides: 28

Dev-Informatique Réalisé par : HACHIMI SAFAE

MODULE N° 16 : SYSTÈME DE GESTION DE BASE DE DONNÉES II (SGBD 2) CHAPITRE 2 : INSTRUCTION( DÉCLARATION , AFFICHAGE , AFFECTATION ) I-LES VARIABLES : 1. IDENTIFIANT : § Les identifiants (nom des objets) SQL : o Ne peuvent dépasser 128 caractères o Ils doivent commencer par une lettre ou un "underscore". underscore o Les caractères spéciaux et le blanc ne sont pas admis. o On se contentera d'utiliser les 37 caractères de base : ['A'. . 'Z', '0'. . '9', '_'] o La casse n'a pas d'importance. o Le symbole @ commence le nom de toute variable o Le symbole dédoublé @@ commence le nom des variables globales du SGBDR. o Le symbole # commence le nom de toute table temporaire (utilisateur) REMARQUE : Par convention les noms des variables doivent toujours être précédés du symbole @

2 -DÉCLARATION DES VARIABLES LOCALES : § SYNATAXE GÉNARALE : DECLARE @NOM_VARIABLE TYPE_DONNÉE Le caractère @ est obligatoire § EXEMPLE : DECLARE @MAVARIABLE INT § DÉCLARATION MULTIPLE : DECLARE @VAR 1 TYPE 1, @VAR 2 TYPE 2 § EXEMPLE : DECLARE @X INT, @Y INT, @Z CHAR ATTENTION : DECLARE @X , @Y INT EST INCORRECTE

II-AFFECTATION : § SYNTAXE : SELECT @NOM_VARIABLE = VALEUR SELECT @NOM_VARIABLE = (SELECT. . . FROM. . . WHERE) OU SET @NOM_VARIABLE = VALEUR SET @NOM_VARIABLE = (SELECT. . . FROM. . . WHERE) EXEMPLE 1 : SELECT @I=3 SET @J=4 SELECT @STR='TSDI' § AFFECTATION MULTIPLE : SELECT @I=3, @J=4, @STR='TSDI' EST CORRECTE § ATTENTION : SET @I=3, @J=4, @STR='TSDI' EST UNE AFFECTATION INCORRECTE.

EXEMPLE 2: DECLARE @A SELECT @A=1 ----- AFFECTE LA VALEUR 1 À LA VARIABLE @A------SELECT @A=(SELECT COUNT(NUMART) FROM ARTICLE) ----- AFFECTE LE NOMBRE D'ARTICLES ENREGISTRÉS DANS LA TABLE ARTICLE À LA VARIABLE @A DECLARE @B SELECT @B='TABLE POUR ORDINATEUR' -- AFFECTE LA VALEUR 'TABLE POUR ORDINATEUR' À LA VARIABLE @B

EXEMLPE 3 : VARIABLE DE TYPE TABLE : DECLARE @STG TABLE( NUM INT PRIMARY KEY, NOM VARCHAR(20), PRENOM VARCHAR(20), MOYENNE NUMERIC(4, 2)) /*LA PARTICULARITÉ DES VARIABLES DE TYPE TABLE, TABLE EST QU’ON PEUT UTILISER DES COMMANDES INSERT, SELECT, UPDATE, DELETE */ INSERT INTO @STG VALUES(103, ‘HA', 'SALAH', 14) INSERT INTO @STG VALUES(107, ‘EL ALLAOUI', ‘ALI', 14. 5) INSERT INTO @STG VALUES(200, ‘FALAH', 'SANAA', 12. 5) SELECT * FROM @STG SELECT AVG(MOYENNE) FROM @STG UPDATE @STG SET NOM=‘HACHIMI’ WHERE NUM = 103 DELETE FROM @STG WHERE NUM = 200

EXEMPLE 4 : CREATE TYPE MONTYPE DECLARE @T MONTYPE AS TABLE( ID INT PRIMARY KEY , CH CHAR(40)) INSERT INTO @T SELECT *FROM CLIENT

III-L'AFFICHAGE DES INFORMATIONS: 1 -AFFICHAGE DES VALEURS : § Pour afficher le contenu d’une variable on utilise la même instruction select. SELECT @I § AFFICHAGE MULTIPLE : SELECT @I, @J, @STR REMARQUE : § On peut utiliser select pour affecter une valeur ou bien pour afficher une autre, mais pas pour faire les deux, donc l’instruction SELECT @I=20, @STR EST INCORRECTE.

2 -AFFICHAGE AVEC PRINT : SYNTAXE : PRINT ‘CHAINE DE CARACTÈRE’ Et dons l’analyseur de requête SQL on a deux sortie d’affichage Messages POUR PRINT ET TABLE POUR SELECT EXEMPLE 1: Soient @a et @b des variables de type Chaîne de caractères, @c et @d des variables de type entier PRINT 'BONJOUR' ------- AFFICHE LE TEXTE BONJOUR PRINT @A ------- AFFICHE LA VALEUR DE @A PRINT @C ------- AFFICHE LA VALEUR DE @C PRINT @C + @D ------- AFFICHE LA SOMME DES VARIABLES @C ET @D

EXEMPLE 2 : SELECT * FROM Client


3 -VARIABLES LOCALES : o UTILISATIONS o COMPTEUR dans une boucle o VALEUR DE RETOUR des procédures stockées o PARAMÈTRES d’entrée et de sortie des procédures 4 -VARIABLES DE TYPE TABLE : § Les variables de type Table peuvent apparaître dans les « SELECT » , « UPDATE » , « DELETE » , « INSERT » et « DECLARE CURSOR » § Les variables de type Table ont une portée locale (elles sont donc différentes des tables temporaires)

5 -VARIABLES DE TYPE TABLE / TABLES TEMPORAIRES : § Les variables DE TYPE TABLE sont différentes des tables temporaires : q Création d’une table temporaire locale : o Create table #t 1(id int null) select id from #t 1 o Cette table n’est accessible qu’à son créateur o Obligation d’utiliser le # pour les tables temporaires q Elles ont une durée de vie limitée à la durée de la connexion § Utilisation dans le select…. . Into § Select * into #My. Authors from Authors. Cette commande crée une table temporaire #My. Authors ayant le même contenu que la table Authors

6 -VARIABLES GLOBALES : o Elles sont affectées directement par le serveur. o Elles retournent une seule valeur. SYNTAXE : § Elles sont notées @@variable SELECT @@VERSION EXEMPLE : @@ERROR : le type d’erreur survenu lors de la dernière instruction @@IDENTITY : la dernière valeur attribuée automatiquement @@ROWCOUNT : le nombre de lignes affectées par la dernière instruction

6 -VARIABLES "SYSTÈME" VARIABLE GLOBAL : § SQL Server défini un grand nombre de "variables système" système c'est à dire des variables définies par le moteur. En voici quelques unes :

IV-LES FONCTIONS INTÉGRÉES : § On présente les principaux fonctions intégrées proposées par SQL Server, aussi sous des formes similaires sinon identiques sous les principaux SGBDR du marché : o FONCTIONS DE CONVERSION o FONCTIONS DE TRAITEMENT DE CHAÎNES o FONCTIONS DE MANIPULATION DE DATES o QUELQUES FONCTIONS INTÉGRÉES § SQL server propose de nombreuses fonctions intégrées qui permettent de manipuler des données utilisateurs ou des données du système

1 -FONCTIONS DE CONVERSION : § Certaines conversions ne peuvent être automatiquement réalisées par le système. § Nous devons alors réaliser ces conversions de manière explicite au moyen des fonctions de conversion. o CAST(expression AS data_type[(length)]) o CONVERT(data_type[(length)], expression [, style]) EXEMPLE : SELECT CONVERT(DATETIME, '10 -14 -2011', 110) AS "Date au Format USA’’ SELECT CONVERT(VARCHAR(40), GETDATE(), 110) AS "Date au Format USA"

SELECT CONVERT(DECIMAL(10, 3), SUM(prix)) AS "TOTAL CA Net" FROM affectevol SELECT CAST(GETDATE() AS VARCHAR(40)) AS “Date Texte”

2 -FONCTIONS DE TRAITEMENT DE CHAÎNES : § Quelques exemples dans ce tableau car elles sont nombreuses § Voir aide à l’index fonctions, chaîne
![EXEMPLE SELECT LENBonjourASLongueur UPPERbonjourASMajuscule LOWERBONJOURASMiniscule SELECT LTRIM BonjourASLEFT RTRIMbonjourASRIGHT SELECT EXEMPLE : SELECT LEN('Bonjour')AS[Longueur] , UPPER('bonjour')AS[Majuscule] , LOWER('BONJOUR')AS[Miniscule] SELECT LTRIM(' Bonjour')AS[LEFT] , RTRIM('bonjour')AS[RIGHT] SELECT](https://slidetodoc.com/presentation_image_h2/dbc4f72255eea7865ab05511e17952c1/image-20.jpg)
EXEMPLE : SELECT LEN('Bonjour')AS[Longueur] , UPPER('bonjour')AS[Majuscule] , LOWER('BONJOUR')AS[Miniscule] SELECT LTRIM(' Bonjour')AS[LEFT] , RTRIM('bonjour')AS[RIGHT] SELECT LEFT('Bonjour', 3)AS[LEFT_caractere] , RIGHT('Bonjour', 4)AS[RIGHT_caractere] SELECT SUBSTRING('Bonjour', 2, 3)AS[Positionnement] SELECT ASCII('C')AS[Convertation] , NCHAR('67')AS[Convertation] SELECT REPLACE('Bonjour', 'soir')AS[Rempalcer] , REVERSE('Bonjour')AS[Inverser] /*Liste des noms des clients formatés. Le premier caractère de gauche est mis en majuscules, majuscules Les autres caractères en minuscules*/ minuscules SELECT Upper(Substring(Nom, 1, 1)) + Lower(Substring(Nom, 2, Len(Nom)-1)) FROM Client


3 -FONCTIONS DE MANIPULATION DE DATES : § FONCTIONS INTÉGRÉES PERMETTANT DE MANIPULER DES VALEURS DE TYPE DATETIME.
![EXEMPLE 1 SELECT GETDATEASDATEACTUELLE SYSDATETIMEASDateSyteme GETUTCDATEASDATEAA SELECT DAYGETDATEASJOUR MONTHGETDATEASMOIS YEARGETDATEASANNEE SELECT DATEPARTDAY GETDATEASJOURA EXEMPLE 1 : SELECT GETDATE()AS[DATE_ACTUELLE], SYSDATETIME()AS[Date_Syteme], GETUTCDATE()AS[DATE_AA] SELECT DAY(GETDATE())AS[JOUR], MONTH(GETDATE())AS[MOIS], YEAR(GETDATE())AS[ANNEE] SELECT DATEPART(DAY, GETDATE())AS[JOUR_A],](https://slidetodoc.com/presentation_image_h2/dbc4f72255eea7865ab05511e17952c1/image-23.jpg)
EXEMPLE 1 : SELECT GETDATE()AS[DATE_ACTUELLE], SYSDATETIME()AS[Date_Syteme], GETUTCDATE()AS[DATE_AA] SELECT DAY(GETDATE())AS[JOUR], MONTH(GETDATE())AS[MOIS], YEAR(GETDATE())AS[ANNEE] SELECT DATEPART(DAY, GETDATE())AS[JOUR_A], DATEPART(MONTH, GETDATE())AS[MOIS_A] SELECT DATEPART(HOUR, GETDATE())AS[HEURE_A], DATEPART(YEAR, GETDATE())AS[ANNEE_A] SELECT DATENAME(DAY, GETDATE())AS[JOUR_N], DATENAME(MONTH, GETDATE())AS[MOIS_N] SELECT DATENAME(YEAR, GETDATE())AS[ANNEE_N] SELECT DATENAME(WEEKDAY, GETDATE())AS[Jour. Semaine]

![EXEMPLE 2 SELECT DATEADDDAY 12 GETDATEASAJOUTERJOUR SELECT DATEADDMONTH 3 GETDATEASAJOUTERJOUR SELECT DATEADDYEAR 2 EXEMPLE 2 : SELECT DATEADD(DAY, 12, GETDATE())AS[AJOUTERJOUR] SELECT DATEADD(MONTH, 3, GETDATE())AS[AJOUTERJOUR] SELECT DATEADD(YEAR, 2,](https://slidetodoc.com/presentation_image_h2/dbc4f72255eea7865ab05511e17952c1/image-25.jpg)
EXEMPLE 2 : SELECT DATEADD(DAY, 12, GETDATE())AS[AJOUTERJOUR] SELECT DATEADD(MONTH, 3, GETDATE())AS[AJOUTERJOUR] SELECT DATEADD(YEAR, 2, GETDATE())AS[AJOUTERJOUR] SELECT DATEADD(HOUR, 21, GETDATE())AS[HEURE] SET DATEFORMAT DMY SELECT DATEDIFF(DAY, GETDATE(), '23/04/2017')AS[DIFF_JOUR] SELECT DATEDIFF(MONTH, GETDATE(), '12/12/2018')AS[DIFF_MOIS] SELECT DATEDIFF(YEAR, '22/02/2015', GETDATE())AS[DIFF_ANNEE]


/***NOMBRE DE JOURS ENTRE LA DATE DE NAISSANCE ET LA DATE DU JOUR. ***/ SELECT NOM, DATEDIFF(DAY, DATE_NAISSANCE, GETDATE()) as "Nombre jours depuis Naissance" FROM Client /***EXTRAIT DE LA DATE DE NAISSANCE AVEC DATEPART ET DATENAME****/ SELECT DATEPART(MONTH, DATENAISSANCE) AS[Mois de la date naissance], DATENAME(MONTH, DATENAISSANCE) AS[nom de mois de la date naissance] FROM Client

DEV-INFORMATIQUE MERCI POUR VOTRE ATTENTION