Home

Les Indexes

 

Principes de Base des Indexes

 

Introduction

Si vous jetez un coup d'œil aux dernières pages d'un livre non-fictif (comme un livre sur l'histoire, l'économie, les mathématiques, la sociologie, ou les statistiques, etc.), vous trouverez une série de pages qui commencent dans un index d'une étiquette de section. Les mots que vous recherchez dans une série vous permettent de localiser une section du livre qui mentionne, explique ou décrit le mot et les sujets connexes. Un index dans un livre rend facile et rapide pour accéder directement à une section d'un livre traitant d'un sujet particulier.

Comme dans un livre, une table ou une vue peuvent utiliser le mécanisme prévu par un index. Dans une table ou une vue, un index est une (ou plusieurs colonnes) qui peut être utilisée pour localiser des enregistrements et prendre une action spécifique basée sur une règle renforcée sur cette (ces) colonne (s).

Practical LearningFormation Pratique : Présentation des Indexes

  1. Démarrez Microsoft SQL Server et la connexion pour ouvrir Microsoft SQL Server Management Studio
  2. Pour créer une nouvelle base de données, dans l'Explorateur d'objets, cliquez avec le bouton droit sur bases de données, puis cliquez sur nouvelle base de données...
  3. Définissez le nom de CollinsUniversity puis cliquez sur le bouton OK.
  4. Dans l'Explorateur d'objets, développez CollinsUniversity
  5. Du côté Droit-> cliquez sur tables et cliquez sur Nouveau...
  6. Cliquez sur les champs comme suit :
     
    Column Name Data type Allow Nulls
    StudentNumber int Unchecked
    FirtsName nvarchar (20) Checked
    MI nchar (1) Checked
    LastName nvarchar (20) Unchecked
    Username nvarchar (20) Unchecked
    Password nvarchar (20) Checked
  7. Fermez la table
  8. Quand on demande si vous souhaitez l'enregistrer, cliquez sur Oui
  9. Définissez le nom sur StudentRegistration
  10. Cliquez sur OK
  11. Dans la barre d'outils standard, cliquez sur le bouton New QueryNew Query
  12. Pour créer une nouvelle base de données et une table, tapez ce qui suit :
    IF EXISTS(SELECT name FROM sys.databases 
              WHERE name = N'CeilInn3') 
    DROP DATABASE CeilInn3 
    GO 
    CREATE DATABASE CeilInn3 ; 
    GO 
     
     
    USE CeilInn3 ; 
    GO 
     
     
    IF OBJECT_ID('Rooms', 'U') IS NOT NULL 
     DROP TABLE Rooms 
    GO 
     
     
    CREATE TABLE Rooms 
    (
     
     
        RoomID int identity (1, 1) primary key not null, 
        RoomNumber nvarchar(10), 
        LocationCode nchar(10) default N'Silver Spring', 
        RoomType nvarchar (20) default N'Bedroom ', 
        BedType nvarchar (40)default N'Queen', 
        Rate money default 75.85, 
        Available bit default 0
    ); 
    GO
  13. Appuyez sur F5 pour exécuter
  14. Dans la barre d'outils standard, cliquez sur le bouton Enregistrer
  15. Définissez le nom comme CeilInn3
  16. Cliquez sur OK

Création d'un index visuellement

Le moteur de base de données est déjà équipé d'un mécanisme par défaut pour créer automatiquement un index sur une table en fonction de la façon dont la table est créée. Par exemple, si vous créez une clé primaire d'une table, le moteur de base de données crée automatiquement un index pour les colonnes utilisées comme clé primaire. Dans le cas contraire, vous pouvez toujours explicitement créer un index. Vous pouvez créer un index visuellement ou en utilisant le code SQL.

Pour créer visuellement un index, vous pouvez utiliser la boîte de dialogue Indexes/Keys. Pour l'afficher dans l'Explorateur d'objets, développez la base de données contenant la table ou la vue et développez le nœud Tables. Cliquez avec le bouton droit de la souris sur la table ou la vue pour laquelle vous souhaitez créer l'index et cliquez sur Créer. Dans la fenêtre, cliquez avec le bouton droit de la souris sur Indexes/Keys... Ceci ouvrirait la boîte de dialogue Indexes/Keyx :

Indexes/Keys

Pour créer un index, cliquez sur le bouton Add. La première pièce de l'information que vous devez fournir est le nom. Normalement, le moteur de base de données fournit un nom par défaut. Si vous souhaitez le modifier, cliquez sur (Name) et tapez le nom souhaité. L'autre élément très important d'informations que vous devez fournir est au moins une colonne. Par défaut, le moteur de base de données sélectionne la première colonne de la table. Si ce n'est pas la colonne que vous voulez utiliser, cliquez sur colonnes et cliquez sur son bouton ellipsis Ellipsis. Ceci ouvrirait la boîte de dialogue index :

Index Columns

Dans les zones sous le nom de colonne, vous pouvez sélectionner chaque colonne. Une fois que vous êtes prêt, cliquez sur OK.

Practical LearningFormation pratique : Création d' un index

  1. Dans l'Explorateur d'objets, sous le nœud Tables de CollinsUniversity, cliquez avec le bouton droit de la souris sur StudentRegistration et cliquez sur Créer
  2. Cliquez avec le bouton droit de la souris n'importe où dans la zone blanche et cliquez sur Indexes/Keys...
  3. Cliquez sur Add
  4. Cliquez sur colonnes et cliquez sur son bouton de sélection
  5. Cliquez sur la zone de liste déroulante par défaut le StudentNumber et sélectionnez le nom
  6. Cliquez sur la case sous le nom
  7. Cliquez sur la flèche de la zone de liste déroulante et sélectionnez le nom d'utilisateur
  8. Cliquez sur OK
  9. Cliquez sur (nom) et tapez IX_Credentials
  10. Cliquez sur Fermer
  11. Fermez la table
  12. Si vous êtes invité à enregistrer, cliquez sur Oui

Création d'un index avec SQL

Pour créer un index dans SQL, la formule de base à suivre est la suivante :

CREATE INDEX IndexName ON Table/View (Column (s))

Vous pouvez également ouvrir une fenêtre de requête. Puis, dans l'Explorateur de modèles, développez le nœud d'index. Faites glisser les Create Index Basis (ou un autre sous-nœud) et laissez-le tomber dans la fenêtre. Le Code squelette serait généré pour vous :

--=============================================
--Create index basic template
--============================================= 
USE < database_name, sysname, AdventureWorks > 
GO 
 
CREATE INDEX < index_name, sysname, ind_test > 
ON < schema_name, sysname, Person>. <table_name, sysname, Adress> 
(
   < column_name1, sysname, PostalCode >
) 
GO

La création d'un index commence avec l'expression CREATE INDEX, suivie d'un nom pour l'index, suivie par le mot clé ON. Dans l'espace réservé/Mode d'affichage, entrez le nom de la table ou de la vue pour laquelle vous souhaitez créer l'index, suivi de parenthèses dans lesquelles vous entrez au moins une seule colonne. Voici un exemple :

-- ============================================= 
-- Database: Exercise 
-- ============================================= 
USE master 
GO 
 
 
-- Drop the database if it already exists 
IF EXISTS ( 
 SELECT name 
      FROM sys.databases 
      WHERE name = N'Exercise' 
) 
DROP DATABASE Exercise 
GO 
 
 
CREATE DATABASE Exercise 
GO 
 
 
USE Exercise; 
GO
 -- ============================================= 
