DevInformatique Ralis par HACHIMI SAFAE MODULE N 16

  • Slides: 28
Download presentation
Dev-Informatique Réalisé par : HACHIMI SAFAE

Dev-Informatique Réalisé par : HACHIMI SAFAE

MODULE N° 16 : SYSTÈME DE GESTION DE BASE DE DONNÉES II (SGBD 2)

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

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

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

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

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

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

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

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

EXEMPLE 2 : SELECT * FROM Client

3 -VARIABLES LOCALES : o UTILISATIONS o COMPTEUR dans une boucle o VALEUR DE

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

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

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

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

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

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))

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

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

3 -FONCTIONS DE MANIPULATION DE DATES : § FONCTIONS INTÉGRÉES PERMETTANT DE MANIPULER DES VALEURS DE TYPE DATETIME.

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], 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 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, 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. ***/

/***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

DEV-INFORMATIQUE MERCI POUR VOTRE ATTENTION