Megosztás a következőn keresztül:


1. lecke: Adatbázis-objektumok létrehozása és lekérdezése

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példányElemzési platformrendszer (PDW)SQL-adatbázis a Microsoft Fabricben

Note

A Transact-SQL lekérdezésének első lépéseit ismertető képzési terv részletesebb tartalmat és gyakorlati példákat tartalmaz.

Ez a lecke bemutatja, hogyan hozhat létre adatbázist, hogyan hozhat létre egy táblát az adatbázisban, majd hogyan érheti el és módosíthatja a táblában lévő adatokat. Mivel ez a lecke a Transact-SQL használatának bemutatása, nem használja vagy írja le az utasításokhoz elérhető számos lehetőséget.

Transact-SQL utasítások az alábbi módokon írhatók és küldhetők el az adatbázismotornak:

  • Az SQL Server Management Studio használatával. Ez az oktatóanyag feltételezi, hogy a Management Studiót használja, de használhatja a Management Studio Expresst is, amely ingyenesen letölthető a Microsoft letöltőközpontból.

  • Az sqlcmd segédprogram használatával.

  • A létrehozott alkalmazásból való csatlakozással.

A kód ugyanúgy és ugyanazokkal az engedélyekkel fut az adatbázismotoron, függetlenül attól, hogy hogyan küldi el a kódkivonatokat.

Ha Transact-SQL utasításokat szeretne futtatni a Management Studióban, nyissa meg a Management Studiót, és csatlakozzon az SQL Server adatbázismotor egy példányához.

Prerequisites

Az oktatóanyag elvégzéséhez szüksége lesz az SQL Server Management Studióra, és hozzá kell férnie egy SQL Server-példányhoz.

Ha nincs SQL Server-példánya, hozzon létre egyet. Ha létre szeretne hozni egyet, válassza ki a platformot az alábbi hivatkozások közül. Ha az SQL-hitelesítést választja, használja az SQL Server bejelentkezési hitelesítő adatait.

Adatbázis létrehozása

Sok Transact-SQL utasításhoz hasonlóan a CREATE DATABASE utasításnak is van egy kötelező paramétere: az adatbázis neve. CREATE DATABASE Emellett számos választható paramétert is tartalmaz, például azt a lemezhelyet, ahová az adatbázisfájlokat el szeretné helyezni. Ha az opcionális paraméterek nélkül hajtja végre a végrehajtást CREATE DATABASE , az SQL Server számos paraméterhez alapértelmezett értékeket használ.

  1. Írja be a Lekérdezésszerkesztő ablakba, de ne hajtsa végre a következő kódot:

    CREATE DATABASE TestData
    GO
    
  2. Az egérmutatóval jelölje ki a szavakat CREATE DATABASE, majd nyomja le az F1 billentyűt. A CREATE DATABASE cikknek meg kell nyílnia. Ezzel a technikával megtalálhatja a CREATE DATABASE teljes szintaxisát és az oktatóanyagban használt többi utasítás szintaxisát.

  3. A Lekérdezésszerkesztőben nyomja le az F5 billentyűt az utasítás végrehajtásához, és hozzon létre egy adatbázist.TestData

Adatbázis létrehozásakor az SQL Server másolatot készít az model adatbázisról, és átnevezi a másolatot az adatbázis nevére. Ez a művelet csak néhány másodpercet vehet igénybe, hacsak nem adja meg az adatbázis nagy kezdeti méretét opcionális paraméterként.

Note

A kulcsszó GO elválasztja az utasításokat, ha egyetlen kötegben több utasítás is elküldve van. GO nem kötelező, ha a köteg csak egy utasítást tartalmaz.

Tábla létrehozása

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure Synapse AnalyticsAnalytics Platform System (PDW)

Tábla létrehozásához meg kell adnia a tábla nevét, valamint a tábla egyes oszlopainak nevét és adattípusait. Érdemes azt is jelezni, hogy a null értékek engedélyezettek-e az egyes oszlopokban. Tábla létrehozásához rendelkeznie kell a CREATE TABLE táblát tartalmazó sémához szükséges engedéllyel és ALTER SCHEMA engedéllyel. A db_ddladmin rögzített adatbázis-szerepkör rendelkezik ezekkel az engedélyekkel.

A legtöbb tábla rendelkezik egy elsődleges kulccsal, amely a tábla egy vagy több oszlopából áll. Az elsődleges kulcs mindig egyedi. Az adatbázismotor kikényszeríti azt a korlátozást, hogy az elsődleges kulcsértékek ne ismétlődhetnek meg a táblában.

Az egyes adattípusok és hivatkozások listáját az Adattípusok című témakörben találja.

Note

