Vous êtes sur la page 1sur 8

Leçon 

Création d’objets de base de données

Objectifs d’apprentissage
Les stagiaires vont apprendre à :
 Définir les types de données
 Créer et utiliser des tables
 Créer des vues
 Créer des procédures stockées

Compétences ODN
 Choisir des types de données. 2.1
 Comprendre les tables et comment les créer. 2.2
 Créer des vues. 2.3
 Créer des procédures stockées et des fonctions. 2.4

Résumé de la leçon — Notes sur le cours


La deuxième leçon se concentre sur la définition des types de données ainsi que sur la
création et l’utilisation des tables, vues, procédures stockées et fonctions. Les types de
données occupent la moitié de la leçon. Les stagiaires doivent comprendre les catégories
fondamentales de types de données et les données que chacune d’entre elles contiennent.
Vous devez également parler du nombre d’octets que chaque donnée peut occuper.
Les stagiaires doivent comprendre que même si un élément de données peut occuper
jusqu’à 8 octets, lorsque vous multipliez cela par des milliers, voire des millions, tout
cela constitue une base de données colossale qui doit être gérée. Enfin, mettez l’accent
sur le fait que le comptage sera généralement effectué avec des entiers et des valeurs
monétaires et tout élément comprenant un nombre décimal ou une fraction fait partie
des données de type float ou assimilés. Il convient également de souligner les données
de type Money. En classe, vous pouvez vous pencher sur un exemple visant à concevoir
une petite base de données contenant des informations concernant une personne.
Puis multipliez le nombre d’octets pour chaque personne et multipliez le nombre
d’enregistrements que la base de données peut contenir. Cela donne aux stagiaires
une idée de la taille d’une base de données.
En évoquant les bases de données, vous pouvez éventuellement effectuer des calculs
en utilisant différents types de données. Il s’agit là d’une formidable opportunité de
présenter les conversions implicites et explicites.

2-1
En abordant la conception d’une base de données, vous pouvez ensuite présenter aux
stagiaires la procédure à suivre pour créer une table à l’aide de SSMS et des commandes.
Le moment est également parfait pour parler des conventions de nom, notamment
PascalCase et camelCase.
La prochaine partie de la leçon porte sur la manière d’utiliser une base de données.
Une façon de présenter comment utiliser une base de données consiste à créer une vue
afin que vous puissiez isoler les données que vous souhaitez. Enfin, la dernière partie
de la leçon traite des procédures stockées, qui peuvent être utilisées de façon analogue
aux macros ou aux raccourcis. Vous pouvez ainsi exécuter rapidement et facilement
une série de commandes.

Termes clés
injection SQL : attaque au cours de laquelle un code malveillant est inséré dans les
chaînes transmises ultérieurement aux instances de SQL Server en vue de leur analyse
et de leur exécution.
procédure stockée : instruction SQL précédemment écrite qui a été « stockée »
ou enregistrée dans la base de données.
table : structure destinée au stockage des données dans une base de données relationnelle.
type de données : attribut spécifiant le type de données qu’un objet peut contenir ;
il spécifie également le nombre d’octets que chaque type de données peut occuper.
vue : table virtuelle comprenant différentes colonnes à partir d’une ou de plusieurs tables.
Contrairement à une table, une vue est stockée dans la base de données comme objet
de requête.

2-2
Leçon 2
Création d’objets de base
de données
Évaluation des connaissances
Compléter l’espace vide
Complétez les phrases suivantes en écrivant le ou les mots corrects dans
l’espace fourni.
1. Chaque colonne, variable locale, expression et paramètre disposent
toujours d’un type de données associé.
2. Le bit est un type de données Integer Transact-SQL pouvant prendre
une valeur de 1, 0 ou NULL.
3. date et time sont des instructions Transact SQL comprenant : date, date2,
smalldatetime et time.
4. Il est important de tenir compte de votre utilisation des ensembles de
données date lorsque vous créez des tables en fonction de l’heure d’été.
5. SQL Server prend en charge les conversions implicites sans spécifier
les fonctions de légende réelles cast ou convert.
6. Un caractère classique utilise un octet de stockage pour chaque caractère
tandis qu’un caractère Unicode exige deux octets de stockage.
7. Pour l’ensemble de données char, la longueur est fixe et contient un
maximum de n octets.
8. L’objectif d’une table vise à fournir une structure pour le stockage
des données dans une base de données relationnelle.
9. Lorsque vous décidez de créer une vue, assurez-vous de bien tenir compte
de la performance de la base de données lors de la phase de conception.
10. Lorsqu’une base de données est interrogée, vous pouvez obtenir des
résultats plus rapides à partir d’une indexation en bonne et due forme
des tables et des vues.
QCM
Entourez la lettre correspondant à la bonne réponse.
1. Parmi les propositions suivantes, laquelle n’est pas un type de données ?
a. Valeurs numériques exactes
b. Valeurs numériques approximatives
c. Chaîne ANSI
d. Données spatiales

