Home

Restrictions sur la Sélection de Données

 

Principes de base des Restrictions

 

Introduction

Nous savons que nous pouvons analyser les données de la table à l'aide d'une fenêtre de requête. Au lieu de sélectionner toutes les données comme nous l'avons fait jusqu'ici à l'aide du mot-clé SELECT, vous pouvez présenter une condition que la base de données suivrait pour isoler des enregistrements spécifiques.

 

Practical LearningEtude pratique : Présentation des restrictions

  1. Démarrez Microsoft SQL Server et connectez-vous.
    Si vous ne l'avez pas encore fait, créez la RealEstate1database
  2. A partir de l'Explorateur d'objets, développez des bases de données
  3. Développez RealEstate1, puis développez Tables
  4. Cliquez avec le bouton droit de la souris sur dbo.Properties, puis cliquez sur Modifier Top 200 Rows
  5. Dans la barre d'outils du Concepteur de requêtes, cliquez sur le bouton Show Diagram PaneShow Diagram Pane, le bouton Show Criteria PaneShow Criteria Paneet le bouton Show SQL PaneShow SQL Pane

Sélection d'Enregistrements du TOP

Si vous avez un long groupe d'enregistrements, vous pouvez préciser que vous souhaitez ne voir qu'un certain nombre d'enregistrements. Pour le faire, après l'opérateur SELECT, tapez TOP suivi d'un nombre entier. Poursuivez l'instruction SELECT comme bon vous semble. Voici un exemple :

USE Exercise ; 
GO 
 
SELECT TOP 5 * FROM Employees ; 
GO

Vous pouvez également inclure le nombre entre parenthèses.Voici un exemple :

USE Exercise ; 
GO 
 
SELECT TOP(5) * FROM Employees ; 
GO

Cette instruction demande à l'interprète SQL de sélectionner les 5 premiers enregistrements de la table Employees. Juste comme fait ici, vous pouvez appliquer l'opérateur TOP à n'importe laquelle des déclarations que nous verrons pour le reste de nos leçons.

Practical LearningEtude pratique : Sélection du Top Records

  1. Dans la section SQL, sur le côté droit de SELECT, modifier Top(200) vers le haut (1 0)
  2. Cliquez avec le bouton droit de la souris quelque part dans la fenêtre, puis cliquez sur Exécuter SQL

WHEN : la rencontre entre la valeur d'un champ et un critère

Vous pouvez utiliser une instruction conditionnelle WHEN pour affiner la sélection des données. Examinez le tableau suivant :

USE Exercise1 ;
GO 
 
 
CREATE TABLE Persons (FirstName nvarchar(20), LastName nvarchar(20), GenderID int); 
GO 
 
 
INSERT INTO Persons VALUES(N'Gertrude', N'Monay', 2), 
                          (N'Horace ', N'Taylor',1), 
                          (N'Patricia ', N'Katts', 2), 
                          (N'Tiernan ', N'Michael ',3), 
                          (N'Paul ', N'Yamo ',1), 
                          (N'Mahty ', N'Shaoul ',3), 
                          (N'Helene ', N'Mukoko ', 2); 
GO

Imaginez que vous souhaitez sélectionner la colonne GenderID :

Conditional Statements

Si une colonne a des valeurs qui sont difficiles à identifier, vous pouvez utiliser une instruction conditionnelle CASE pour personnaliser les résultats. Voici un exemple :

SELECT FirstName, LastName, Gender = 
       CASE GenderID 
       WHEN 1 THEN N'Male' 
       WHEN 2 THEN N'Female'
       ELSE N'Unknown' 
END
FROM Persons

Conditional Statements

WHERE est la condition

 

Introduction

Lors de l'analyse des données ou si vous créez une requête à l'aide de la fenêtre de la table, vous pouvez taper une expression qui utilise un ou plusieurs opérateurs logiques que nous avons examinés dans la Leçon 6. Voici un exemple d'une expression

>'12/31/1993'

Cela signifie que les dates qui se produisent après 1993 seraient retenues.

Si vous écrivez votre instruction SELECT, pour formuler une condition, vous utilisez le mot-clé WHERE avec une formule de base comme suit :