-- Database: Exercise 
-- Table; Employees 
-- ============================================= 
CREATE TABLE Employees 
( 
    EmployeeNumber int NOT NULL, 
    LastName nvarchar(20) NOT NULL, 
    FirstName nvarchar(20), 
    Username nchar(8) NOT NULL, 
    DateHired date NULL, 
    HourlySalary money 
); 
GO 
 
 
INSERT INTO Employees 
VALUES(62480, N'James', N'Haans', N'jhaans', N'1998-10-25', 28.02), 
      (35844, N'Gertrude', N'Monay', N'gmonay', N'2006-06-22', 14.36), 
      (24904, N'Philom©ne', N'Guillon', N'pguillon', N'2001-10-16', 18.05), 
      (48049, N'Eddie', N'Monsoon', N'emonsoon', N'08/10/2009', 26.22), 
      (25805, N'Peter', N'Mukoko', N'pmukoko', N'03-10-2004', 22.48), 
      (58405, N'Chritian', N'Allen', N'callen', N'06/16/1995', 16.45); 
GO
 
 
CREATE INDEX IX_Employees 
ON Employees(EmployeeNumber) ; 
GO

Si l'index comprendra plusieurs colonnes, répertoriez-les séparées par des virgules. Voici un exemple :

CREATE INDEX IX_Employees 
ON Employees (LastName, Username); 
GO

Maintenance de l'index

 

Introduction

Dans Microsoft SQL Server (et la plupart des systèmes de base de données), un index est traité comme un objet. C'est-à-dire, un index peut être archivé ou supprimé à volonté.

Suppression d'un index

Si vous n'avez plus besoin d'un index, vous pouvez le supprimer. Vous pouvez le faire visuellement ou manuellement.

Pour supprimer visuellement un index, ouvrez sa table en mode création. Cliquez avec le bouton droit de la souris quelque part dans la fenêtre de la table, puis cliquez sur index/vues. Dans le cadre de gauche, cliquez sur le nom de l'index pour le sélectionner, puis cliquez sur le bouton Supprimer.Vous ne recevrez pas un avertissement. Puis cliquez sur Fermer. Si vous souhaitez changer d'avis et conserver l'index, n'enregistrez pas le tableau.

La syntaxe de base pour supprimer un index dans Transact-SQL est la suivante :

DROP INDEX IndexName ON TableName ;

Dans cette formule, remplacez Bonb TableName avec le nom de la table qui contient l'index. Remplacez IndexName avec le nom de l'index dont vous souhaitez vous débarrasser.

Voici un exemple :

USE exercice ; 
GO 
DROP INDEX IX_Employees ON Employees ; 
GO

Vérification de l'existence d'un index

Avant d'effectuer une opération sur un index, vous pouvez vérifier d'abord qu'il existe. Par exemple, si vous essayez de créer un index et lui donner un nom qui existe déjà, vous recevriez une erreur. Le code suivant

USE Exercise ; 
GO 
 
 
CREATE INDEX IX_Employees 
ON Employees(EmployeeNumber) ; 
GO

produirait :

MSG 1913, Level 16, State 1, Line 2, 
L'opération a échoué car un index ou statistiques 
avec le nom 'IX_Employees' existe déjà sur la table 'Employees'.

Pour vérifier visuellement l'existence d'un index, ouvrez la table ou la vue en mode création, cliquez avec le bouton droit de la souris sur le milieu de la fenêtre et cliquez sur Index/Clés. La liste des index doit apparaître sur le côté gauche. Voici un exemple :

Pour vous aider avec la vérification de l'existence d'un index, Transact-SQL fournit la formule suivante :

IF EXISTS (SELECT Name FROM sys.indexes 
WHERE name = IndexName)
Do something here

La principale chose que vous devrez fournir dans cette formule est le nom de l'index. Une fois que vous avez coché, vous pouvez prendre les mesures nécessaires.Voici un exemple :

USE Exercise ; 
GO 
 
 
IF EXISTS (SELECT Name FROM sys.indexes 
                  WHERE Nom = N 'IX_Employees') 
DROP INDEX IX_Employees 
ON Employees 
GO 
CREATE INDEX IX_Employees 
ON Employees(EmployeeNumber) ; 
GO

Les types d'index

 

Introduction

Microsoft SQL Server prend en charge divers types d'index. Les deux catégories les plus larges sont en Cluster et non Cluster.

Index Cluster

Dans notre introduction, nous avons vu qu'un index est créé principalement à l'aide d'une ou plusieurs colonnes d'une table désignée. Cela signifie que, lorsqu'il s'agit de l'utilisation de l'index, nous pourrions utiliser les valeurs stockées dans la (s) colonne (s) qui a (ont) été sélectionnée (s) pour l'index. Un tel index est considéré comme en cluster. Les colonnes qui font partie d'un index sont appelées clés.

Pour créer visuellement un index cluster, affichez la boîte de dialogue Indexes/Keys. Dans la boîte de dialogue, lors de la création d'une nouvelle indexation ou après avoir cliqué sur le nom d'un index existant, dans la liste de droite, cliquez sur créer en cluster et sélectionnez Oui :

Clustered Index

Une fois que vous êtes prêt, cliquez sur Fermer.

Pour créer un index cluster dans SQL, utilisez la formule suivante :

CREATE CLUSTERED INDEX IndexName ON Table/View (Column (s))

De la description que nous avons donnée précédemment, le seul nouveau mot-clé ici est CLUSTERED. Sur cette base, voici un exemple :

-- ============================================= 
-- Database: Exercise 
-- ============================================= 
USE master 
GO 
 
 
-- Drop the database if it already exists 
IF EXISTS(SELECT name 
          FROM sys.databases 
          WHERE name = N'Exercise' 
) 
DROP DATABASE Exercise 
GO 
 
 
CREATE DATABASE Exercise 
GO 
 
 
USE Exercise; 
GO 
 
 
-- ============================================= 
-- Database: Exercise 
-- Table; Employees 
-- ============================================= 
CREATE TABLE Employees 
( 
        EmployeeNumber int NOT NULL, 
        LastName nvarchar(20) NOT NULL, 
        FirstName nvarchar(20), 
        Username nchar(8) NOT NULL, 
        DateHired date NULL, 
        HourlySalary money 
); 
GO 
 
 
INSERT INTO Employees 
VALUES(62480, N'James', N'Haans', N'jhaans', N'1998-10-25', 28.02), 
      (35844, N'Gertrude', N'Monay', N'gmonay', N'2006-06-22', 14.36), 
      (24904, N'Philom©ne', N'Guillon', N'pguillon', N'2001-10-16', 18.05), 
      (48049, N'Eddie', N'Monsoon', N'emonsoon', N'08/10/2009', 26.22), 
      (25805, N'Peter', N'Mukoko', N'pmukoko', N'03-10-2004', 22.48), 
      (58405, N'Chritian', N'Allen', N'callen', N'06/16/1995', 16.45); 
GO 
 
 
CREATE CLUSTERED INDEX IX_Employees 
ON Employees(LastName) ; 
GO

Une table qui contient un index Cluster est appelée une table en Cluster.

