Delen via


Les 1: Databaseobjecten maken en er query's op uitvoeren

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAnalytics Platform System (PDW)SQL-database in Microsoft Fabric Preview

Note

Het leertraject Aan de slag met query's uitvoeren met Transact-SQL biedt uitgebreidere inhoud, samen met praktische voorbeelden.

In deze les ziet u hoe u een database maakt, een tabel maakt in de database en vervolgens de gegevens in de tabel opent en wijzigt. Omdat deze les een inleiding tot het gebruik van Transact-SQL is, worden de vele opties die beschikbaar zijn voor deze instructies niet gebruikt of beschreven.

Transact-SQL instructies kunnen op de volgende manieren naar de database-engine worden geschreven en ingediend:

  • Met behulp van SQL Server Management Studio. In deze zelfstudie wordt ervan uitgegaan dat u Management Studio gebruikt, maar u kunt ook Management Studio Express gebruiken. Dit is gratis te downloaden via het Microsoft Downloadcentrum.

  • Gebruik het hulpprogramma sqlcmd .

  • Door verbinding te maken vanuit een toepassing die u maakt.

De code wordt op dezelfde manier uitgevoerd op de database-engine en met dezelfde machtigingen, ongeacht hoe u de code-instructies verzendt.

Als u Transact-SQL instructies wilt uitvoeren in Management Studio, opent u Management Studio en maakt u verbinding met een exemplaar van de SQL Server Database Engine.

Prerequisites

U hebt SQL Server Management Studio en toegang tot een SQL Server-exemplaar nodig om deze zelfstudie te voltooien.

Als u geen SQL Server-exemplaar hebt, maakt u er een. Als u er een wilt maken, selecteert u uw platform via de volgende koppelingen. Als u SQL-verificatie kiest, gebruikt u uw SQL Server-aanmeldingsreferenties.

Een database maken

Net als bij veel Transact-SQL instructies heeft de instructie CREATE DATABASE een vereiste parameter: de naam van de database. CREATE DATABASE bevat ook veel optionele parameters, zoals de schijflocatie waar u de databasebestanden wilt plaatsen. Wanneer u zonder de optionele parameters uitvoert CREATE DATABASE , gebruikt SQL Server standaardwaarden voor veel van deze parameters.

  1. Typ in een queryeditorvenster, maar voer de volgende code niet uit:

    CREATE DATABASE TestData
    GO
    
  2. Gebruik de aanwijzer om de woorden CREATE DATABASEte selecteren en druk op F1. Het CREATE DATABASE artikel moet worden geopend. U kunt deze techniek gebruiken om de volledige syntaxis te vinden voor CREATE DATABASE en voor de andere instructies die in deze zelfstudie worden gebruikt.

  3. Druk in De Query-editor op F5 om de instructie uit te voeren en een database met de naam TestDatate maken.

Wanneer u een database maakt, maakt SQL Server een kopie van de model database en hernoemt deze naar de databasenaam. Deze bewerking duurt slechts enkele seconden, tenzij u een grote initiële grootte van de database opgeeft als een optionele parameter.

Note

Het trefwoord GO scheidt instructies wanneer meer dan één instructie in één batch wordt verzonden. GO is optioneel wanneer de batch slechts één instructie bevat.

Een tabel maken

van toepassing op:SQL ServerAzure SQL DatabaseAzure Synapse AnalyticsAnalytics Platform System (PDW)

Als u een tabel wilt maken, moet u een naam opgeven voor de tabel en de namen en gegevenstypen van elke kolom in de tabel. Het is ook een goed idee om aan te geven of null-waarden zijn toegestaan in elke kolom. Als u een tabel wilt maken, moet u over de CREATE TABLE machtiging beschikken en over de ALTER SCHEMA machtiging voor het schema dat de tabel bevat. De db_ddladmin vaste databaserol heeft deze machtigingen.

De meeste tabellen hebben een primaire sleutel, samengesteld uit een of meer kolommen van de tabel. Een primaire sleutel is altijd uniek. De database-engine dwingt de beperking af dat geen primaire-sleutelwaarde herhaald kan worden in de tabel.

Zie Gegevenstypen voor een lijst met gegevenstypen en koppelingen voor een beschrijving van elk type.

Note

De database-engine kan worden geïnstalleerd met hoofdlettergevoeligheid of zonder hoofdlettergevoeligheid. Als de database-engine is geïnstalleerd als hoofdlettergevoelig, moeten objectnamen altijd hetzelfde hoofdlettergebruik hebben. Een tabel met de naam OrderData is bijvoorbeeld een andere tabel dan een tabel met de naam ORDERDATA. Als de database-engine is geïnstalleerd als hoofdletterongevoelig, worden deze twee tabelnamen gezien als dezelfde tabel en kan die naam slechts één keer worden gebruikt.

De queryeditorverbinding overschakelen naar de TestData-database

Typ en voer in een queryeditorvenster de volgende code in om de verbinding met de TestData database te wijzigen.

