Úvod do SQL

Dokončeno

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