SELECT What FROM WhatObject WHERE Expression ;

Les expressions utilisées dans des conditions sont créées en utilisant algébrique, logique et opérateurs de chaîne. Le facteur d'expression est appelé un critère. Bien qu'un groupe d'expressions, rendant pluriel est appelé critères, le critère de mot est parfois utilisé pour une expression singulière également. L'expression est rédigée à l'aide de la formule :

ColumnName = Value

Le facteur ColumnName doit être une colonne d'une table existante. Il est suivi par l'opérateur d'affectation. La valeur de facteur est la valeur qui établirait la condition. Si la valeur est un mot ou un groupe de mots (également appelé une chaîne), vous devez l'inclure entre guillemets. S'il s'agit d'un numéro, vous pouvez taper sa valeur numérique.

Voici un exemple d'une base de données des étudiants, d'une table nommée Students, pour obtenir une liste des étudiantes :

SELECT DateOfBirth, LastName, FirstName, 
       Gender, State, ParentsNames 
FROM Students 
WHERE Gender = N'Female '; 
GO

Cela donnerait :

WHERE

Dans une instruction WHERE, vous pouvez également utiliser l'expression ORDER BY pour trier une liste d'enregistrements basés sur une colonne de votre choix. Voici un exemple :

SELECT DateOfBirth, LastName, FirstName, 
       Gender, State, ParentsNames 
FROM Students 
WHERE State = N'MD' 
ORDER BY LastName ; 
GO

Cela donnerait :