Il existe différents aspects à un index Cluster :

  • Pour faciliter la recherche des enregistrements, ils (les enregistrements) sont triés. Il est ainsi possible pour le moteur de base de données de continuer dans une approche de haut en bas et accéder rapidement à l'enregistrement de votre choix
  • Sans que cela soit une exigence, chaque enregistrement doit être unique (nous avons déjà vu comment prendre soin de cela, à l'aide des contraintes de vérification ; par la suite nous verrons une fois de plus comment créer des enregistrements uniques)
  • Il ne doit y avoir qu'un seul index cluster par table. Cela signifie que, si vous (décidez) créer un index Cluster sur une table, la table devient équipée. Si vous créez un autre index Cluster, le précédent (index Cluster) est supprimé

Index non Cluster

Un index Cluster utilise une liste triée des enregistrements d'une table ou une vue, un autre type d'index peut utiliser un mécanisme non fondé sur les enregistrements triés, mais sur un signet. C'est ce qu'on appelle un index non mis en Cluster. Par opposition à une table en Cluster qui ne peut contenir qu'un seul index Cluster, vous ne pouvez pas seulement créer un, mais bien 249 index non Cluster.

Pour créer visuellement un index non mis en Cluster, affichez la boîte de dialogue Indexes/Keys. Pour créer un nouvel index, cliquez sur le bouton Add. Si un index a toujours été créé ou défini comme en Cluster et vous souhaitez le modifier, vous pouvez modifier sa propriété Create As Clustered de Oui à Non.

Pour créer un index non Cluster dans SQL, utilisez la formule suivante :

CREATE NONCLUSTERED INDEX IndexName ON Table/View (Column (s))

Le nouveau mot-clé dans cette formule est NONCLUSTERED. Tout est le même comme précédemment indiqué. Sur cette base, voici un exemple :

-- ============================================= 
-- Database: Exercise 
-- ============================================= 
USE master 
GO 
 
 
-- Drop the database if it already exists 
IF EXISTS(SELECT name 
          FROM sys.databases 
          WHERE name = N'Exercise' 
) 
DROP DATABASE Exercise 
GO 
 
 
CREATE DATABASE Exercise 
GO 
 
 
USE Exercise; 
GO 
 
 
-- ============================================= 
-- Database: Exercise 
-- Table; Employees 
-- ============================================= 
CREATE TABLE Employees 
( 
        EmployeeNumber int NOT NULL, 
        LastName nvarchar(20) NOT NULL, 
        FirstName nvarchar(20), 
        Username nchar(8) NOT NULL, 
        DateHired date NULL, 
        HourlySalary money 
); 
GO 
 
 
INSERT INTO Employees 
VALUES(62480, N'James', N'Haans', N'jhaans', N'1998-10-25', 28.02), 
      (35844, N'Gertrude', N'Monay', N'gmonay', N'2006-06-22', 14.36), 
      (24904, N'Philom©ne', N'Guillon', N'pguillon', N'2001-10-16', 18.05), 
      (48049, N'Eddie', N'Monsoon', N'emonsoon', N'08/10/2009', 26.22), 
      (25805, N'Peter', N'Mukoko', N'pmukoko', N'03-10-2004', 22.48), 
      (58405, N'Chritian', N'Allen', N'callen', N'06/16/1995', 16.45); 
GO 
 
 
CREATE NONCLUSTERED INDEX IX_Employees 
ON Employees (LastName, FirstName); 
GO

Si vous créez un index sans spécifier CLUSTERED ou NONCLUSTERED, le moteur de base de données le rend automatiquement non-clustered.

Practical LearningFormation pratique : Création d'un index Cluster avec SQL

  1. Dans la fenêtre CeilInn3, pour créer un index à l'aide de Transact-SQL, appuyez sur Ctrl + A pour sélectionner l'intégralité du texte, tapez la commande suivante :
    USE CeilInn3 
    GO 
     
     
    IF EXISTS(SELECT name FROM sys.indexes 
              WHERE name = N'IX_RoomsIdentities') 
    DROP INDEX IX_RoomsIdentities 
    ON Rooms 
    CREATE NONCLUSTERED INDEX IX_RoomsIdentities 
    ON Rooms(RoomNumber, LocationCode) ; 
    GO
  2. Appuyez sur F5 pour exécuter

Index et création de table

Dans la leçon 15, nous avons vu comment créer une clé primaire d'une table.Voici un exemple :

USE Exercise  ;
GO
CREATE TABLE Students
(
StudentID int PRIMARY KEY,
FirstName nvarchar(50) NOT NULL,
LastName nvarchar(50)) ;
GO

Lorsque vous effectuez cette opération, le moteur de base de données crée un index sur la table et automatiquement choisit la colonne de clé primaire comme sa clé. Vous avez la possibilité d'indiquer le type d'index que vous souhaitez créer. Pour le faire, sur le côté droit du nom de la colonne, entrez CLUSTERED ou NONCLUSTERED. Si vous ne spécifiez pas le type de l'index, l'option CLUSTERED est appliquée.

Practical LearningFormation pratique : Création d'un Cluster de tables

  1. Dans l'onglet CeilInn3, pour compléter la base de données, appuyez sur Ctrl + A et tapez le texte suivant :
    USE CeilInn3 ; 
    GO 
    CREATE TABLE Customers (
           Customer ID int identity (1, 1) primary key CLUSTERED NOT NULL, 
           AccountNumber nchar(10) UNIQUE, 
           FullName nvarchar(50) NOT NULL, 
           PhoneNumber nvarchar (20), 
           EmailAddress nvarchar(50), 
           CONSTRAINT CK_CustomerContact 
               CHECK((PhoneNumber IS NOT NULL) OR (EmailAddress IS NOT NULL))
    ); 
    GO
  2. Appuyez sur F5 pour exécuter

L'Entrée de données et l'analyse avec index

 

Introduction

Dans notre introduction, nous avons vu qu'un index peut rendre possible de prendre des mesures lors de la saisie de données, telles que veillant à ce qu'une colonne ait des valeurs uniques pour chaque enregistrement ou en veiller à ce que la combinaison des valeurs d'un groupe de colonnes sur le même enregistrement génère une valeur unique. Outre cette caractéristique des index, ils sont effectivement très utiles lorsqu'il s'agit de l'analyse de données.

Comme nous l'avons mentionné pour un livre, l'objectif principal d'un index est qu'il soit plus facile de localiser les enregistrements d'une table ou d'une vue.

Practical LearningFormation pratique : Saisie de données

  1. Remplacez le contenu de la fenêtre de CeilInn3 par ce qui suit :
    USE CeilInn3 ; 
    GO 
    
    INSERT INTO Rooms (RoomNumber, LocationCode)VALUES(104, N'SLSP'); 
    GO 
    
    INSERT INTO Rooms (RoomNumber, LocationCode, 
     BedType, Rate, Available) 
               VALUES(105, N'SLSP', N'King', 85.75, 1), 
                     (106, N'SLSP ', N'King ', 85.75, 1) 
    GO 
    
    INSERT INTO Rooms (RoomNumber, LocationCode, Available) 
              VALUES(107, N'SLSP', 1) 
    GO 
    
    INSERT INTO Rooms (RoomNumber, LocationCode, BedType, Rate) 
              VALUES(108, N'SLSP', N'King', 85.75) 
    GO
    
    INSERT INTO Rooms (RoomNumber, LocationCode, Available) 
              VALUES(109, N'SLSP', 1) 
    GO 
    
    INSERT INTO Rooms (RoomNumber, LocationCode, RoomType, Rate, Available) 
              VALUES(110, N'SLSP', N'Conference', 450.00, 1)
     
    GO
  2. Appuyez sur F5 pour exécuter

Introduction à la controverse autour d'index

Un index est rendu précieux de deux manières. D'une part, les enregistrements doivent être triés. Un index Cluster lui-même s'occupe de cet aspect car il trie interieurement et automatiquement ses enregistrements. Que se passe-t-il si les enregistrements ne sont pas uniques ? Par exemple, une mauvaise saisie de données sur une liste d'employés peut avoir deux ou plusieurs employés avec les enregistrements de l'employé même. Si vous créez un index pour une telle table, le moteur de base de données créerait des enregistrements en double sur l'index. Cela n'est généralement pas une bonne chose parce que lorsque vient le temps pour sélectionner des enregistrements, vous pouvez avoir trop d'enregistrements et prendre une mauvaise action.

Lors de la création d'une table, vous pouvez créer des index pour elle et permettre à l'index d'appliquer une règle qui stipule que chaque enregistrement soit unique. Pour s'occuper de cela, vous pouvez appliquer une règle d'unicité de l'index.

Si vous créez visuellement un index, dans la boîte de dialogue index/clés, sélectionnez l'index du côté gauche. Sur la liste de droite, définissez le champ Is Unique sur Oui. D'autre part, si vous souhaitez supprimer cette règle, définissez le champ Is Unique à Non.

Pour créer un index d'unicité dans SQL, appliquez le mot-clé UNIQUE dans la formule :

CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] INDEX index_name ON Table/View (Column (s)) 