2-3
2. Lorsque le classement du résultat est déterminé par les règles de la
précédence du classement, parmi les propositions suivantes, laquelle
indique un type de données non obtenu ?
a. char
b. text
c. vchar
d. null
3. Parmi les propositions suivantes, laquelle ne décrit pas un type de données
int ?
a. integer
b. bigint est utilisé lorsque la valeur dépassera la plage du type de données
int.
c. SQL Server ne convertira pas d’autres types de données int en bigint.
d. les fonctions retourneront uniquement bigint si l’expression d’origine
a un type de données identique.
4. Les conversions implicites requièrent-elles une fonction de légende réelle :
Cast ou Convert ?
a. Oui
b. Non
5. Sélectionnez toutes les affirmations inexactes :
a. une table fournit une structure pour stocker les données.
b. une base de données récupère les données de différentes tables et vues.
c. une base de données ne peut pas analyser les données redondantes.
d. une table peut être créée dans une interface graphique et à l’aide d’une
syntaxe.
6. Parmi les affirmations suivantes, laquelle décrit le mieux l’importance de
créer des vues ?
a. Les vues permettent aux utilisateurs d’accéder aux tables sous-jacentes.
b. Les vues vous permettent de limiter le type de données auxquelles les
utilisateurs peuvent accéder à l’aide des autorisations de visualisation.
c. Les vues réduisent la complexité pour les utilisateurs finaux qui n’ont
donc pas à apprendre des requêtes SQL complexes.
d. A et B
e. B et C
f. toutes les réponses ci-dessus.
7. Parmi les propositions suivantes, laquelle ne décrit pas la création
d’une vue ?
a. une vue est une table virtuelle.
b. une vue a pour but de servir de mécanisme de sécurité.
c. les vues ne doivent pas être utilisées pour accorder un accès.
d. une vue simplifie l’exécution des requêtes.

2-4
8. Parmi les propositions suivantes, laquelle contient l’instruction
Transact-SQL permettant de créer une vue ?
a. CREATE VIEW
b. CREATE VIEW view_name
c. CREATE VIEW view_name *
9. Parmi les propositions suivantes, laquelle désigne l’instruction devant être
utilisée pour supprimer le résultat « 1 row(s) affected. » après l’exécution
des instructions de requête ?
a. SET NO COUNT
b. SET NOCOUNT ON
c. SET NO COUNTING
d. SET NO COUNTING ON
10. Parmi les propositions suivantes, laquelle n’est pas un type de données
classique ?
a. CHAR
b. NCHAR
c. TEXT
d. VARCHAR

Évaluation des compétences


Scénario 2-1 : Calcul de la taille d’une Table
En tant que nouveau DBA, une tâche vient de vous être confiée : créer une grande base
de données des employés, qui stockera des informations concernant 10 000 employés.
Supposons que les colonnes suivantes sont définies dans la table :
FirstName varchar(50)
LastName varchar(50)
StreetAddress varchar(75)
State varchar(2)
ZipCode varchar(9)
Age int
BirthDate date
Combien d’octets chaque enregistrement peut-il occuper ?
Combien d’octets pouvez-vous utiliser pour stocker 10 000 enregistrements ?
FirstName varchar(50) = 50 octets
LastName varchar(50) = 50 octets

2-5
StreetAddress varchar(75) = 75 octets
State varchar(2) = 2 octets
ZipCode varchar(9) = 9 octets
Age int = 4 octets
BirthDate date = 3 octets
TOTAL = 193 octets.
Pour stocker 10 000 enregistrements, vous auriez besoin de 1 930 000 octets
ou d’un tout petit peu moins de 2 Mo.
Scénario 2-2 : Choix des types de données
Vous concevez plusieurs bases de données pour un client. Même si vous les concevez,
vous devez évoquer les éléments de données répertoriés. Quel type de données
pouvez-vous utiliser pour stocker les informations suivantes et pourquoi pouvez-vous
utiliser ce type de données ?
Rayon d’une planète
La valeur de pi ()
Salaire
Date de naissance d’une personne
La longueur d’un tableau
Nombre de lecteurs de musique vendus
Rayon d’une planète : puisqu’il est mesuré en miles ou en kilomètres et souvent
exprimé en nombre décimal, il est de type decimal ou float, selon le degré de
précision que vous souhaitez.
La valeur de pi () : puisque la valeur de pi est un nombre décimal infini, vous
devez utiliser une valeur de type decimal ou float, selon le degré de précision
que vous souhaitez.
Salaire : le salaire traite de la question de l’argent. Par conséquent, vous devez
utiliser une donnée de type Money.
Date de naissance d’une personne - Date.
La longueur d’un tableau : nombre décimal ou donnée de type float selon le degré
de précision que vous souhaitez. À moins de devoir faire preuve d’une extrême
précision au niveau du nanomètre, un nombre décimal fera l’affaire.
Nombres de lecteurs de musique vendus : il s’agit d’un compteur, qui indique
un entier. Par conséquent, vous devez utiliser une valeur de type integer.