USE TestData
GO

De tabel maken

Typ en voer in een queryeditorvenster de volgende code uit om een tabel met de naam Productste maken. De kolommen in de tabel hebben de naam ProductID, ProductNameen PriceProductDescription. De ProductID kolom is de primaire sleutel van de tabel. int, varchar(25), moneyen varchar(max) zijn alle gegevenstypen. Alleen de Price en ProductionDescription kolommen kunnen geen gegevens bevatten wanneer een rij wordt ingevoegd of gewijzigd. Deze instructie bevat een optioneel element (dbo.) dat een schema wordt genoemd. Het schema is het databaseobject dat eigenaar is van de tabel. Als u een beheerder bent, dbo is dit het standaardschema. dbo staat voor database-eigenaar.

CREATE TABLE dbo.Products
    (ProductID int PRIMARY KEY NOT NULL,
    ProductName varchar(25) NOT NULL,
    Price money NULL,
    ProductDescription varchar(max) NULL)
GO

Gegevens invoegen en bijwerken in een tabel

Nu u de Products tabel hebt gemaakt, bent u klaar om gegevens in de tabel in te voegen met behulp van de INSERT instructie. Nadat de gegevens zijn ingevoegd, wijzigt u de inhoud van een rij met behulp van een UPDATE instructie. U gebruikt de WHERE component van de UPDATE instructie om de update te beperken tot één rij. De vier instructies voeren de volgende gegevens in.

ProductID ProductName Price ProductDescription
1 Clamp 12.48 Workbench klem
50 Schroevendraaier 3.17 Platte kop
75 Bandenbalk Gereedschap voor het wijzigen van banden.
3000 3 mm haakje 0.52

De basissyntaxis is: INSERT, tabelnaam, kolomlijst VALUESen vervolgens een lijst met de waarden die moeten worden ingevoegd. De twee afbreekstreepjes voor een regel geven aan dat de regel een opmerking is en dat de tekst wordt genegeerd door de compiler. In dit geval beschrijft de opmerking een toegestane variatie van de syntaxis.

Gegevens invoegen in een tabel

  1. Voer de volgende instructie uit om een rij in te voegen in de Products tabel die in de vorige taak is gemaakt.

    -- Standard syntax
    INSERT dbo.Products (ProductID, ProductName, Price, ProductDescription)
        VALUES (1, 'Clamp', 12.48, 'Workbench clamp')
    GO
    

    Als de invoegbewerking is voltooid, gaat u verder met de volgende stap.

    Als de invoegbewerking mislukt, kan dit komen doordat de Product tabel al een rij bevat met die product-id. Als u wilt doorgaan, verwijdert u alle rijen in de tabel en herhaalt u de vorige stap. MET TRUNCATE TABLE worden alle rijen in de tabel verwijderd.

    Voer de volgende opdracht uit om alle rijen in de tabel te verwijderen:

    TRUNCATE TABLE TestData.dbo.Products;
    GO
    

    Nadat u de tabel hebt afgekapt, herhaalt u de INSERT opdracht in deze stap.

  2. In de volgende instructie ziet u hoe u de volgorde kunt wijzigen waarin de parameters worden opgegeven door de plaatsing van en ProductIDProductName in zowel de lijst met velden (tussen haakjes) als in de lijst met waarden te wijzigen.

    -- Changing the order of the columns
    INSERT dbo.Products (ProductName, ProductID, Price, ProductDescription)
        VALUES ('Screwdriver', 50, 3.17, 'Flat head')
    GO
    
  3. De volgende instructie laat zien dat de namen van de kolommen optioneel zijn, zolang de waarden in de juiste volgorde worden vermeld. Deze syntaxis is gebruikelijk, maar wordt niet aanbevolen omdat het voor anderen moeilijker is om uw code te begrijpen. NULL is opgegeven voor de Price kolom omdat de prijs voor dit product nog niet bekend is.

    -- Skipping the column list, but keeping the values in order
    INSERT dbo.Products
        VALUES (75, 'Tire Bar', NULL, 'Tool for changing tires.')
    GO
    
  4. De schemanaam is optioneel zolang u een tabel in uw standaardschema opent en wijzigt. Omdat de ProductDescription kolom null-waarden toestaat en er geen waarde wordt opgegeven, kunnen de ProductDescription kolomnaam en -waarde volledig uit de instructie worden verwijderd.

    -- Dropping the optional dbo and dropping the ProductDescription column
    INSERT Products (ProductID, ProductName, Price)
        VALUES (3000, '3 mm Bracket', 0.52)
    GO
    

De tabel met producten bijwerken

Typ en voer de volgende instructie UPDATE uit om het tweede product ProductName te wijzigen van Screwdriver naar Flat Head Screwdriver.

UPDATE dbo.Products
    SET ProductName = 'Flat Head Screwdriver'
    WHERE ProductID = 50
GO

Gegevens uit een tabel lezen