Démarrez avec l'expression UNIQUE de CREATE, puis indiquez si elle pourrait être mise en Cluster ou non. Le reste suit les descriptions que nous avons vues précédemment. Voici un exemple :

--=============================================
--Database : Exercise
--============================================= 
USE master
GO 
 
 
--Drop the database if it already exists 
IF EXISTS (
       SELECT name
       FROM sys.databases 
       WHERE name = N'Exercise'
) 
DROP DATABASE Exercise 
GO 
 
 
CREATE DATABASE Exercise 
GO 
 
 
USE Exercise ; 
GO
 
 
--=============================================
--Database : Exercise
--Table ; Employees
--============================================= 
CREATE TABLE Employees 
(
        EmployeeNumber int NOT NULL, 
        LastName nvarchar (20) NOT NULL, 
        FirstName nvarchar (20), 
        Username nchar(8) NOT NULL, 
        DateHired date NULL, 
        HourlySalary)money
); 
GO 
 
 
CREATE UNIQUE CLUSTERED INDEX IX_Employees 
ON Employees(EmployeeNumber) ; 
GO

Practical LearningFormation pratique : Utilisation des index : controverse autour d'un naufrage

  1. Dans l'onglet CeilInn3, appuyez sur CTRL + F5 et tapez le texte suivant :
    USE CeilInn3 ; 
    GO 
     
     
    INSERT INTO Customers (AccountNumber, FullName),
                           PhoneNumber, Email Address)
    VALUES(N'395805', N'Ann Zeke', N'301-128-3506', N'azeke@yahoo.jp') 
          (N '628475',  N'Peter Dokta', N'(202) 050-1629', 
               N'pdorka1900@hotmail.com '), 
          (N '860042', 'N'Joan Summs, N ' 410 - 114 - 6820' 
               N'jsummons@emailcity.net'), 
          (N '228648', N'James Roberts', 
           N'(301) 097-9374', N'jroberts13579@gmail.net ') 
    GO
  2. Appuyez sur F5 pour exécuter

Index unique et saisie de données

Une fois que vous avez spécifié l'unicité d'un index sur une table, lors de la saisie de données, si l'utilisateur entre une valeur qui existe déjà dans la table, une erreur serait produite. Voici un exemple :

USE Exercise ; 
GO

INSERT INTO Employees (EmployeeNumber, FirstName, 
                       LastName, HourlySalary) 
VALUES(92935, N'Joan', N'Hamilton', 22.50) 
GO

INSERT INTO Employees (EmployeeNumber, FirstName, 
                       LastName, HourlySalary) 
VALUES(22940, N'Peter', N'Malley', 14.25) 
GO

INSERT INTO Employees (EmployeeNumber, FirstName, 
                       LastName, HourlySalary) 
VALUES(27495, N'Christine', N'Fink', 32.05) 
GO 
INSERT INTO Employees (EmployeeNumber, FirstName, 
                       LastName, HourlySalary) 
VALUES(22940, N'Gertrude', N'Monay', 15.55) 
GO 
INSERT INTO Employees (EmployeeNumber,FirstName, 
                       LastName,HourlySalary) 
VALUES (20285, N'Helene', N'Mukoko', 26.65) 
GO

Cela donnerait :

(1 row (s) affected) 

(1 row (s) affected)

(1 row (s) affected)
MSG 2601, Level 14, State 1, Line 1 
Cannot insert duplicate key row in 
object'dbo.Employees' with unique index  'IX_Employees'. 
The statement has been terminated.

(1 row (s) affected)

La Tables et l'index de partition

 

Introduction

Les données de votre base de données peuvent impliquer plusieurs enregistrements, de milliers ou millions, d'autant qu'à un moment donné, il peut s'avérer difficile à gérer. Une façon que vous pouvez traiter cela consiste à stocker les enregistrements d'une table dans les groupes de fichiers différents. Il est ainsi possible de stocker une section d'enregistrements dans un seul groupe de fichiers, une autre section dans un autre groupe de fichiers, éventuellement une autre section dans un autre groupe de fichiers et ainsi de suite. Par conséquent, lorsque vient le temps de rechercher un ou quelques enregistrements parmi des milliers ou des millions d'enregistrements, il serait plus facile de localiser ou de les localiser. Bien entendu, les données appartiennent toujours à une base de données et à la même table.