2-6
Évaluation de la maîtrise
Scénario 2-3 : Présentation des tables et de la procédure pour les créer
Vous venez d’arriver au poste de DBA. Vous devez créer une base de données de clients.
Dans cet exercice, vous créerez une table tout en définissant une contrainte de clé
primaire après avoir créé une table.
Après avoir ouvert SSMS et accédé à la base de données d’AdventureWorks, quelle
commande de requête pouvez-vous utiliser pour créer une table appelée
customers.customer avec les colonnes ou champs suivants :
Unique Customer ID
CompanyID – Jusqu’à 50 caractères
FirstName – Jusqu’à 50 caractères
LastName – Jusqu’à 50 caractères
ModifiedDate

USE AdventureWorks
GO

CREATE TABLE Customers.Customer


(CustomerID INT IDENTITY(1,1)
CompanyName VARCHAR(50) NULL,
FirstName VARCHAR(50) NULL,
LastName VARCHAR(50) NULL,
ModifiedDate DATE NOT NULL,
CONSTRAINT pk_customer PRIMARY KEY (CustomerID))
GO

Scénario 2-4 : Extraction des données d’une base de données


Vous occupez le poste de DBA au sein d’AdventureWorks Corporation. Un responsable
de service vient vers vous afin que vous extrayez des données de la base de données
AdventureWorks. Ainsi, après avoir ouvert SSMS et accédé à la base de données
AdventureWorks, spécifiez les instructions fondamentales SELECT que vous pouvez
utiliser pour récupérer les informations requises à partir de la table
ProductsSubcategory ?
1. Quelles commandes peuvent retourner toutes les lignes et colonnes dans
cette table ProductCategory à l’aide de l’instruction suivante ?
2. Quelles commandes pouvez-vous taper et exécuter afin de retourner
uniquement les colonnes ProductSubcategoryID,
ProductCategoryID, Name, et ModifiedDate à l’aide de l’instruction
suivante ?

2-7
3. Quelles commandes pouvez-vous taper et exécuter pour retourner les
lignes où le mot bike est trouvé quelque part dans la colonne Name ?
4. Dans la fenêtre Requête existante, quelles commandes pouvez-vous
utiliser pour ajouter un alias de colonne à la colonne Name afin de la
préciser comme nom de sous-catégorie ?
5. Dans la fenêtre Requête existante, quelle commande pouvez-vous
utiliser pour trier le jeu de résultats précédent ?

1. Vous avez dû ouvrir SQL Server Management Studio au cours de notre précédent
exercice. Si ce n’est pas le cas, cliquez sur Démarrer | Tous les programmes |
Microsoft SQL Server 2008 | SQL Server Management Studio.
2. Tapez et exécutez le code spécifiant la base de données AdventureWorks et retournez
toutes les lignes et colonnes dans cette table ProductCategory.

USE AdventureWorks

SELECT * FROM Production.ProductSubcategory;

3. Dans la fenêtre Requête existante, tapez, surlignez et exécutez le code qui retourne
uniquement les colonnes ProductSubcategoryID, ProductCategoryID, Name et
ModifiedDate.

USE AdventureWorks
SELECT ProductSubcategoryID, ProductCategoryID
, Name, ModifiedDate
FROM Production.ProductSubcategory;

4. Dans la fenêtre Requête existante, tapez, surlignez et exécutez le code qui retourne
les lignes où le mot bike est trouvé dans la colonne Name à l’aide des instructions
suivantes :

USE AdventureWorks
SELECT ProductSubcategoryID, ProductCategoryID
, Name, ModifiedDate
FROM Production.ProductSubcategory
WHERE Name LIKE ‘%Bike%’

5. Dans la fenêtre Requête existante, tapez, surlignez et exécutez le code afin d’ajouter
un alias de colonne à la colonne Name pour la préciser comme nom de sous-catégorie.

USE AdventureWorks
SELECT ProductSubcategoryID, ProductCategoryID
, Name AS ‘Subcategory Name’, ModifiedDate
FROM Production.ProductSubcategory
WHERE Name LIKE ‘%Bike%’

2-8

Vous aimerez peut-être aussi