Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server
Azure SQL Database
Spravovaná instance
Azure SQLPdW (Analytics Platform System)
Databáze SQL v Microsoft Fabric
Note
Studijní program Začínáme s dotazováním pomocí jazyka Transact-SQL poskytuje podrobnější obsah spolu s praktickými příklady.
V této lekci se dozvíte, jak vytvořit databázi, vytvořit v databázi tabulku a pak získat přístup k datům v tabulce a změnit je. Vzhledem k tomu, že tato lekce představuje úvod k používání jazyka Transact-SQL, nepoužívá ani nepopisuje mnoho možností, které jsou pro tyto příkazy k dispozici.
Transact-SQL příkazy lze zapsat a odeslat do databázového stroje následujícími způsoby:
Pomocí aplikace SQL Server Management Studio. V tomto kurzu se předpokládá, že používáte Management Studio, ale můžete také použít Management Studio Express, které je k dispozici jako bezplatné stažení z webu Microsoft Download Center.
Pomocí nástroje sqlcmd .
Připojením z aplikace, kterou vytvoříte.
Kód se provádí na databázovém stroji stejným způsobem a se stejnými oprávněními bez ohledu na to, jak odesíláte příkazy kódu.
Pokud chcete spustit příkazy Transact-SQL v sadě Management Studio, otevřete Management Studio a připojte se k instanci databázového stroje SQL Serveru.
Prerequisites
K dokončení tohoto kurzu potřebujete SQL Server Management Studio a přístup k instanci SQL Serveru.
- Nainstalujte SQL Server Management Studio.
Pokud nemáte instanci SQL Serveru, vytvořte ji. Pokud ho chcete vytvořit, vyberte svou platformu z následujících odkazů. Pokud zvolíte ověřování SQL, použijte přihlašovací údaje SQL Serveru.
- Windows: Stáhněte si SQL Server 2022 Developer Edition.
- Linux: Rychlý start: Spuštění imagí kontejneru SQL Serveru s Linuxem pomocí Dockeru
Vytvoření databáze
Stejně jako mnoho příkazů Transact-SQL má příkaz CREATE DATABASE povinný parametr: název databáze.
CREATE DATABASE má také mnoho volitelných parametrů, například umístění disku, kam chcete umístit soubory databáze. Při provádění CREATE DATABASE bez volitelných parametrů používá SQL Server výchozí hodnoty pro mnoho z těchto parametrů.
V okně Editoru dotazů zadejte, ale nespustíte následující kód:
CREATE DATABASE TestData GOPomocí ukazatele vyberte slova
CREATE DATABASEa stiskněte klávesu F1. ČlánekCREATE DATABASEby se měl otevřít. Pomocí této techniky můžete najít úplnou syntaxi proCREATE DATABASEa pro další příkazy, které se používají v tomto kurzu.V Editoru dotazů stisknutím klávesy F5 spusťte příkaz a vytvořte databázi s názvem
TestData.
Při vytváření databáze sql Server vytvoří kopii model databáze a přejmenuje kopii na název databáze. Tato operace by měla trvat jenom několik sekund, pokud nezadáte velkou počáteční velikost databáze jako volitelný parametr.
Note
Klíčové slovo GO odděluje příkazy, pokud je v jedné dávce odesláno více příkazů.
GO je nepovinný, pokud dávka obsahuje pouze jeden příkaz.
Vytvoření tabulky
platí pro:SQL Server
Azure SQL Database
Azure Synapse Analytics
Analytics Platform System (PDW)
Pokud chcete vytvořit tabulku, musíte zadat název tabulky a názvy a datové typy jednotlivých sloupců v tabulce. Je také vhodné určit, jestli jsou v každém sloupci povoleny hodnoty null. Chcete-li vytvořit tabulku, musíte mít CREATE TABLE oprávnění a ALTER SCHEMA oprávnění ke schématu, které bude obsahovat tabulku. Tato oprávnění má db_ddladmin pevná role databáze.
Většina tabulek má primární klíč tvořený jedním nebo více sloupci tabulky. Primární klíč je vždy jedinečný. Databázový stroj vynucuje omezení, že se v tabulce nesmí opakovat žádná hodnota primárního klíče.
Seznam datových typů a odkazů pro popis jednotlivých typů najdete v tématu Datové typy.
Note
Databázový stroj je možné nainstalovat jako rozlišující velikost písmen nebo nerozlišující velikost písmen. Pokud je databázový stroj nainstalován jako citlivý na velikost písmen, názvy objektů musí mít vždy stejnou velikost písmen. Například tabulka s názvem OrderData je jiná tabulka než tabulka s názvem ORDERDATA. Pokud je databázový server nainstalován bez rozlišení malých a velkých písmen, považují se tyto dva názvy tabulek za stejnou tabulku a tento název lze použít pouze jednou.
Přepnutí připojení Editoru dotazů k databázi TestData
V okně Editoru dotazů zadejte a spusťte následující kód, který změní připojení k TestData databázi.
USE TestData
GO
Vytvoření tabulky
V okně Editoru dotazů zadejte a spusťte následující kód pro vytvoření tabulky s názvem Products. Sloupce v tabulce jsou pojmenované ProductID, ProductName, Pricea ProductDescription. Sloupec ProductID je primárním klíčem tabulky.
int, varchar(25), moneya varchar(max) jsou všechny datové typy. Pouze sloupce Price a ProductionDescription mohou mít žádná data při vložení nebo změně řádku. Tento příkaz obsahuje volitelný prvek (dbo.) označovaný jako schéma. Schéma je databázový objekt, který vlastní tabulku. Pokud jste správce, dbo jedná se o výchozí schéma.
dbo je zkratka pro vlastníka databáze.
CREATE TABLE dbo.Products
(ProductID int PRIMARY KEY NOT NULL,
ProductName varchar(25) NOT NULL,
Price money NULL,
ProductDescription varchar(max) NULL)
GO
Vložení a aktualizace dat v tabulce
Teď, když jste vytvořili Products tabulku, jste připraveni vložit data do tabulky pomocí příkazu INSERT . Po vložení dat změníte obsah řádku pomocí UPDATE příkazu. Klauzule WHEREUPDATE příkazu slouží k omezení aktualizace na jeden řádek. Následující čtyři příkazy zadávají následující data.
| ProductID | ProductName | Price | ProductDescription |
|---|---|---|---|
| 1 | Clamp | 12.48 | Pracovní svorka |
| 50 | Šroubovák | 3.17 | Plochá hlava |
| 75 | Pneumatika | Nástroj pro změnu pneumatik. | |
| 3000 | 3 mm závorka | 0.52 |
Základní syntaxe je: INSERT, název tabulky, seznam sloupců a potom seznam hodnot, VALUESkteré se mají vložit. Dvě pomlčky před řádkem označují, že řádek je komentář a kompilátor ho ignoruje. V tomto případě komentář popisuje přípustné variace syntaxe.
Vložení dat do tabulky
Spuštěním následujícího příkazu vložte řádek do
Productstabulky vytvořené v předchozím úkolu.-- Standard syntax INSERT dbo.Products (ProductID, ProductName, Price, ProductDescription) VALUES (1, 'Clamp', 12.48, 'Workbench clamp') GOPokud vložení proběhne úspěšně, přejděte k dalšímu kroku.
Pokud se vložení nezdaří, může to být proto, že
Producttabulka už obsahuje řádek s tímto ID produktu. Pokud chcete pokračovat, odstraňte všechny řádky v tabulce a opakujte předchozí krok. FUNKCE TRUNCATE TABLE odstraní všechny řádky v tabulce.Spuštěním následujícího příkazu odstraňte všechny řádky v tabulce:
TRUNCATE TABLE TestData.dbo.Products; GOPo zkrácení tabulky opakujte
INSERTpříkaz v tomto kroku.Následující příkaz ukazuje, jak můžete změnit pořadí, ve kterém jsou parametry poskytovány přepnutím umístění
ProductIDProductNameseznamu polí (v závorkách) a v seznamu hodnot.-- Changing the order of the columns INSERT dbo.Products (ProductName, ProductID, Price, ProductDescription) VALUES ('Screwdriver', 50, 3.17, 'Flat head') GONásledující příkaz ukazuje, že názvy sloupců jsou volitelné, pokud jsou hodnoty uvedeny ve správném pořadí. Tato syntaxe je běžná, ale nedoporučuje se, protože ostatním může být obtížnější porozumět vašemu kódu.
NULLje zadán proPricesloupec, protože cena za tento produkt ještě není známá.-- Skipping the column list, but keeping the values in order INSERT dbo.Products VALUES (75, 'Tire Bar', NULL, 'Tool for changing tires.') GONázev schématu je volitelný, pokud přistupujete k tabulce a měníte ji ve výchozím schématu.
ProductDescriptionProtože sloupec umožňuje hodnoty null a není zadaná žádná hodnota,ProductDescriptionnázev sloupce a hodnota lze úplně vynechat z příkazu.-- Dropping the optional dbo and dropping the ProductDescription column INSERT Products (ProductID, ProductName, Price) VALUES (3000, '3 mm Bracket', 0.52) GO
Aktualizace tabulky produktů
Zadejte a spusťte následující UPDATE příkaz ke změně ProductName druhého produktu z Screwdriver na Flat Head Screwdriver.
UPDATE dbo.Products
SET ProductName = 'Flat Head Screwdriver'
WHERE ProductID = 50
GO
Čtení dat z tabulky
Příkaz použijte SELECT ke čtení dat v tabulce. Příkaz SELECT je jedním z nejdůležitějších příkazů Transact-SQL a syntaxe má mnoho variant. V tomto kurzu budete pracovat s pěti základními verzemi.
Přečtěte si data v tabulce
Zadáním a spuštěním následujících příkazů načtěte data v
Productstabulce.-- The basic syntax for reading data from a single table SELECT ProductID, ProductName, Price, ProductDescription FROM dbo.Products GOPomocí hvězdičky (
*) můžete vybrat všechny sloupce v tabulce. Hvězdička slouží pro ad hoc dotazy. V trvalém kódu zadejte seznam sloupců tak, aby příkaz vrátil předpovězené sloupce, i když se do tabulky později přidá nový sloupec.-- Returns all columns in the table -- Does not use the optional schema, dbo SELECT * FROM Products GOSloupce, které nechcete vrátit, můžete vynechat. Sloupce se vrátí v pořadí, v jakém jsou uvedeny.
-- Returns only two of the columns from the table SELECT ProductName, Price FROM dbo.Products GOWHEREPomocí klauzule omezte řádky vrácené uživateli.-- Returns only two of the records in the table SELECT ProductID, ProductName, Price, ProductDescription FROM dbo.Products WHERE ProductID < 60 GOJakmile jsou vráceny, můžete pracovat s hodnotami ve sloupcích. Následující příklad provede matematickou operaci ve sloupci
Price. Sloupce, které byly tímto způsobem změněny, nemají název, pokud ho nezadáte pomocí klíčovéhoASslova.-- 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
Užitečné funkce v příkazu SELECT
Informace o některýchfunkcích SELECT
Vytváření zobrazení a uložených procedur
Zobrazení je uložený SELECT příkaz a uložená procedura je jeden nebo více příkazů Transact-SQL, které se spouští jako dávka.
Zobrazení se dotazují jako tabulky a nepřijímají parametry. Uložené procedury jsou složitější než zobrazení. Uložené procedury můžou mít vstupní i výstupní parametry a mohou obsahovat příkazy pro řízení toku kódu, jako IF jsou například příkazy a WHILE příkazy. Osvědčeným postupem programování je používat uložené procedury pro všechny opakující se akce v databázi.
V tomto příkladu pomocí CREATE funkce VIEW vytvoříte zobrazení, které vybere jenom dva sloupce v Products tabulce. Pak použijete CREATE PROCEDURE k vytvoření uložené procedury, která přijímá parametr ceny a vrátí pouze produkty, které stojí méně než zadaná hodnota parametru.
Vytvoř zobrazení.
Spuštěním následujícího příkazu vytvořte zobrazení, které provede příkaz select, a vrátí uživatelům názvy a ceny našich produktů.
CREATE VIEW vw_Names
AS
SELECT ProductName, Price FROM Products;
GO
Otestovat zobrazení
Zobrazení se zachází stejně jako s tabulkami.
SELECT Pro přístup k zobrazení použijte příkaz.
SELECT * FROM vw_Names;
GO
Vytvoření uložené procedury
Následující příkaz vytvoří název pr_Namesuložené procedury , přijímá vstupní parametr s názvem @VarPrice datového typu money. Uložená procedura vytiskne příkaz Products less than zřetězený se vstupním parametrem, který se změní z datového money typu na datový typ znaku varchar(10) . Potom procedura SELECT provede příkaz v zobrazení a předá vstupní parametr jako součást WHERE klauzule. Vrátí všechny produkty, které stojí méně než hodnota vstupního parametru.
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
Otestování uložené procedury
Chcete-li otestovat uloženou proceduru, zadejte a spusťte následující příkaz. Postup by měl vrátit názvy dvou produktů zadaných do Products tabulky v lekci 1 s cenou nižší než 10.00.
EXECUTE pr_Names 10.00;
GO