Practical LearningFormation pratique : Présentation de partitionnement

  1. Ouvrez un utilitaire de fichier, tel que l'Explorateur Windows
  2. Affichez le contenu des disques
  3. Sur le lecteur C :, créez un dossier nommé Real Estate Main Repository
  4. Si vous avez une autre partition ou un autre lecteur comme D : créez-y un dossier et nommez-le Real Estate Third Repository. Puis, dans le code ci-dessous, remplacez le lecteur indiqué du référentiel secondaire immobilier vers ce lecteur
    Si vous ne disposez pas d'un autre lecteur, créez un autre dossier sur le lecteur C: et nommez-le Real Estate Secondary Repository
  5. Si vous avez encore une partition ou un autre lecteur comme E :, créez-y un dossier et nommez-le Real Estate Third Repository. Puis, dans le code ci-dessous, remplacez le lecteur indiqué du Real Estate Third Repository vers ce lecteur
    Si vous ne disposez pas d'un autre lecteur, sur le lecteur C :, créez un autre dossier Real Estate Third Repository
  6. Cochez chacun de ces dossiers et notez qu'ils sont vides
  7. Revenez à Microsoft SQL Server Management Studio.
  8. Pour ouvrir une nouvelle fenêtre de requête, dans la barre d'outils standard, cliquez sur le bouton New Query New Query
  9. Pour créer une base de données et les groupes de fichiers d'accompagnement, tapez ce qui suit :
    USE master;  
    GO
    
    CREATE DATABASE RealEstate3  
    ON PRIMARY    
      ( NAME = N'RealEstatePrimary',      
        FILENAME = N'C:\Real Estate Main Repository\RealEstateMain.mdf',      
        SIZE = 4MB,      
        MAXSIZE = 10MB,      
        FILEGROWTH = 1MB),  
    FILEGROUP RealEstateGroupRecords1    
      ( NAME = N'RealEstateRecords1',      
        FILENAME = N'C:\Real Estate Main Repository\RealEstateFirst.ndf',      
        SIZE = 1MB,      
        MAXSIZE = 10MB,      
        FILEGROWTH = 1MB),  
    FILEGROUP RealEstateGroupRecords2    
      ( NAME = N'RealEstateRecords2',      
        FILENAME = N'C:\Real Estate Secondary Repository\RealEstateSecond.ndf',      
        SIZE = 1MB,      
        MAXSIZE = 10MB,      
        FILEGROWTH = 1MB),  
    FILEGROUP RealEstateGroupRecords3    
      ( NAME = N'RealEstateRecords3',      
        FILENAME = N'C:\Real Estate Third Repository\RealEstateThird.ndf',      
        SIZE = 1MB,      
        MAXSIZE = 10MB,      
        FILEGROWTH = 1MB)  
    LOG ON    
      ( NAME = N'RealEstate3Log',      
        FILENAME = N'C:\Real Estate Main Repository\RealEstateLogger.ldf',      
        SIZE = 1MB,      
        MAXSIZE = 10MB,      
        FILEGROWTH = 1MB);  
    GO
  10. Appuyez sur F5 pour exécuter
  11. Retournez aux utilitaires fichier tel que l'Explorateur Windows et vérifier le contenu de chacun des dossiers précédemment créés. Vérifiez également leurs tailles
  12. Revenez à Microsoft SQL Server Management Studio.

Partition d'une table

Avant de faire la partition d'une table, vous devez créer les groupes de fichiers nécessaires. Cela peut être fait lors de la création de la base de données car c'est à ce moment que vous spécifiez comment la base de données est stockée ; c'est-à-dire quels fichiers contiendront les informations de la base de données.

Après la création de la base de données et sur la création de ses groupes de fichiers. Avant de partitionner une table, vous devez créer une fonction de partition et un schéma de partition.

Une fonction de partition

Une fonction de partition est utilisée pour définir les plages d'enregistrements qui seront stockées dans quel groupe de fichiers. La formule SQL pour créer une fonction de partition est la suivante :

CREATE PARTITION FUNCTION PartitionFunctionName (ParameterType) 
AS RANGE [LEFT | RIGHT] 
FOR VALUES (StartRange1, StartRange2, StartRange_n)

Pour l'utiliser à partir d'un modèle, ouvrez une fenêtre de requête. Dans l'Explorateur de modèles, développez le nœud de la fonction de partition. Faites glisser la fonction Create Partition et déposez-la dans la fenêtre de requête. Le Code Skeleton sera généré pour vous :

--=====================================
--Create Partition Function template
--===================================== 
USE < database_name, sysname, AdventureWorks > 
GO 
 
CREATE PARTITION FUNCTION < partition_function_name, sysname, myRangePF > (< data_type_name, sysname, int >)
AS RANGE LEFT FOR VALUES (<data_value1,,1>, <data_value2,,100>, <data_value3,,1000>);
 
 
--La fonction de partition sur une colonne de partition  col1  pourrait être partitionnée comme suit:
--partition 1: col1 less than or equal to <data_value1,,1>
--partition 2: col1 greater than <data_value1,,1> AND col1 less than or equal to <data_value2,,100>
--partition 3: col1 greater than <data_value2,,100> AND col1 less than or equal to <data_value3,,1000>
--partition 4: col1 greater than <data_value3,,1000>

La création d'une fonction de partition démarre avec l'expression CREATE PARTITION FUNCTION suivie d'un nom. Le nom suit les règles pour les noms dans Microsoft SQL Server. Parce que vous créez une fonction, le nom est suivi par des parenthèses.

Entre les parenthèses de la fonction, vous devez spécifier le type de données de la colonne qui sera utilisé pour créer une gamme d'enregistrements. Les valeurs de la colonne seront utilisées pour distinguer les plages d'enregistrements. Cela signifie que les valeurs de cette colonne doivent permettre au moteur de base de données de prédire une gamme d'enregistrements. C'est ce qu'on appelle la colonne de partitionnement. Par exemple, vous pouvez utiliser une colonne qui comporte un nombre de valeurs incrémentielles. C'est le cas pour une colonne de clé primaire d'identité. Autre exemple, vous pouvez utiliser une colonne qui contient une catégorie de valeurs, telles que les clients femelles contre les clients mâles et les clients enfants. Comme un exemple de plus, vous pouvez utiliser une colonne qui contient les dates de sorte que vous pouvez isoler des plages d'enregistrements d'une date à l'autre.

Après la parenthèse fermante, tapez AS RANGE, qui indique que vous allez spécifier les plages de valeurs. Ceci est suivi soit de LEFT ou de RIGHT. Lorsque la fonction partition aura été créée et que la table elle-même aura été créée, lorsque le moteur de base de données est demandé pour rechercher un enregistrement ou une plage d'enregistrements, il peut avoir à trier les enregistrements. Si vous souhaitez trier les enregistrements de gauche à droite, utilisez le mot-clé LEFT. Si vous souhaitez que les enregistrements soient triés de droite à gauche, utilisez le mot-clé RIGHT.

L'expression AS RANGE LEFT ou AS RANGE RIGHT est suivie de FOR VALUES qui est suivie de parenthèses.

Lors de la création d'une fonction de partition, vous devez fournir un moyen pour le moteur de base de données pour obtenir une plage d'enregistrements. Par exemple, vous pouvez utiliser des enregistrements du numéro 1 au numéro 1000, puis une autre plage de 1001 à 5000 et ainsi de suite. Ou vous pouvez spécifier qu'une plage d'enregistrements irait du 11 février 2000 au 26 juin 2005. Puis une autre plage irait du 26 juin 2005 au 14 décembre 2006 et ainsi de suite.

Vous spécifiez la plage dans les parenthèses qui suivent l'expression FOR VALUES. Tapez la première valeur de la première plage, suivie par une virgule, suivie de la première valeur de la deuxième plage et ainsi de suite.

Practical LearningFormation pratique : Création d'une fonction de partition

  1. Sélectionnez le contenu entier de la fenêtre de requête et tapez le texte suivant :
    USE RealEstate3 ; 
    GO 
     
     
    CREATE PARTITION FUNCTION RealEstateSegmentation(int) 
    AS RANGE LEFT FOR VALUES(1, 10) ; 
    GO
  2. Appuyez sur F5 pour exécuter

Un schéma de partition

Un schéma de partition spécifie les noms des groupes de fichiers, dans leur ordre qui stockera les plages d'enregistrements qui ont été créées dans la fonction de partition. La formule pour créer un schéma de partition est la suivante :

CREATE PARTITION SCHEME PartitionSchemeName 
AS PARTITION PartitionFunctionName .
[ALL] TO ({file_group_name | [PRIMARY]} [,.. .n])

Vous démarrez avec l'expression CREATION PARTITION SCHEME pour mentionner votre intention. Ceci est suivi d'un nom. Le nom suit les règles d'objets.

Après le nom du schéma de partition, entrez AS PARTITION suivi du nom de la fonction de partition que vous devriez avoir créé précédemment.

