Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
Elemzé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.
- Telepítse SQL Server Management Studio.
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.
- Windows: Az SQL Server 2022 Developer Edition letöltése.
- Linux: Rövid útmutató: SQL Server Linux-tárolólemezképek futtatása a Dockerrel.
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.
Írja be a Lekérdezésszerkesztő ablakba, de ne hajtsa végre a következő kódot:
CREATE DATABASE TestData GOAz egérmutatóval jelölje ki a szavakat
CREATE DATABASE, majd nyomja le az F1 billentyűt. ACREATE DATABASEcikknek meg kell nyílnia. Ezzel a technikával megtalálhatja aCREATE DATABASEteljes szintaxisát és az oktatóanyagban használt többi utasítás szintaxisát.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 Server
Azure SQL Database
Azure Synapse Analytics
Analytics 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
Az alábbi utasítás végrehajtásával szúrjon be egy sort az
Productselőző feladatban létrehozott táblába.-- Standard syntax INSERT dbo.Products (ProductID, ProductName, Price, ProductDescription) VALUES (1, 'Clamp', 12.48, 'Workbench clamp') GOHa a beszúrás sikeres, folytassa a következő lépéssel.
Ha a beszúrás sikertelen, az lehet, hogy a
Producttá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; GOA tábla csonkítását követően ismételje meg a
INSERTparancsot ebben a lépésben.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 aProductNameelhelyezé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') GOAz 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.
NULLaz oszlophozPricevan 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.') GOA 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
ProductDescriptionoszlop null értékeket engedélyez, és nincs megadva érték, azProductDescriptionoszlop 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
Í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 GOCsillag (
*) 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 GOKihagyhatja 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 GOWHEREZá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 GOA visszaadott oszlopokban lévő értékekkel dolgozhat. Az alábbi példa egy matematikai műveletet hajt végre az
Priceoszlopon. Az ily módon módosított oszlopoknak csak akkor van neve, ha aASkulcsszó 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