Az adatbázismotor telepíthető kis- és nagybetűket megkülönböztető vagy nem megkülönböztető módon. Ha az adatbázismotort kis- és nagybetűérzékenyen telepítették, akkor az objektumneveknek mindig ugyanúgy nagy- és kisbetűvel kell lenniük. Az OrderData nevű tábla például egy ORDERDATA nevű táblától eltérő tábla. Ha az adatbázismotor kis- és nagybetűk érzékenysége nélkül van telepítve, akkor a két táblanév ugyanannak a táblának minősül, és ez a név csak egyszer használható.

A Lekérdezésszerkesztő kapcsolatának váltása a TestData-adatbázisra

A Lekérdezésszerkesztő ablakban írja be és hajtsa végre a következő kódot az adatbázishoz való csatlakozás módosításához TestData .

USE TestData
GO

A tábla létrehozása

A Lekérdezésszerkesztő ablakban írja be és hajtsa végre a következő kódot egy tábla létrehozásához Products. A tábla oszlopainak neve ProductID, ProductNameés PriceProductDescription. Az ProductID oszlop a tábla elsődleges kulcsa. int, varchar(25), moneyés varchar(max) minden adattípus. Csak a Price és ProductionDescription oszlopok nem tartalmazhatnak adatokat, amikor sort beszúrunk vagy módosítunk. Ez az utasítás egy séma nevű választható elemet (dbo.) tartalmaz. A séma a táblázatot birtokló adatbázis-objektum. Ha Ön rendszergazda, dbo az alapértelmezett séma. dbo az adatbázis-tulajdonost jelöli.

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

Adatok beszúrása és frissítése egy táblában

Most, hogy létrehozta a Products táblát, készen áll arra, hogy adatokat szúrjon be a táblába az INSERT utasítás használatával. Az adatok beszúrása után egy utasítással UPDATE módosíthatja a sor tartalmát. WHERE Az utasítás záradékával UPDATE egyetlen sorra korlátozhatja a frissítést. A négy utasítás a következő adatokat adja meg.

ProductID ProductName Price ProductDescription
1 Clamp 12.48 Workbench-szorító
50 Csavarhúzó 3.17 Lapos fej
75 Gumiabroncs-sáv Szerszám a gumiabroncsok cseréjéhez.
3000 3 mm-es konzol 0.52

Az alapszintaxis a következő: INSERT, táblanév, oszloplista, VALUESmajd a beszúrni kívánt értékek listája. A sor előtt lévő két kötőjel azt jelzi, hogy a sor megjegyzés, és a fordító figyelmen kívül hagyja a szöveget. Ebben az esetben a megjegyzés a szintaxis megengedett variációját írja le.

Adatok beszúrása táblázatba

  1. Az alábbi utasítás végrehajtásával szúrjon be egy sort az Products előző feladatban létrehozott táblába.

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

    Ha a beszúrás sikeres, folytassa a következő lépéssel.

    Ha a beszúrás sikertelen, az lehet, hogy a Product táblában már szerepel egy sor az adott termékazonosítóval. A folytatáshoz törölje a táblázat összes sorát, és ismételje meg az előző lépést. TRUNCATE TABLE a tábla összes sorát törli.

    Futtassa a következő parancsot a tábla összes sorának törléséhez:

    TRUNCATE TABLE TestData.dbo.Products;
    GO
    

    A tábla csonkítását követően ismételje meg a INSERT parancsot ebben a lépésben.

  2. Az alábbi utasítás bemutatja, hogyan módosíthatja a paraméterek megadásának sorrendjét úgy, hogy megváltoztatja a ProductID és a ProductName elhelyezését a mezőlistában (zárójelben) és az értéklistában.

    -- Changing the order of the columns
    INSERT dbo.Products (ProductName, ProductID, Price, ProductDescription)
        VALUES ('Screwdriver', 50, 3.17, 'Flat head')
    GO
    
  3. Az alábbi utasítás bemutatja, hogy az oszlopok neve nem kötelező, feltéve, hogy az értékek a megfelelő sorrendben vannak felsorolva. Ez a szintaxis gyakori, de nem ajánlott, mert mások nehezebben tudják értelmezni a kódot. NULL az oszlophoz Price van megadva, mert a termék ára még nem ismert.

    -- Skipping the column list, but keeping the values in order
    INSERT dbo.Products
        VALUES (75, 'Tire Bar', NULL, 'Tool for changing tires.')
    GO
    
  4. A séma neve nem kötelező, ha az alapértelmezett sémában egy táblát ér el és módosít. Mivel az ProductDescription oszlop null értékeket engedélyez, és nincs megadva érték, az ProductDescription oszlop neve és értéke teljesen elvethető az utasításból.

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