Si vous envisagez d'utiliser un seul groupe de fichiers, après le nom de la fonction de partition, entrez ALL, suivi de parenthèses, dans lesquelles vous taperez PRIMARY.

Si vous envisagez d'utiliser des groupes de fichiers différents, après le nom de la fonction de partition, entrez TO, suivi de parenthèses. Nous avons vu que, dans les parenthèses de la fonction de partition FOR VALUES, vous avez entré la valeur de départ de la première plage. Dans les parenthèses du mot-clé TO, tapez le nom du groupe de fichier qui contiendra les enregistrements de la première plage de la fonction de partition. Nous avons également vu comment spécifier la deuxième plage dans la fonction de partition. Entre les parenthèses de la clause TO, après le nom du premier groupe de fichier, tapez une virgule suivie du nom du groupe de fichier qui contiendra les enregistrements de la deuxième plage.

Practical LearningFormation pratique : Création d'un schéma de fonction de partition

  1. Sélectionnez le contenu entier de la fenêtre de requête et tapez le texte suivant :
    USE RealEstate3 ; 
    GO 
     
     
    CREATE PARTITION SCHEME RealEstateDistributionScheme 
    AS PARTITION RealEstateSegmentation 
    TO (RealEstateGroupRecords1, RealEstateGroupRecords2, RealEstateGroupRecords3); 
    GO
  2. Dans la barre d'outils de l'éditeur SQL, cliquez sur le bouton Exécuter

Partitionnement d'une table

Après avoir créé le schéma de partition, vous pouvez créer la table. La formule pour spécifier un schéma de partition lors de la création d'une table est la suivante :

CREATE TABLE What We Have Learned So Far 
(
    What We Have Learned So Far
) ON PartitionSchemeName (ColumnName)

Vous démarrez avec l'expression CREATE TABLE, suivie des choses que nous avons apprises jusqu'ici : un schéma en option et un nom requis. Après le nom de la table, vous ouvrez et fermez les parenthèses, dans lequelles vous incluerez d'autres choses que nous avons vues jusqu'à présent : les colonnes, les contraintes et leurs options.

En dehors des parenthèses, tapez le mot clé ON, suivi du nom du schéma de partition que sera créé, suivi d'une ouverture et d'une parenthèse de fermeture. À l'intérieur des parenthèses du nom du schéma, saisissez le nom de la colonne de la table qui est la colonne de partitionnement.

Après la création de la table, vous pouvez l'utiliser, comme n'importe quelle table normale.

