Úvod do SQL
SQL je zkratka pro Structured Query Language. SQL se používá ke komunikaci s relační databází. Jedná se o standardní jazyk pro systémy pro správu relačních databází. Příkazy jazyka SQL se používají k provádění úkolů, jako je například aktualizace dat v databázi nebo načítání dat z databáze. Mezi běžné systémy pro správu relačních databází používající SQL patří Microsoft SQL Server, MySQL, PostgreSQL, MariaDB a Oracle.
Poznámka:
SQL byl původně standardizován americkým National Standards Institute (ANSI) v roce 1986 a mezinárodní organizací pro standardizaci (ISO) v roce 1987. Od té doby se standard několikrát rozšířil, protože dodavatelé relačních databází přidali do svých systémů nové funkce. Většina dodavatelů databází navíc zahrnuje vlastní proprietární rozšíření, která nejsou součástí standardu, což vedlo k různým dialektům SQL.
V této lekci se dozvíte o SQL. Uvidíte, jak se používají k dotazování a údržbě dat v databázi a k různým dialektům, které jsou k dispozici.
Principy dialektů SQL
Příkazy SQL, jako je SELECT, INSERT, UPDATE, DELETE, CREATE a DROP , můžete použít k dosažení téměř všeho, co je potřeba udělat s databází. I když jsou tyto příkazy SQL součástí standardu SQL, mnoho systémů pro správu databází má také vlastní vlastní vlastní rozšíření pro zpracování specifik tohoto systému pro správu databází. Tato rozšíření poskytují funkce, které nejsou součástí standardu SQL, a zahrnují oblasti, jako je například správa zabezpečení a programovatelnost. Například Microsoft SQL Server používá Jazyk Transact-SQL. Tato implementace zahrnuje proprietární rozšíření pro zápis uložených procedur a triggerů (kód aplikace, který lze uložit v databázi) a správu uživatelských účtů. PostgreSQL a MySQL mají také vlastní verze těchto funkcí.
Mezi oblíbené dialekty SQL patří:
Transact-SQL (T-SQL) Tuto verzi SQL používá Microsoft SQL Server a Azure SQL Database.
pgSQL. Toto je dialekt s rozšířeními implementovanými v PostgreSQL.
PL/SQL. Toto je dialekt používaný Oraclem. PL/SQL je zkratka pro procedurální jazyk/SQL.
Uživatelé, kteří mají v úmyslu pracovat konkrétně s jedním databázovým systémem, by se měli seznámit s složitostí upřednostňovaného dialektu a platformy SQL.
Pochopení typů příkazů SQL
Příkazy SQL jsou seskupené do dvou hlavních logických skupin a jsou:
- DML (Data Manipulation Language)
- DDL (Data Definition Language)
Použití příkazů DML
Příkazy DML slouží k manipulaci s řádky v relační tabulce. Tyto příkazy umožňují načítat (dotazovat) data, vkládat nové řádky nebo upravovat existující řádky. Řádky můžete odstranit i v případě, že je už nepotřebujete.
Čtyři hlavní příkazy DML jsou:
Prohlášení | Popis |
---|---|
VYBRAT | Výběr nebo čtení řádků z tabulky |
VLOŽIT | Vložení nových řádků do tabulky |
Aktualizace | Upravit nebo aktualizovat existující řádky |
VYMAZAT | Odstranění existujících řádků v tabulce |
Základní forma příkazu INSERT vloží najednou jeden řádek. Ve výchozím nastavení se příkazy SELECT, UPDATE a DELETE použijí na každý řádek v tabulce. K určení kritérií obvykle použijete klauzuli WHERE s těmito příkazy; Budou vybrány, aktualizovány nebo odstraněny pouze řádky, které splňují tato kritéria.
Výstraha
SQL neposkytuje jste si jistí? výzvy, proto buďte opatrní při použití DELETE nebo UPDATE bez klauzule WHERE, protože můžete ztratit nebo změnit mnoho dat.
Následující kód je příkladem příkazu SQL, který vybere všechny řádky, které odpovídají jednomu filtru z tabulky. Klauzule FROM určuje tabulku, která se má použít:
SELECT *
FROM MyTable
WHERE MyColumn2 = 'contoso'
Pokud dotaz vrátí mnoho řádků, nemusí se nutně zobrazovat v žádné konkrétní sekvenci. Pokud chcete data seřadit, můžete přidat klauzuli ORDER BY . Data budou seřazena podle zadaného sloupce:
SELECT *
FROM MyTable
ORDER BY MyColumn1
Pomocí klauzule JOIN můžete také spustit příkazy SELECT, které načítají data z více tabulek. Spojení označují, jak jsou řádky v jedné tabulce propojeny s řádky v druhé, aby bylo možné určit, jaká data se mají vrátit. Podmínka spojení definuje způsob, jakým dvě tabulky souvisejí v dotazu:
- Zadejte sloupec z každé tabulky, který se má použít pro spojení. Typická podmínka spojení určuje cizí klíč z jedné tabulky a jeho přidružený primární klíč v druhé tabulce.
- Určení logického operátoru (například = nebo <>,), který se má použít při porovnávání hodnot ze sloupců.
Následující dotaz ukazuje příklad, který spojuje dvě tabulky s názvem Inventory a CustomerOrder. Načte všechny řádky, ve kterých hodnota ve sloupci ID v tabulce Inventory odpovídá hodnotě ve sloupci InventoryID v tabulce CustomerOrder .
SELECT *
FROM Inventory
JOIN CustomerOrder
ON Inventory.ID = CustomerOrder.InventoryID
SQL poskytuje agregační funkce. Agregační funkce vypočítá jeden výsledek v sadě řádků nebo celé tabulky. Následující příklad najde minimální hodnotu ve sloupci MyColumn1 ve všech řádcích v tabulce Moje tabulka :
SELECT MIN(MyColumn1)
FROM MyTable
K dispozici je řada dalších agregačních funkcí, včetně funkce MAX (která vrátí největší hodnotu ve sloupci), AVG (která vrátí průměrnou hodnotu, ale pouze v případě, že sloupec obsahuje číselná data) a SUMA (která vrátí součet všech hodnot ve sloupci, ale pouze v případě, že je sloupec číselný).
Další příklad ukazuje, jak aktualizovat existující řádek pomocí SQL. Upraví hodnotu druhého sloupce, ale pouze pro řádky, které mají hodnotu 3 v myColumn1. Všechny ostatní řádky zůstanou beze změny:
UPDATE MyTable
SET MyColumn2 = 'contoso'
WHERE MyColumn1 = 3
Výstraha
Pokud vynecháte klauzuli WHERE , příkaz UPDATE upraví každý řádek v tabulce.
K odebrání řádků použijte příkaz DELETE . Určíte tabulku, ze které se má odstranit, a klauzuli WHERE , která identifikuje řádky, které se mají odstranit:
DELETE FROM MyTable
WHERE MyColumn2 = 'contoso'
Výstraha
Pokud vynecháte klauzuli WHERE , příkaz DELETE odebere každý řádek z tabulky.
Příkaz INSERT má trochu jiný tvar. V klauzuli INTO zadáte tabulku a sloupce a seznam hodnot, které se mají v těchto sloupcích uložit. Standardní SQL podporuje vložení pouze jednoho řádku najednou, jak je znázorněno v následujícím příkladu. Některé dialekty umožňují zadat více klauzulí VALUES pro přidání několika řádků najednou:
INSERT INTO MyTable(MyColumn1, MyColumn2, MyColumn3)
VALUES (99, 'contoso', 'hello')
Použijte příkazy DDL
Příkazy DDL slouží k vytváření, úpravám a odebírání tabulek a dalších objektů v databázi (tabulka, uložené procedury, zobrazení atd.).
Nejběžnější příkazy DDL jsou:
Prohlášení | Popis |
---|---|
VYTVOŘTE | Vytvořte v databázi nový objekt, například tabulku nebo zobrazení. |
ZMĚNA | Upravte strukturu objektu. Například změnou tabulky přidáte nový sloupec. |
UPUSTIT | Odeberte objekt z databáze. |
PŘEJMENOVAT | Přejmenujte existující objekt. |
Výstraha
Příkaz DROP je velmi výkonný. Když tabulku odstraníte, ztratí se všechny řádky v této tabulce. Pokud nemáte zálohu, nebudete moct tato data načíst.
Následující příklad vytvoří novou tabulku databáze. Položky mezi závorkou určují podrobnosti o jednotlivých sloupcích, včetně názvu, datového typu, zda sloupec musí vždy obsahovat hodnotu (NOT NULL) a zda se data ve sloupci používají k jednoznačné identifikaci řádku (PRIMÁRNÍ KLÍČ). Každá tabulka by měla mít primární klíč, i když SQL toto pravidlo nevynucuje.
Poznámka:
Sloupce označené jako NOT NULL se označují jako povinné sloupce. Pokud vynecháte klauzuli NOT NULL , můžete vytvořit řádky, které neobsahují hodnotu ve sloupci. Říká se, že prázdný sloupec v řádku má hodnotu NULL.
CREATE TABLE MyTable
(
MyColumn1 INT NOT NULL PRIMARY KEY,
MyColumn2 VARCHAR(50) NOT NULL,
MyColumn3 VARCHAR(10) NULL
);
Datové typy dostupné pro sloupce v tabulce se budou lišit mezi systémy pro správu databází. Většina systémů pro správu databází ale podporuje číselné typy, jako je INT (celé číslo nebo celé číslo) a typy řetězců, jako je VARCHAR (VARCHAR je zkratka pro data znaků s proměnnou délkou). Další informace najdete v dokumentaci k vybranému systému pro správu databází.