Sdílet prostřednictvím


Lekce 1: Vytvoření a dotazování databázových objektů

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná 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.

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.

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

  1. V okně Editoru dotazů zadejte, ale nespustíte následující kód:

    CREATE DATABASE TestData
    GO
    
  2. Pomocí ukazatele vyberte slova CREATE DATABASEa stiskněte klávesu F1. Článek CREATE DATABASE by se měl otevřít. Pomocí této techniky můžete najít úplnou syntaxi pro CREATE DATABASE a pro další příkazy, které se používají v tomto kurzu.

  3. 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 ServerAzure SQL DatabaseAzure Synapse AnalyticsAnalytics 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

  1. Spuštěním následujícího příkazu vložte řádek do Products tabulky vytvořené v předchozím úkolu.

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

    Pokud 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 Product tabulka 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;
    GO
    

    Po zkrácení tabulky opakujte INSERT příkaz v tomto kroku.

  2. 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í ProductIDProductName seznamu 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')
    GO
    
  3. Ná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. NULL je zadán pro Price sloupec, 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.')
    GO
    
  4. Název schématu je volitelný, pokud přistupujete k tabulce a měníte ji ve výchozím schématu. ProductDescription Protože sloupec umožňuje hodnoty null a není zadaná žádná hodnota, ProductDescription ná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

  1. Zadáním a spuštěním následujících příkazů načtěte data v Products tabulce.

    -- The basic syntax for reading data from a single table
    SELECT ProductID, ProductName, Price, ProductDescription
        FROM dbo.Products
    GO
    
  2. Pomocí 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
    GO
    
  3. Sloupce, 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
    GO
    
  4. WHERE Pomocí 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
    GO
    
  5. Jakmile 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ého AS slova.

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