Practical LearningFormation pratique : Partitionnement d'une table

  1. Sélectionnez le contenu entier de la fenêtre de requête et tapez le texte suivant :
    -- =============================================  
    -- Author:   	 FunctionX  
    -- Database: 	 RealEstate3  
    -- Date Created: Tuesday July 28th, 2009  
    -- =============================================
    
    CREATE DATABASE RealEstate3;
    GO
    
    -- =============================================  
    -- Author:   	 FunctionX  
    -- Database: 	 RealEstate3  
    -- Table:    	 PropertyTypes  
    -- Date Created: Tuesday July 28th, 2009 
    -- =============================================  
    USE RealEstate3;  
    GO  
    CREATE TABLE PropertyTypes  
    (    
      PropertyTypeID int identity(1,1) NOT NULL,    
      PropertyType varchar(20),    
      CONSTRAINT PK_PropertyTypes PRIMARY KEY(PropertyTypeID)  
    ) ON RealEstateDistributionScheme(PropertyTypeID);  
    GO  
    INSERT INTO PropertyTypes(PropertyType)  
    VALUES(N'Condominium');  
    GO  
    INSERT INTO PropertyTypes(PropertyType)  
    VALUES(N'Single Family');  
    GO  
    INSERT INTO PropertyTypes(PropertyType)  
    VALUES(N'Townhouse'); 
    GO  
    INSERT INTO PropertyTypes(PropertyType)  
    VALUES(N'Unknown');  
    GO    
     
     
    -- =============================================  
    -- Author:   	 FunctionX  
    -- Database: 	 RealEstate3  
    -- Table:    	 Conditions  
    -- Date Created: Tuesday July 28th, 2009  
    -- =============================================  
    USE RealEstate3;  
    GO  
    CREATE TABLE Conditions  
    (    
      ConditionID int identity(1,1) NOT NULL,    
      Condition varchar(20),    
      CONSTRAINT PK_Conditions PRIMARY KEY(ConditionID)  
    ) ON RealEstateDistributionScheme(ConditionID);  
    GO  
    INSERT INTO Conditions(Condition)  
    VALUES(N'Excellent');  
    GO  
    INSERT INTO Conditions(Condition)  
    VALUES(N'Good');  
    GO  
    INSERT INTO Conditions(Condition)  
    VALUES(N'Bad Shape');  
    GO  
    INSERT INTO Conditions(Condition)  
    VALUES(N'Mostly Damaged'); 
    GO    
     
     
    -- =============================================  
    -- Author:   FunctionX  
    -- Database: RealEstate3  
    -- Table:    Properties  
    -- =============================================  
    CREATE TABLE Properties  
    (    
      PropertyID int identity(1,1) NOT NULL,    
      PropertyNumber char(6),    
      Address varchar(100),    
      City varchar(50),    
      State char(2),    
      ZIPCode varchar(12),    
      PropertyTypeID int  
            CONSTRAINT FK_PropertyTypes  
            FOREIGN KEY REFERENCES PropertyTypes(PropertyTypeID),  
      ConditionID int  
            CONSTRAINT FK_Conditions  
            FOREIGN KEY REFERENCES Conditions(ConditionID),    
      Bedrooms smallint,    
      Bathrooms float,    
      FinishedBasement bit,    
      IndoorGarage bit,    
      Stories smallint,    
      YearBuilt smallint,    
      MarketValue money,    
      CONSTRAINT PK_Properties PRIMARY KEY(PropertyID)  
    ) ON RealEstateDistributionScheme(PropertyID);  
    GO    
     
    INSERT INTO Properties(PropertyNumber, Address, City, State,    
       ZIPCode, PropertyTypeID, ConditionID, Bedrooms, Bathrooms,    
       FinishedBasement, IndoorGarage, Stories, YearBuilt, MarketValue)  
    VALUES(N'524880', N'1640 Lombardo Ave', N'Silver Spring', N'MD',    
           N'20904', 2, 2, 4, 2.5, 3, 1, 3, 1995, 495880.00);  
    GO  
    INSERT INTO Properties(PropertyNumber, Address, City, State,    
       ZIPCode, PropertyTypeID, ConditionID, Bedrooms, Bathrooms,    
       FinishedBasement, IndoorGarage, Stories, YearBuilt, MarketValue)  
    VALUES(N'688364', N'10315 North Hacht Rd', N'College Park', N'MD',         
           N'20747', 2, 1, 4, 3.5, 3,        
           1, 2, 2000, 620724.00);  
    GO  
    INSERT INTO Properties(PropertyNumber, Address, City, State,    
       ZIPCode, PropertyTypeID, ConditionID, FinishedBasement,    
       Stories, MarketValue)  
    VALUES(N'611464', N'6366 Lolita Drive', N'Laurel', N'MD',         
           N'20707', 2, 2, 1, 2, 422625.00);  
    GO  
    INSERT INTO Properties(Address, City, PropertyTypeID,    
       Bedrooms, MarketValue)  
    VALUES(N'9002 Palasko Hwy', N'Tysons Corner',         
           1, 2, 422895.00);  
    GO  
    INSERT INTO Properties(PropertyNumber, State,    
       ZIPCode, Bedrooms, YearBuilt, MarketValue)  
    VALUES(N'420115', N'DC',         
           N'20011', 2, 1982, 312555);  
    GO       
    INSERT INTO Properties(PropertyNumber, City, ZIPCode,   
       PropertyTypeID, Bedrooms, YearBuilt, MarketValue)  
    VALUES(N'917203', N'Alexandria', N'22024',         
           2, 3, 1965, 345660.00);  
    GO  
    INSERT INTO Properties(PropertyNumber, Address, City, State,    
       PropertyTypeID, ConditionID, Bedrooms, Bathrooms, MarketValue)  
    VALUES(N'200417', N'4140 Holisto Crt', N'Germantown', N'MD',         
           1, 1, 2, 1, 215495.00);  
    GO  
    INSERT INTO Properties(City, State, PropertyTypeID, ConditionID,    
       Bedrooms, Bathrooms,  YearBuilt, MarketValue)  
    VALUES(N'Rockville', N'MD', 1, 2, 2, 2, 1996, 436885.00);  
    GO  
    INSERT INTO Properties(PropertyNumber, Address, City, State,    
       ZIPCode, PropertyTypeID, ConditionID, Bedrooms, Bathrooms,    
       FinishedBasement, IndoorGarage, Stories, YearBuilt, MarketValue)  
    VALUES(N'927474', N'9522 Lockwood Rd', N'Chevy Chase', N'MD',         
           N'20852', 3, 3, 3, 2.5, 3, 0, 3,         
           1992, 415665.00);  
    GO  
    INSERT INTO Properties(PropertyNumber, Address, City, State,    
       ZIPCode, PropertyTypeID, ConditionID, Bedrooms, Bathrooms,    
       FinishedBasement, IndoorGarage, Stories, YearBuilt, MarketValue)  
    VALUES(N'207850', N'14250 Parkdoll Rd', N'Rockville', N'MD',         
           N'20854', 3, 2, 3, 2.5, 2, 1, 2,         
           1988, 325995.00);  
    GO      
    INSERT INTO Properties(City, PropertyTypeID, Bedrooms,    
       YearBuilt, MarketValue)  
    VALUES(N'Washington', 3, 4, 1975, 366775.00);  
    GO  
    INSERT INTO Properties(PropertyNumber, Address, City, State,    
       ZIPCode, PropertyTypeID, ConditionID, Bedrooms, Bathrooms,    
       YearBuilt, MarketValue)  
    VALUES(N'288540', N'10340 Helmes Street #408', N'Silver Spring', N'MD',         
           N'20906', 1, 2, 1, 1, 2000, 242775.00);  
    GO  
    INSERT INTO Properties(PropertyNumber, Address, City, State,    
       ZIPCode, PropertyTypeID, ConditionID, Bedrooms, Bathrooms,    
       FinishedBasement, IndoorGarage, Stories, YearBuilt, MarketValue)  
    VALUES(N'247472', N'1008 Coppen Street', N'Silver Spring', N'MD',         
           N'20906', 2, 1,         
           3, 3, 3, 1, 3, 1996, 625450.00);  
    GO  
    INSERT INTO Properties(City, ZIPCode, PropertyTypeID,      
       Stories, YearBuilt, MarketValue)  
    VALUES(N'Chevy Chase', N'20956', 2,          
           3, 2001, 525450.00);  
    GO  
    INSERT INTO Properties(Address, City, State,    
       PropertyTypeID, ConditionID, Bedrooms, MarketValue)  
    VALUES(N'686 Herod Ave #D04', N'Takoma Park', N'MD',         
           1, 1, 2, 360885.00);  
    GO  
    INSERT INTO Properties(PropertyNumber, Address, City, State,    
       ZIPCode, PropertyTypeID, ConditionID, Bedrooms, Bathrooms,    
       FinishedBasement, IndoorGarage, Stories, YearBuilt, MarketValue)  
    VALUES(N'297446', N'14005 Sniders Blvd', N'Laurel', N'MD',         
           N'20707', 3, 4,        
           4, 1.5, 3, 1, 2, 2002, 412885.00);  
    GO  
    INSERT INTO Properties(City, ZIPCode, ConditionID, Bedrooms,    
       Stories, YearBuilt)  
    VALUES(N'Silver Spring', N'20905', 2,         
           4, 2, 1965);  
    GO  
    INSERT INTO Properties(PropertyNumber, Address, City, State,    
       ZIPCode, PropertyTypeID, ConditionID, Bedrooms, Bathrooms,    
       FinishedBasement, IndoorGarage, Stories, YearBuilt, MarketValue)  
    VALUES(N'924792', N'680 Prushia Rd', N'Washington', N'DC',         
           N'20008', 2, 2,         
           5, 3.5, 3, 0, 3, 2000, 555885.00);  
    GO  
    INSERT INTO Properties(PropertyNumber, Address, City, State,    
       ZIPCode, PropertyTypeID, ConditionID, Bedrooms, Bathrooms,    
       FinishedBasement, IndoorGarage, Stories, YearBuilt, MarketValue)  
    VALUES(N'294796', N'14688 Parrison Street', N'College Park', N'MD',         
           N'20742', 2, 1,         
           5, 2.5, 2, 1, 2, 1995, 485995.00);  
    GO  
    INSERT INTO Properties(City, State, PropertyTypeID, ConditionID,    
       Bedrooms, Bathrooms,  YearBuilt, MarketValue)  
    VALUES(N'Rockville', N'MD', 1, 2, 1, 1, 1996, 418885.00);  
    GO  
    INSERT INTO Properties(PropertyNumber, Address, City, State,    
       ZIPCode, PropertyTypeID, ConditionID, Bedrooms, Bathrooms,    
       YearBuilt, MarketValue)  
    VALUES(N'811155', N'10340 Helmes Street #1012', N'Silver Spring',         
           'MD', N'20906', 1, 2,         
           1, 1, 2000, 252775.00);  
    GO  
    INSERT INTO Properties(PropertyNumber, Address, City, State,    
       ZIPCode, PropertyTypeID, ConditionID, Bedrooms, Bathrooms,    
       FinishedBasement, IndoorGarage, Stories, YearBuilt, MarketValue)  
    VALUES(N'447597', N'4201 Vilamar Ave', N'Hyattsville', N'MD',         
           N'20782', 3, 1,         
           3, 2, 2, 1, 3, 1992, 365880.00);  
    GO  
    INSERT INTO Properties(Address, ZIPCode, Bathrooms) 
    VALUES(N'1622 Rombard Str', 20904, 2.5);  
    GO  
    INSERT INTO Properties(City, State, PropertyTypeID, ConditionID,    
       Bedrooms, Bathrooms,  YearBuilt, MarketValue)  
    VALUES(N'Rockville', N'MD', 1, 2, 1, 1, 1996, 420555.00);  
    GO  
    INSERT INTO Properties(PropertyNumber, Address, City, State,    
       ZIPCode, PropertyTypeID, ConditionID, Bedrooms, Bathrooms,    
       FinishedBasement, IndoorGarage, Stories, YearBuilt, MarketValue)  
    VALUES(N'297415', N'980 Phorwick Street', N'Washington', N'DC',         
           N'20004', 2, 2,         
           4, 3.5, 3, 3, 1, 2004, 735475.00);  
    GO  
    INSERT INTO Properties(PropertyNumber, Address, City, State,    
       ZIPCode, PropertyTypeID, ConditionID, Bedrooms, Bathrooms,    
       FinishedBasement, IndoorGarage, Stories, YearBuilt, MarketValue)  
    VALUES(N'475974', N'9015 Marvin Crow Ave', N'Gaithersburg', N'MD',         
           N'20872', 2, 4,        
           4, 2.5, 3, 1, 1, 1965, 615775.00);  
    GO  
    INSERT INTO Properties(PropertyNumber, Address, City, State,    
       ZIPCode, PropertyTypeID, ConditionID, Bedrooms, Bathrooms,    
       FinishedBasement, IndoorGarage, Stories, YearBuilt, MarketValue)  
    VALUES(N'836642', N'3016 Feldman Court', N'Rockville', N'MD',         
           N'20954', 2, 3,         
           5, 3, 3, 1, 3, 1960, 528555.00);  
    GO  
    INSERT INTO Properties(Address, City, ZIPCode, PropertyTypeID,    
       Bedrooms, Bathrooms, YearBuilt, MarketValue)  
    VALUES(N'2444 Arielson Rd', N'Rockville', N'20854',   
           1, 2, 1, 1996, 475555.00);  
    GO    
     
    INSERT INTO Properties(City, State, PropertyTypeID, Stories)  
    VALUES(N'Rockville', N'MD',         
           3, 1);  
    GO  
    INSERT INTO Properties(PropertyNumber, Address, City, State,    
       ZIPCode, PropertyTypeID, ConditionID, Bedrooms, Bathrooms,    
       FinishedBasement, IndoorGarage, Stories, YearBuilt, MarketValue)  
    VALUES(N'208304', N'7307 Everett Hwy', N'Washington', N'DC',         
           N'20012', 3, 1,         
           2, 2.5, 2, 0, 4, 2006, 420550.00);  
    GO  
    INSERT INTO Properties(PropertyNumber, Address, City, State,    
       ZIPCode, PropertyTypeID, ConditionID, Bedrooms,    
       Bathrooms, YearBuilt, MarketValue)  
    VALUES(N'644114', N'10340 Helmes Street#1006', N'Silver Spring',         
           'MD', N'20906', 1, 2,         
           2, 2, 2000, 258445.00);  
    GO  
    INSERT INTO Properties(PropertyNumber, Address, City, State,    
       ZIPCode, PropertyTypeID, ConditionID, Bedrooms, Bathrooms,    
       FinishedBasement, IndoorGarage, Stories, YearBuilt, MarketValue)  
    VALUES(N'937966', N'7303 Warfield Court', N'Tysons Corner', N'VA',         
           '22131', 2, 2,         
           3, 2.5, 3, 1, 4, 2006, 825775.00);  
    GO  
    INSERT INTO Properties(City, ZIPCode, ConditionID, Bedrooms,     
       Stories, YearBuilt)  
    VALUES(N'Fairfax', N'22232', 2, 3, 3, 1985);  
    GO  
    INSERT INTO Properties(PropertyNumber, Address, City, State,    
       ZIPCode, PropertyTypeID, ConditionID, Bedrooms, Bathrooms,    
       FinishedBasement, IndoorGarage, Stories, YearBuilt, MarketValue) 
    VALUES(N'297497', N'12401 Conniard Ave', N'Takoma Park', N'MD',        
           N'20910', 3, 2,         
           3, 2.5, 3, 1, 3, 2004, 280775.00);  
    GO  
    INSERT INTO Properties(PropertyNumber, City, ZIPCode,    
       PropertyTypeID, ConditionID, Bedrooms, Bathrooms,    
       YearBuilt, Stories, MarketValue)  
    VALUES(N'855255', N'Laurel', N'20707', 2,         
           4, 3, 2, 1962, 2, 342805.00);  
    GO  
    INSERT INTO Properties(PropertyNumber, Address, City, State,    
       ZIPCode, PropertyTypeID, ConditionID, Bedrooms, Bathrooms,    
       FinishedBasement, IndoorGarage, Stories, YearBuilt, MarketValue)  
    VALUES(N'469750', N'6124 Falk Rd', N'Arlington', N'VA',         
           '22031', 2, 4,         
           4, 3.5, 3, 1, 1, 1982, 635995.00);  
    GO  
    INSERT INTO Properties(PropertyNumber, Address, City, State,    
       ZIPCode, PropertyTypeID, ConditionID, Bedrooms, Bathrooms,    
       FinishedBasement, IndoorGarage, Stories, YearBuilt, MarketValue)  
    VALUES(N'826927', N'5121 Riehl Ace', N'Fairfax', N'VA',         
           '22232', 3, 1,         
           3, 1.5, 2, 0, 1, 2002, 325620.00);  
    GO  
    INSERT INTO Properties(City, ZIPCode, PropertyTypeID, Bedrooms,     
       Bathrooms, MarketValue)  
    VALUES(N'Silver Spring', N'20906', 1, 2, 2, 335655.00);  
    GO    
     
    INSERT INTO Properties(PropertyNumber, Address, City, State,    
       ZIPCode, PropertyTypeID, ConditionID, Bedrooms, Bathrooms,    
       FinishedBasement, IndoorGarage, Stories, YearBuilt, MarketValue)  
    VALUES(N'287064 ', N'9533 Pensulian Rd', N'Silver Spring', N'MD',         
           N'20904', 2, 3,         
           3, 1.5, 3, 1, 2, 1992, 485775.00);  
    GO  
    INSERT INTO Properties(PropertyNumber, City, ZIPCode,    
       PropertyTypeID, ConditionID, Bedrooms, YearBuilt, Stories)  
    VALUES(N'724001 ', N'705 Helios Ave', N'20004',         
           3, 3, 3, 1974, 4);  
    GO  
    INSERT INTO Properties(PropertyNumber, Address, City, State,    
       ZIPCode, PropertyTypeID, ConditionID, Bedrooms, Bathrooms,    
       FinishedBasement, IndoorGarage, Stories, YearBuilt, MarketValue)  
    VALUES(N'209275', N'944 Fryer Ave', N'Chevy Chase', N'MD',         
           N'20852', 2, 1,         
           5, 2.5, 3, 0, 2, 2002, 625665.00);  
    GO  
    INSERT INTO Properties(PropertyNumber, Address, City, State,    
       ZIPCode, PropertyTypeID, ConditionID, Bedrooms, Bathrooms,    
       FinishedBasement, IndoorGarage, Stories, YearBuilt, MarketValue)  
    VALUES(N'204759', N'1950 Galego Street', N'Germantown', N'MD',         
           N'20874', 2, 1,         
           4, 3.5, 2, 1, 4, 2007, 428665.00);  
    GO  
    INSERT INTO Properties(PropertyNumber, Address, City, State,    
       ZIPCode, PropertyTypeID, ConditionID, Bedrooms, Bathrooms,    
       FinishedBasement, IndoorGarage, Stories, YearBuilt, MarketValue)  
    VALUES(N'937259', N'12366 Fowler Ave', N'Alexandria', N'VA',        
           '22031', 3, 2,         
           3, 1.5, 3, 1, 3, 2007, 402815.00); 
     GO
  2. Dans la barre d'outils de l'éditeur SQL, cliquez sur le bouton Exécuter
     
 

Précédent Copyright © 2010 Yevol.com Suivant