Zde vytvoříme tři tabulky v SQL Serveru a poté analyzujeme skript, který je vytvořil. Spustíme také další skript, abychom ověřili, že tabulka byla vytvořena.
Dříve jsme vytvářeli databázi ze skriptu. Databáze je však prázdná databáze – neobsahuje žádné tabulky ani data.
Nyní vytvoříme nějaké tabulky pro naši databázi.
Nejprve, pro osvěžení, zde je to, co jsme dosud udělali:
CREATE DATABASE Music;
Tím vznikla prázdná databáze. Pokud jste tak ještě neučinili, spusťte tento skript.
Nyní spusťte následující skript:
USE Music; CREATE TABLE Artists ( ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY, ArtistName nvarchar(255) NOT NULL, ActiveFrom date ); GO CREATE TABLE Genres ( GenreId int IDENTITY(1,1) NOT NULL PRIMARY KEY, Genre nvarchar(50) NOT NULL ); CREATE TABLE Albums ( AlbumId int IDENTITY(1,1) NOT NULL PRIMARY KEY, AlbumName nvarchar(255) NOT NULL, ReleaseDate date NOT NULL, ArtistId int NOT NULL, GenreId int NOT NULL CONSTRAINT FK_Albums_Artists FOREIGN KEY (ArtistId) REFERENCES dbo.Artists (ArtistId) ON DELETE NO ACTION ON UPDATE NO ACTION );
Tento skript přidá do databáze tři tabulky. Tabulky se nazývají Artists
, Genres
a Albums
.
Zde je výsledek v SQL Operations Studio/Azure Data Studio:
Jakýkoli nástroj GUI zobrazí tabulky v podstatě stejným způsobem. Každou tabulku lze rozbalit a odhalit její sloupce, stejně jako všechny indexy, spouštěče, klíče atd. Můžete také rozbalit Sloupce uzel pro zobrazení seznamu sloupců a jejich datových typů a také případných omezení, která byla specifikována.
Vysvětlení CREATE TABLE
Prohlášení
Skript, který jsme právě spustili, se skládá ze tří CREATE TABLE
příkazy — každý vytvoří jinou tabulku. Skript také přidává omezení cizího klíče, ale na to se podíváme později.
Nyní si pojďme analyzovat první CREATE TABLE
příkaz v našem skriptu:
USE Music; CREATE TABLE Artists ( ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY, ArtistName nvarchar(255) NOT NULL, ActiveFrom date ); GO
Tento příkaz SQL vytvoří tabulku nazvanou Artists
se třemi sloupci nazvanými ArtistId
, ArtistName
a ActiveFrom
. Definice každého sloupce začíná jeho názvem, za nímž následuje jeho datový typ a případná omezení, která mají být na tento sloupec aplikována.
Zde je podrobnější popis „řádek po řádku“:
USE Music;
- Tato část ve skutečnosti není součástí
CREATE TABLE
prohlášení. Slouží pouze k přepnutí na Hudbu databáze. Na serveru může být mnoho databází a my si chceme být jisti, že vytváříme tabulky na správné databázi. Tento řádek nepotřebujete, pokud již pracujete ve správné databázi. CREATE TABLE Artists (
- Toto je začátek
CREATE TABLE
prohlášení. Za ním následuje název tabulky (v tomto případěArtists
), za kterým následuje první ze závorek, které uzavírají definici tabulky. ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
- Potom definujeme první sloupec. V tomto případě to nazýváme
ArtistId
, zadejte jeho datový typ jako celé číslo (int
), nastavte jej jako sloupec indentity (tento sloupec poskytne jedinečné ID pro tabulku a hodnota se bude zvyšovat s každým přidaným řádkem),(1,1)
znamená, že hodnota začíná na 1 a zvyšuje se o 1,NOT NULL
znamená, že pole nemůže obsahovat hodnoty null aPRIMARY KEY
nastaví tento sloupec jako primární klíč pro tabulku. primární klíč je sloupec, který byl nakonfigurován jako pole jedinečného identifikátoru pro tabulku. ArtistName nvarchar(255) NOT NULL,
- Další sloupec se nazývá
ArtistName
a jeho datový typ jenvarchar(255)
, což znamená, že přijímá data řetězce Unicode s proměnnou délkou, s maximální délkou 255 znaků. Tento sloupec jsme také nastavili naNOT NULL
takže nemůže obsahovat prázdné položky. ActiveFrom date
- Poslední sloupec se nazývá
ActiveFrom
a nastavíme jej tak, aby přijímal datový typdate
);
- Potom použijeme
)
pro uzavření definice a;
pro ukončení příkazu (středník je ukončovací znak příkazu). GO
- Signalizuje konec dávky příkazů Transact-SQL. Toto ve skutečnosti není příkaz Transact-SQL. Je to příkaz, který rozpoznávají obslužné programy sqlcmd a osql a editor kódu SQL Server Management Studio, který signalizuje konec dávky příkazů Transact-SQL.
Jak získat informace o tabulce při použití nástroje příkazového řádku
Když používáte nástroj příkazového řádku, nemáte ten luxus vidět své databázové tabulky na bočním panelu a čekat na rozbalení jediným kliknutím. To však neznamená, že nemůžete zobrazit informace o svých tabulkách nebo jiných databázových objektech.
Při použití nástroje příkazového řádku můžete spustit následující příkaz k zobrazení informací o tabulkách ve výše uvedené databázi:
USE Music; SELECT column_name, data_type, character_maximum_length, is_nullable FROM information_schema.columns;Výsledek
column_name data_type character_maximum_length is_nullable ----------- --------- ------------------------ ----------- ArtistId int null NO ArtistName nvarchar 255 NO ActiveFrom date null YES GenreId int null NO Genre nvarchar 50 NO AlbumId int null NO AlbumName nvarchar 255 NO ReleaseDate date null NO ArtistId int null NO GenreId int null NO 10 row(s) returned Executed in 1 ms
Dotyčná tabulka je v databázi s názvem Music proto na něj přejdeme jako první.
Můžete ji také zúžit na konkrétní tabulku pomocí WHERE
klauzule:
USE Music; SELECT column_name, data_type, character_maximum_length, is_nullable FROM information_schema.columns WHERE table_name = 'Artists';Výsledek
column_name data_type character_maximum_length is_nullable ----------- --------- ------------------------ ----------- ArtistId int null NO ArtistName nvarchar 255 NO ActiveFrom date null YES 3 row(s) returned Executed in 1 ms
information_schema.columns
může vrátit mnohem více polí . Můžete použít SELECT *
chcete-li je všechny vrátit.
Metoda příkazového řádku pro načítání informací z tabulky funguje také při použití nástroje GUI (koneckonců jsou to jen příkazy SQL). Chcete-li získat stejná data, můžete zadat stejné příkazy SQL, ať už používáte sql-cli, sqlcmd, SSMS, Azure Data Studio, DBeaver nebo jakýkoli jiný nástroj pro správu serveru SQL:
GO
Příkaz
Možná budete muset přidat GO
na konec skriptu (například při použití sqlcmd).
Více řádků
Pokud se pokusíte rozložit výše uvedené skripty na více řádků pomocí nástroje příkazového řádku, můžete zjistit, že se zobrazí chyba.
V takovém případě zkuste na konec každého řádku přidat zpětné lomítko. Takto:
USE Music; \ SELECT column_name, data_type, character_maximum_length, is_nullable \ FROM information_schema.columns;
Pokud se vám nelíbí myšlenka přidávat zpětná lomítka, další možností je uložit víceřádkový skript do souboru .sql a poté jej spustit z příkazového řádku.
Způsob spuštění skriptu z příkazového řádku bude záviset na nástroji příkazového řádku, který používáte.
Zde je návod, jak použít sqlcmd ke spuštění souboru uloženého na počítači se systémem Windows:
sqlcmd -S myServer\instanceName -i C:\myScript.sql
A zde je návod, jak použít sql-cli ke spuštění souboru uloženého na Macu:
.run /myScript.sql
Úplná cesta a názvy souborů budou samozřejmě záviset na názvu vašeho souboru a na tom, kam jste jej uložili.