Gebruik de SELECT instructie om de gegevens in een tabel te lezen. De SELECT instructie is een van de belangrijkste Transact-SQL instructies en er zijn veel variaties in de syntaxis. Voor deze zelfstudie werkt u met vijf basisversies.

De gegevens in een tabel lezen

  1. Typ en voer de volgende instructies uit om de gegevens in de Products tabel te lezen.

    -- The basic syntax for reading data from a single table
    SELECT ProductID, ProductName, Price, ProductDescription
        FROM dbo.Products
    GO
    
  2. U kunt een sterretje (*) gebruiken om alle kolommen in de tabel te selecteren. Het sterretje is bedoeld voor ad-hocquery's. Geef in permanente code de kolomlijst op, zodat de instructie de voorspelde kolommen retourneert, zelfs als er later een nieuwe kolom aan de tabel wordt toegevoegd.

    -- Returns all columns in the table
    -- Does not use the optional schema, dbo
    SELECT * FROM Products
    GO
    
  3. U kunt kolommen weglaten die u niet wilt retourneren. De kolommen worden geretourneerd in de volgorde waarin ze worden weergegeven.

    -- Returns only two of the columns from the table
    SELECT ProductName, Price
        FROM dbo.Products
    GO
    
  4. Gebruik een WHERE component om de rijen te beperken die worden geretourneerd aan de gebruiker.

    -- Returns only two of the records in the table
    SELECT ProductID, ProductName, Price, ProductDescription
        FROM dbo.Products
        WHERE ProductID < 60
    GO
    
  5. U kunt met de waarden in de kolommen werken terwijl ze worden geretourneerd. In het volgende voorbeeld wordt een wiskundige bewerking uitgevoerd op de Price kolom. Kolommen die op deze manier zijn gewijzigd, hebben geen naam, tenzij u er een opgeeft met behulp van het AS trefwoord.

    -- Returns ProductName and the Price including a 7% tax
    -- Provides the name CustomerPays for the calculated column
    SELECT ProductName, Price * 1.07 AS CustomerPays
        FROM dbo.Products
    GO
    

Nuttige functies in een SELECT-instructie

Zie de volgende artikelen voor informatie over bepaalde functies die u kunt gebruiken om met gegevens in SELECT instructies te werken:

Weergaven en opgeslagen procedures maken

Een weergave is een opgeslagen instructie en een opgeslagen SELECT procedure is een of meer Transact-SQL instructies die als batch worden uitgevoerd.

Weergaven worden opgevraagd als tabellen en accepteren geen parameters. Opgeslagen procedures zijn complexer dan weergaven. Opgeslagen procedures kunnen zowel invoer- als uitvoerparameters bevatten en kunnen instructies bevatten om de stroom van de code te beheren, zoals IF en WHILE instructies. Het is een goede programmeerpraktijk om opgeslagen procedures te gebruiken voor alle terugkerende acties in de database.

In dit voorbeeld gebruikt CREATE u VIEW om een weergave te maken die slechts twee kolommen in de Products tabel selecteert. Vervolgens gebruikt CREATE PROCEDURE u om een opgeslagen procedure te maken die een prijsparameter accepteert en alleen producten retourneert die lager zijn dan de opgegeven parameterwaarde.

Een weergave maken

Voer de volgende instructie uit om een weergave te maken die een select-instructie uitvoert en retourneert de namen en prijzen van onze producten aan de gebruiker.

CREATE VIEW vw_Names
   AS
   SELECT ProductName, Price FROM Products;
GO

De weergave testen

Weergaven worden net als tabellen behandeld. Gebruik een SELECT statement om toegang te krijgen tot een weergave.

SELECT * FROM vw_Names;
GO

Een opgeslagen procedure maken

Met de volgende instructie maakt u een opgeslagen procedurenaam pr_Names, accepteert u een invoerparameter met de naam @VarPrice van het gegevenstype money. Opgeslagen procedure drukt de instructie Products less than af, samengevoegd met de invoerparameter die is omgezet van het money gegevenstype naar een varchar(10) tekengegevenstype. Vervolgens voert de procedure een SELECT instructie uit in de weergave, waarbij de invoerparameter wordt doorgegeven als onderdeel van de WHERE component. Hiermee worden alle producten geretourneerd die minder kosten dan de waarde van de invoerparameter.

CREATE PROCEDURE pr_Names @VarPrice money
   AS
   BEGIN
      -- The print statement returns text to the user
      PRINT 'Products less than ' + CAST(@VarPrice AS varchar(10));
      -- A second statement starts here
      SELECT ProductName, Price FROM vw_Names
            WHERE Price < @VarPrice;
   END
GO

De opgeslagen procedure testen

Als u de opgeslagen procedure wilt testen, typt en voert u de volgende instructie uit. De procedure moet de namen retourneren van de twee producten die in de Products tabel in les 1 zijn ingevoerd met een prijs die kleiner is dan 10.00.

EXECUTE pr_Names 10.00;
GO