Practical LearningEtude pratique : Utilisation de WHERE

  1. Pour voir uniquement les propriétés d'une liste dans le DC, dans la section SQL, modifiez l'instruction comme suit :
    SELECT PropertyNumber AS [Prop #],
           Adresse, 
           City, 
           State, 
           ZIPCode AS [Location], 
           YearBuilt AS [Year Built], 
           PropertyType AS [Type], 
           MarketValue AS [Value] 
    FROM Properties
    WHERE ZIPCode < 20500
  2. Dans le menu principal, cliquez sur Concepteur de requêtes-> Exécuter SQL
  3. Pour obtenir uniquement la liste des propriétés en Virginie, dans la section SQL, modifiez l'instruction comme suit :
    SELECT PropertyNumber AS [Prop #], 
           Adress, 
           City, 
           State, 
           ZIPCode AS [Location], 
           YearBuilt AS [Year Built], 
           PropertyType AS [Type], 
           MarketValue AS [Value] 
    FROM Properties
    WHERE State = N'va '
  4. Dans le menu principal, cliquez sur Query Designer-> Execute SQL
  5. Pour obtenir uniquement une liste des propriétés les plus récentes construites en 2000 ou après, dans la section SQL, modifiez l'instruction comme suit :
    SELECT Adress , 
           City, 
           State, 
           YearBuilt AS [Year Built], 
           PropertyType AS [Type], 
           MarketValue AS [Value] 
    FROM Properties
    WHERE YearBuilt > = 2000
  6. Dans le menu principal, cliquez sur Query Designer->Execute SQL

    WHERE
  7. Pour obtenir une liste des propriétés dans le Maryland organisées par des ZIP Codes, modifiez l'instruction comme suit :
    SELECT PropertyType AS Type, 
           YearBuilt AS [Year Built], 
           City, 
           ZIPCode,
           Bedrooms AS Beds,
           Bathrooms AS Baths,
           MarketValue AS Value
    FROM Properties
    WHERE State = N'md' 
    ORDER BY ZIPCode
  8. Dans le menu principal, cliquez sur Query Designer-> Execute SQL
 
 
 
 

Masquer une Colonne

Jusqu'ici, nous étions dans nos instructions SELECT, nous sélectionnons les colonnes que nous trouvons nécessaires à l'affichage. Lors de la formulation d'une telle déclaration, vous pouvez appliquer une condition à une colonne sans inclusion de colonne dans le résultat. Par exemple, considérez la requête ci-dessus. Elle est utilisée pour afficher une liste d'étudiantes. Puisque nous savons que le résultat afficherait uniquement les filles, il devient redondant d'inclure la colonne de sexe dans l'instruction. Dans ce cas, vous pouvez masquer cette colonne dans le résultat.

Pour masquer une colonne d'une requête, omettez cette colonne dans l'instruction SELECT, mais impliquez-la dans la condition WHERE. Voici un exemple :

SELECT DateOfBirth, LastName, 
       FirstName, State, ParentsNames 
FROM Students 
WHERE Gender = N'Female '; 
GO

Cela donnerait :

WHERE

Notez que l'instruction SELECT ne dispose pas de la colonne de Sexe et la requête obtenue n'affiche pas la colonne de Sexe.

Practical LearningEtude pratique : Not : Présentation d'une Colonne

  1. Pour voir uniquement une liste des propriétés dans le Maryland, modifiez l'instruction comme suit :
    SELECT PropertyType AS type, 
           YearBuilt AS [Year Built], 
           City, 
           Bedrooms AS Beds, 
           Bathrooms AS Baths, 
           MarketValue AS Value WHERE état = N'md '
  2. Dans le menu principal, cliquez sur Query Designer-> Execute SQL

Inversion d'une Condition

Dans la leçon 5, nous avons vu que vous pourriez utiliser l'opérateur NOT pour annuler la validité d'une expression booléenne. Examinez l'instruction suivante :

SELECT DateOfBirth, LastName, FirstName, 
       State, ParentsNames 
FROM Students 
WHERE Gender = N'Female '; 
GO

Lorsque cette instruction est exécutée, une liste des étudiantes s'afficherait. Au lieu des filles, pour obtenir une liste des étudiants masculins, vous pouvez inverser cette condition. Pour le faire, tapez NOT avant la condition. Cela serait effectué comme suit :

SELECT DateOfBirth, LastName, FirstName, 
       Gender, State, ParentsNames 
FROM Students 
WHERE NOT Gender = N'Female '; 
GO

Pour faciliter la lecture de cette condition, vous devez inclure l'expression positive entre parenthèses. Cela serait effectué comme suit :

SELECT DateOfBirth, LastName, FirstName, 
       Gender, State, ParentsNames 
FROM Students
WHERE State IS NOT NULL ; 
GO

Cela indique clairement que l'expression qui est dans les parenthèses est annulée. De la même façon, vous pouvez utiliser IS NOT NULL pour trouver les enregistrements qui ne sont pas NULL. Par exemple, vous pouvez créer uniquement une liste des enregistrements qui n'ont pas une valeur NULL dans une colonne. Voici un exemple :

SELECT DateOfBirth, LastName, FirstName,
       State, ParentsNames 
FROM   Students 
WHERE  State IS NOT NULL ;
GO

Lorsque cette instruction est exécutée, la table affichera uniquement les enregistrements qui incluent un état pour chaque étudiant.

Practical LearningEtude pratique : Inversion d'une valeur

  1. Pour voir uniquement une liste des propriétés qui ont été affectées à un certain nombre de propriétés, modifiez l'instruction comme suit :
    SELECT PropertyNumber AS [Prop #], 
           PropertyType AS Type 
           YearBuilt AS [Year Built], 
           City, 
           State,
           ZIPCode AS [ZIP Code], 
           Bedrooms AS Beds,
           Bathrooms AS Baths,
           MarketValue AS Value 
    FROM Properties
    WHERE PropertyNumber IS NOT NULL
  2. Dans le menu principal, cliquez sur Query Designer-> Execute SQL

Création d'un Tableau

Examinez la table Employees suivante :

CREATE DATABASE Corporation 
GO
 
USE Corporation ; 
GO 
CREATE TABLE Employees 
(
       EmployeeNumber int unique not null
       FirstName nvarchar (20) 
       LastName nvarchar (20) not null,
       Department nvarchar (50) null
       EmploymentStatus nvarchar (30)
       HourlySalary money 
); 
GO 
INSERT INTO Employees 
VALUES(84628, N'Anthony', N'Holms', N'Corporate', N'Full Time', 24.72), 
      (40574, N'William', N'Wilson ', N'Information Technology', N'Full Time', 21.18), 
      (27462, N'Peter', N'Swanson ', N'Corporate ', N'Full Time', 22.84), 
      (52835, N'Edward', N'Johansen', N'Information Technology', N'Consultant', 15.50), 
      (93075, N'Sharon', N'Edson', N'Accounting', N'Full Time', 28.74), 
      (82718, N'Yanuh', N'Hadhah', N'Corporate', N'Full Time', 14.86), 
      (29174, N'Hamin', N'Souleyman', N'Public Relations', N'Consultant', 18.76); 
GO

Vous pouvez utiliser tout ou partie des enregistrements d'une table existante pour créer une table contenant les enregistrements. Pour le faire, vous utilisez la formule suivante :

SELECT Columns INTO NewTableName FROM ExistingTable [WHERE Condition]

Pour utiliser toutes les colonnes et tous les enregistrements, démarrez avec l'opérateur SELECT, suivi par *, suivi de INTO, suivi d'un nom pour la table que vous voulez créer, suivi de FROM et le nom de la table d'origine contenant les enregistrements. Voici un exemple :

USE Corporation ; 
GO 
SELECT * INTO CompanyRecipients 
FROM Employees ; 
GO

Au lieu d'utiliser toutes les colonnes, vous pouvez spécifier seulement les colonnes souhaitées après le mot-clé SELECT. Voici un exemple :

USE Corporation ; 
GO 
SELECT EmployeeNumber, LastName, FirstNfame, EmploymentStatus, 
INTO Salaried FROM Employees ; 
GO

Au lieu d'utiliser tous les enregistrements, vous pouvez utiliser une condition par laquelle les enregistrements seraient sélectionnés et ajoutés à la nouvelle table que vous créez. Pour définir la condition, vous pouvez créer une instruction WHERE comme la dernière dans l'expression entière. Voici un exemple :

USE Corporation ; 
GO 
SELECT * 
INTO FullTimeEmployees 
FROM Employees 
WHERE EmploymentStatus = N'Full Time' ; 
GO

Opérateur de modèle : LIKE

 

Introduction

La plupart ou tous les critères que nous avons spécifiés avec le mot-clé WHERE devaient correspondre exactement au critère spécifié. Dans certains cas, vous ne vous souvenez peut-être pas de la valeur exacte des enregistrements, mais vous souhaitez spécifier un type quelconque de rapprochement. Pour ce faire, vous utilisez l'opérateur LIKE.

Si vous créez visuellement l'instruction dans la section critères, dans la case correspondant au filtre pour la colonne sur laquelle la condition serait appliquée, tapez la condition LIKE.

Dans Transact-SQL, l'opérateur LIKE est utilisé dans une formule comme suit :

Expression LIKE pattern

Le facteur d'expression est l'expression qui est évaluée. Ce doit être une expression claire et valide.

Le facteur de motif peut être une valeur qui se trouve dans l'expression. Par exemple, il peut être le même type de valeur utilisée dans une instruction WHERE. Dans ce cas, l'opérateur d'égalité serait identique comme LIKE. Par exemple

SELECT DateOfBirth, LastName, FirstName, 
       Gender, State, ParentsNames 
       FROM Students 
       WHERE State = N'VA' ; 
GO

équivaut à

SELECT DateOfBirth, LastName, FirstName, 
       Gender, State, ParentsNames 
       FROM Students 
       WHERE State LIKE N'VA' ; 
GO

L'idée d'utiliser un opérateur LIKE est de donner une approximation du type de résultat souhaité. Il y a des caractères génériques à utiliser avec l'opérateur LIKE.

LIKE tout caractère %

Si vous souhaitez faire correspondre n'importe quel caractère, dans n'importe quelle combinaison, pour n'importe quelle longueur, utilisez le caractère %. Si vous faites précéder par une lettre, comme dans S % , la condition consisterait à trouver toute chaîne qui commence par S. Imaginez que vous souhaitez obtenir une liste des élèves dont le nom de famille commence par S. Vous devez taper la condition comme LIKE % '. Pour le faire visuellement dans les critères de section, sous la colonne filtre, tapez la condition. Voici un exemple :

LIKE

L'instruction SQL est cette requête :

SELECT FirstName, LastName, Gender, SPHome 
FROM Students 
WHERE LastName LIKE N'S%'

Cela donnerait :

LIKE

Vous pouvez inverser cette condition en la précèdent avec NOT. Voici un exemple :

SELECT FirstName, LastName, Gender, SPHome 
FROM Students 
WHERE NOT (LastName LIKE N'S %')

Cela donnerait :

LIKE

Cette fois, le résultat est la liste des élèves dont le nom de famille ne commence pas avec S.

Lorsque vous faites précéder le caractère % avec une lettre, seule cette lettre serait considérée. Vous pouvez également spécifier un groupe de caractères qui précéderaient le symbole %. Par exemple, si vous avez quelques prénoms qui commencent par CH dans une liste, mais vous ne vous rappelez pas la fin du nom que vous recherchez, pour créer la liste, vous pouvez spécifier que le prénom commencerait avec CH et se termine avec n'importe quoi. Dans ce cas, vous utiliseriez CH % comme suit :

SELECT FirstName, LastName, Gender, SPHome 
FROM Students 
WHERE LastName LIKE  N'CH %'

Cela donnerait :

LIKE

Au lieu de terminer une lettre ou un groupe de lettres avec %, vous pouvez commencer l'instruction LIKE avec %. Un exemple serait LIKE « %son». Dans ce cas, toutes les chaînes qui se terminent par son, tels que Johnson ou Colson, seraient considérées.

Si vous ne vous rappelez ni du début ni de la fin d'une chaîne que vous voulez rechercher, mais vous connaissez une sous-chaîne qui est probablement incluse dans le type de chaîne que vous cherchez, vous pouvez le précéder avec % et y mettre fin avec %. Un exemple serait LIKE "% an %". Dans ce cas, toutes les chaînes qui incluent "an" n'importe où seraient considérées comme à l'intérieur. Voici un exemple :

SELECT FirstName, LastName, Gender, SPHome 
FROM Students 
WHERE LastName LIKE '% an %'

Cela donnerait :

LIKE

Comme les autres instructions SQL, vous pouvez également inverser celle-ci à l'aide de l'opérateur NOT.

LIKE une plage de caractères [ ]

Le caractère % est utilisé pour faire précéder ou réussir un caractère spécifique ou un groupe de caractères, c'est-à-dire n'importe quel caractère. Si vous souhaitez examiner uniquement une plage de caractères de l'alphabet, vous pouvez inclure la plage entre crochets. Pour le faire, tapez [, suivi du caractère le plus bas de la plage, suivi par -, suivi du caractère le plus élevé de la plage, suivi de ]. Par exemple, pour examiner la gamme des lettres entre p et s, vous utiliserez ' [p-s] '. Ensuite, à gauche, à droite, ou aux deux côtés de cette expression, tapez % pour spécifier si vous souhaitez inclure n'importe quel caractère ou une combinaison de caractères avant ou après l'expression. Voici un exemple :

SELECT FirstName, LastName, Gender, SPHome 
FROM Students 
WHERE LastName LIKE N'%[p-s]' 

Dans ce cas, le résultat serait une liste des étudiants dont les noms se terminent avec une lettre entre p et s. Cela donnerait :

LIKE

Notez que la liste inclut uniquement les étudiants dont le nom de famille se termine par une lettre entre p et s.

NOT Fin avec une Plage de Caractères

Par opposition à la considération des caractères qui se trouvent dans une plage spécifique, pour spécifier un caractère ou une plage de caractères qui ne doivent pas être pris en considération, utilisez le caratère ^ à l'intérieur des crochets, mais avant la plage souhaitée. Voici un exemple :

SELECT FirstName, LastName, Gender, SPHome 
FROM Students 
WHERE (LastName LIKE'%[^ p-r]')

Le résultat serait une liste d'étudiants dont la dernière finit avec une lettre autre que p, q, r ou s.

Une fois de plus, n'oubliez pas que vous pouvez inverser cette expression en la précèdant avec NOT. Notez que si vous annulez une expression qui inclue ^, vous obtiendrez le même résultat que n'utilisant pas ^.

 
 
       
 

Précédant Copyright © 2010 Yevol Suivant