A termékek táblázatának frissítése

Írja be és hajtsa végre a következő UPDATE utasítást, hogy módosítsa a második termék ProductName értékét Screwdriver-ról Flat Head Screwdriver-ra.

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

Adatok beolvasása táblázatból

Az utasítással SELECT beolvashatja az adatokat egy táblában. Az SELECT utasítás az egyik legfontosabb Transact-SQL utasítás, és a szintaxisnak számos változata van. Ebben az oktatóanyagban öt alapverzióval fog dolgozni.

Adatok beolvasása táblázatba

  1. Írja be és hajtsa végre a következő utasításokat a táblázat adatainak beolvasásához Products .

    -- The basic syntax for reading data from a single table
    SELECT ProductID, ProductName, Price, ProductDescription
        FROM dbo.Products
    GO
    
  2. Csillag (*) használatával kijelölheti a tábla összes oszlopát. A csillag alkalmi lekérdezésekhez használható. Állandó kódban adja meg az oszloplistát, hogy az utasítás visszaadja az előrejelzett oszlopokat, még akkor is, ha később új oszlopot ad hozzá a táblához.

    -- Returns all columns in the table
    -- Does not use the optional schema, dbo
    SELECT * FROM Products
    GO
    
  3. Kihagyhatja azokat az oszlopokat, amelyeket nem szeretne visszaadni. Az oszlopok a lista szerinti sorrendben jelennek meg.

    -- Returns only two of the columns from the table
    SELECT ProductName, Price
        FROM dbo.Products
    GO
    
  4. WHERE Záradék használatával korlátozhatja a felhasználónak visszaadott sorokat.

    -- Returns only two of the records in the table
    SELECT ProductID, ProductName, Price, ProductDescription
        FROM dbo.Products
        WHERE ProductID < 60
    GO
    
  5. A visszaadott oszlopokban lévő értékekkel dolgozhat. Az alábbi példa egy matematikai műveletet hajt végre az Price oszlopon. Az ily módon módosított oszlopoknak csak akkor van neve, ha a AS kulcsszó használatával ad meg egyet.

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

Hasznos függvények a SELECT utasításban

Az utasításokban szereplő adatokkal használható egyes függvényekről az alábbi cikkekben SELECT talál további információt:

Nézetek és tárolt eljárások létrehozása

A nézet egy tárolt SELECT utasítás, a tárolt eljárás pedig egy vagy több Transact-SQL utasítás, amely kötegként fut.

A nézetek a táblákhoz hasonlóan lekérdezhetők, és nem fogadnak el paramétereket. A tárolt eljárások összetettebbek, mint a nézetek. A tárolt eljárások bemeneti és kimeneti paraméterekkel is rendelkezhetnek, és tartalmazhatnak utasításokat a kód folyamatának szabályozásához, például IF az utasításokhoz.WHILE Jó programozási gyakorlat, ha tárolt eljárásokat használ az adatbázisban található összes ismétlődő művelethez.

Ebben a példában CREATE a VIEW használatával Products olyan nézetet hoz létre, amely csak a tábla két oszlopát választja ki. Ezután létrehoz egy tárolt eljárást, amely elfogadja az árparamétert, CREATE PROCEDURE és csak azokat a termékeket adja vissza, amelyek alacsonyabbak a megadott paraméterértéknél.

Nézet létrehozása

A következő utasítás végrehajtásával létrehoz egy nézetet, amely egy választó utasítást hajt végre, és visszaadja a termékeink nevét és árát a felhasználónak.

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

A nézet tesztelése

A nézetek ugyanúgy vannak kezelve, mint a táblák. Használjon egy SELECT utasítást egy nézet eléréséhez.

SELECT * FROM vw_Names;
GO

Tárolt eljárás létrehozása

Az alábbi utasítás létrehoz egy tárolt eljárásnevetpr_Names, amely egy adattípus @VarPricenevű money bemeneti paramétert fogad el. A tárolt eljárás a Products less than utasítást, amely összefűzve van a bemeneti paraméterrel, úgy nyomtatja ki, hogy az átalakítja a money adattípusról varchar(10) karakteres adattípusra. Ezután az eljárás végrehajt egy utasítást SELECT a nézeten, és átadja a bemeneti paramétert a WHERE záradék részeként. Ez az összes olyan terméket adja vissza, amely kevesebbe kerül, mint a bemeneti paraméter értéke.

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

A tárolt eljárás tesztelése

A tárolt eljárás teszteléséhez írja be és hajtsa végre a következő utasítást. Az eljárás során az 1. leckében a Products táblázatba beírt két termék nevét kell visszaadni, amelynek ára kisebb, mint 10.00.

EXECUTE pr_Names 10.00;
GO