Základní sql příkazy. Mechanismus přístupu k datům. Strukturovaný dotazovací jazyk SQL. Historie a standardy SQL. Zpracování SQL příkazů serverem Oracle. Žádosti o odstranění
Jakékoli koncepční informace o relačních databázích a tabulkách jsou užitečné pouze tehdy, pokud víte, jak s daty pracovat. Jazyk SQL se skládá ze strukturovaných příkazů pro přidávání, úpravu a mazání dat z databáze. Tyto příkazy tvoří základ pro interakci se serverem PostgreSQL.
Tato část je o "anatomii" příkazů SQL. Zkoumá strukturální komponenty příkazů, popisuje funkce jednotlivých komponent a jejich vzájemné vztahy. Standardní klient příkazového řádku PostgreSQL, psql, vytiskne výsledky příkazů v uvedených příkladech.
Většina příkladů příkazů SQL je specifická pro databázi booktown. Veškerý výstup psql má předponu ve tvaru booktown=# .
Některé příklady používají testovací databázi testdb. Ve výchozím nastavení výzva psql zobrazuje pouze název databáze a symboly =#, což znamená, že systém je připraven vydat nový příkaz (ačkoli uvidíte, že se symbol = dynamicky mění, jak je monitorován stav vstupu SQL). Kniha poskytuje tuto výzvu spolu se vstupem a výstupem SQL, aby vám pomohla získat pohodlí s výstupem klienta psql.
Klient psql je podrobně popsán v kapitole 4. Zde je zmíněn pouze pro objasnění stylu příkladů příkazů SQL.
Poznámka
Schéma databáze booktown (spolu s ukázkovými záznamy) je umístěno v souboru booktown.sql na CD. Chcete-li nainstalovat tuto databázi, zadejte na příkazovém řádku příkaz psql - U postgres template!. - f /mnt/cdrom/booktown.sql, kde /mnt/cdrom je cesta k připojenému CD a postgres je jméno superuživatele PostgreSQL.
Příkazy SQL vždy začínají akcí (slovesem) – slovem nebo skupinou slov, které popisují právě prováděnou operaci. Kromě toho příkaz SQL obvykle obsahuje jednu nebo více částí, které objasňují jeho význam. V tabulce 3.2 uvádí hlavní akce SQL.
Tabulka 3.2. Základní akce PostgreSQL.
VYTVOŘIT DATABÁZI | Vytvoření nové databáze |
VYTVOŘIT INDEX | Vytvoření nového indexu ve sloupci tabulky |
VYTVOŘTE SEKVENCI | Vytvoření nové sekvence v existující databázi |
VYTVOŘIT TABULKU | Vytvoření nové tabulky v existující databázi |
VYTVOŘIT SPUŠTĚNÍ | Vytvořte novou definici spouštěče |
VYTVOŘIT ZOBRAZENÍ | Vytvořte nové zobrazení pro existující tabulku |
VYBRAT | Výběr záznamů z tabulky |
VLOŽIT | Vložení jednoho nebo více nových záznamů do tabulky |
AKTUALIZACE | Úprava dat ve stávajících záznamech |
VYMAZAT | Odstranění existujících záznamů z tabulky |
DROP DATABASE | Zničení existující databáze |
DROP INDEX | Odebrání indexu sloupce z existující tabulky |
DROP SEQUENCE | Zničení existujícího generátoru sekvencí |
DOP STŮL | Zničení existující tabulky |
DROP SPUŠTĚČ | Zničení existující definice spouštěče |
POHLED POHLEDEM | Zničení stávajícího pohledu |
VYTVOŘIT UŽIVATELE | Vytvoření nového uživatelského účtu PostgreSQL v systému |
ZMĚNIT UŽIVATELE | Úprava existujícího uživatelského účtu PostgreSQL |
DROP USER | Smazání existujícího uživatelského účtu PostgreSQL |
GRANT | Udělení přístupových práv k databázovému objektu |
ZRUŠIT | Odebrání přístupových práv k databázovému objektu |
VYTVOŘIT FUNKCI | Vytvoření nové funkce SQL v databázi |
VYTVOŘIT JAZYK | Vytvoření nové definice jazyka v databázi |
VYTVOŘIT OPERÁTORA | Vytvoření nového SQL příkazu v databázi |
VYTVOŘIT TYP | Vytvoření nového datového typu SQL v databázi |
Structured Query Language byl vyvinut společností IBM na počátku 70. let. V roce 1986 byl SQL poprvé standardizován organizacemi ANSI.
SQL je výkonný a zároveň jednoduchý jazyk pro správu databází. Je podporován téměř všemi moderními databázemi. SQL je rozdělen do dvou podmnožin příkazů: DDL (Data Definition Language) a DML (Data Manipulation Language). Příkazy DDL se používají k vytváření nových databází, tabulek a sloupců a příkazy DML se používají ke čtení, zápisu, řazení, filtrování a mazání dat.
Tento článek se blíže podívá na příkazy DML, protože se používají mnohem častěji.
Příkazy DDLCREATE – slouží k vytváření nových tabulek, sloupců a indexů.
DROP - používá se k odstranění sloupců a indexů.
ALTER - slouží k přidávání nových sloupců do tabulek a změně konkrétních sloupců.
DML příkazySELECT je nejběžněji používaný příkaz a používá se k načtení sady dat z databázové tabulky. Příkaz SELECT má následující syntaxi:
VYBRAT pole_seznam1 Z název_tabulky ]
Operátory v hranatých závorkách jsou volitelné a svislá čára znamená, že musí být přítomna jedna ze zadaných frází, nikoli však obě.
Vytvořme například jednoduchý dotaz pro získání dat z polí „jméno“ a „telefon“ tabulky „přátelé“:
VYBRAT jméno, tel Z přátelé
Pokud potřebujete získat všechna pole tabulky, není nutné je vypisovat, stačí dát hvězdičku (*):
VYBRAT * Z přátelé
Chcete-li ze zobrazeného seznamu vyloučit duplicitní položky, použijte klíčové slovo DISTINCT:
VYBERTE ROZDÍL název Z přátelé
Pokud potřebujete získat samostatný záznam, použije se klauzule WHERE. Potřebujeme například získat telefonní číslo „Vasya Pupkin“ z tabulky „přátelé“:
VYBRAT * Z přátelé KDE název = "Vasya Pupkin"
nebo naopak, musíme zjistit, kdo je vlastníkem telefonu 44-65-01:
VYBRAT * Z přátelé KDE telefon = "44-65-01"
Kromě toho můžete použít zástupné znaky a vytvořit tak vyhledávací vzory. K tomu slouží operátor LIKE. Operátor LIKE má následující substituční operátory:
* - odpovídá řetězci sestávajícímu z jednoho nebo více znaků;
Odpovídá libovolnému znaku;
Odpovídá jednomu znaku ze specifické sady;
Například pro načtení záznamů z pole „name“ obsahujícího slovo „Vasya“ by požadavek vypadal takto:
VYBERTE * OD přátelé KDE název JAKO "*Vasya*"
Klauzule ORDER BY se používá k určení pořadí, ve kterém jsou data vrácena. Bez tohoto operátoru nelze předvídat pořadí vrácených dat. Klíčová slova ASC a DESC umožňují určit směr řazení. ASC seřadí vzestupně a DESC seřadí sestupně.
Například požadavek na získání seznamu záznamů z pole „jméno“ v abecedním pořadí by vypadal takto:
VYBERTE * OD přátelé SEŘADIT PODLE název
Všimněte si, že klíčové slovo ASC není vyžadováno, protože je výchozí.
INSERT - tento příkaz slouží k přidání nového záznamu do tabulky. Píše se takto:
VLOŽ DO název_tabulky HODNOTY ( seznam_hodnot)
Upozorňujeme, že typy hodnot v seznamu hodnot se musí shodovat s typy hodnot polí tabulky, například:
VLOŽ DO přátelé HODNOTY ( "Anka kulometčík", "32-09-81" )
Tento příklad přidá nový záznam do tabulky přátel se zadanými hodnotami.
UPDATE – Tento příkaz se používá k aktualizaci dat v tabulce a nejčastěji se používá ve spojení s klauzulí WHERE. Příkaz UPDATE má následující syntaxi:
AKTUALIZACE název_tabulky SOUBOR název_pole = význam
Pokud vynecháte klauzuli WHERE, budou aktualizována data ve všech definovaných polích v tabulce. Změňme například telefonní číslo Vasyi Pupkuna:
AKTUALIZACE přátelé SOUBOR telefon = "55-55-55" KDE název = "Vasya Pupkin"
DELETE - jak jste již pravděpodobně pochopili, tento příkaz slouží k mazání záznamů z tabulky. Stejně jako UPDATE se příkaz DELETE obvykle používá s klauzulí WHERE, pokud je tato klauzule vynechána, všechna data ze zadané tabulky budou smazána. Syntaxe příkazu DELETE je následující:
ODSTRANIT Z název_tabulky
Například odstraníme z našeho stolu tohoto otravného Vasya Pupkina :) :
ODSTRANIT Z přátelé KDE název = "Vasya Pupkin"
KonecV tomto článku jsem hovořil o hlavních SQL operátorech, ty jsou pro práci s databázemi zcela dostačující, o zbývajících operátorech se zmíním podrobněji jindy.
SQL nebo Structured Query Language je jazyk používaný ke správě dat v relačním databázovém systému (RDBMS). Tento článek se bude zabývat běžně používanými SQL příkazy, které by měl znát každý programátor. Tento materiál je ideální pro ty, kteří si chtějí před pracovním pohovorem oprášit své znalosti SQL. Chcete-li to provést, podívejte se na příklady uvedené v článku a nezapomeňte, že jste studovali databáze ve dvojicích.
Všimněte si, že některé databázové systémy vyžadují středník na konci každého příkazu. Středník je standardní ukazatel na konec každého příkazu v SQL. Příklady používají MySQL, takže je vyžadován středník.
Nastavení databáze pro příkladyVytvořte databázi, která demonstruje, jak týmy fungují. Chcete-li pracovat, budete si muset stáhnout dva soubory: DLL.sql a InsertStatements.sql. Poté otevřete terminál a přihlaste se do konzole MySQL pomocí následujícího příkazu (článek předpokládá, že MySQL je již nainstalována v systému):
Mysql -u root -p
Poté zadejte své heslo.
Spusťte následující příkaz. Nazvěme databázi „univerzita“:
VYTVOŘIT DATABÁZI univerzita; USE univerzita; ZDROJ; SOURCE Příkazy pro práci s databázemi1. Zobrazit dostupné databáze ZOBRAZIT DATABÁZE; 2. Vytvoření nové databáze CREATE DATABASE; 3. Výběr databáze pro použití USE; 4. Importujte příkazy SQL ze souboru .sql SOURCE ; 5. Odstranění databáze DROP DATABASE ; Práce s tabulkami 6. Prohlédněte si tabulky dostupné v databázi SHOW TABLES;
Možná budete muset vytvořit omezení pro určité sloupce v tabulce. Při vytváření tabulky můžete nastavit následující omezení:
- buňka tabulky nemůže mít hodnotu NULL;
- primární klíč - PRIMARY KEY (název_sloupce1, název_sloupce2, ...) ;
- cizí klíč - CIZÍ KLÍČ (col_namex1, …, col_namexn) REFERENCE table_name(col_namex1, …, col_namexn) .
Můžete zadat více než jeden primární klíč. V tomto případě získáte složený primární klíč.
PříkladVytvořte tabulku "instruktor":
CREATE TABLE instruktor (ID CHAR(5), jméno VARCHAR(20) NOT NULL, název_oddělení VARCHAR(20), plat NUMERIC(8,2), PRIMÁRNÍ KLÍČ (ID), CIZÍ KLÍČ (jméno_oddělení) REFERENCE oddělení (název_oddělení));
8. Informace o tabulcePomocí následujícího příkazu můžete zobrazit různé informace (typ hodnoty, klíč nebo ne) o sloupcích tabulky:
POPISOVAT ;
Když přidáte data do každého sloupce v tabulce, nemusíte zadávat názvy sloupců.
INSERT IN TO VALUES (, , , ...);
10. Aktualizace dat tabulky UPDATE SET = , = , ... WHERE ; 11. Vymazání všech dat z tabulky DELETE FROM ; 12. Odebrání tabulky DROP TABLE ; Příkazy pro vytváření dotazů13. VYBRATSELECT se používá k načtení dat z konkrétní tabulky:
SELECT , , ... FROM ;
Následující příkaz může zobrazit všechna data z tabulky:
VYBRAT * Z ;
Sloupce tabulky mohou obsahovat duplicitní data. Použijte SELECT DISTINCT k načtení pouze neduplikovaných dat.
SELECT DISTINCT , , … FROM ;
Klíčové slovo WHERE v SELECT můžete použít k zadání podmínek v dotazu:
SELECT , , ... OD WHERE ;
V žádosti mohou být uvedeny následující podmínky:
- srovnání textů;
- porovnání číselných hodnot;
- logické operátory AND (and), OR (nebo) a NOT (negace).
Zkuste následující příkazy. Věnujte pozornost podmínkám uvedeným v KDE:
SELECT * FROM kurz WHERE dept_name=’Comp. Sci.'; SELECT * FROM kurz WHERE kredity>3; SELECT * FROM kurz WHERE dept_name="Comp. Sci." A kredity > 3;
Operátor GROUP BY se často používá s agregačními funkcemi, jako jsou COUNT, MAX, MIN, SUM a AVG k seskupení výstupních hodnot.
SELECT , , … FROM GROUP BY ;
PříkladZobrazme si počet předmětů pro jednotlivé fakulty:
SELECT COUNT(id_kurzu), název_oddělení FROM kurzu GROUP BY název_oddělení;
Klíčové slovo HAVING bylo přidáno do SQL, protože WHERE nelze použít s agregačními funkcemi.
VYBERTE , , ... ZE SKUPINY BY HAVING
PříkladZobrazme si seznam fakult, které mají více než jeden předmět:
SELECT COUNT(id_kurzu), název_oddělení FROM kurzu GROUP BY název_oddělení HAVING COUNT(id_kurzu)>1;
ORDER BY se používá k řazení výsledků dotazu v sestupném nebo vzestupném pořadí. ORDER BY bude řadit vzestupně, pokud není specifikováno ASC nebo DESC.
SELECT , , … FROM ORDER BY , , … ASC|DESC;
PříkladZobrazme seznam kurzů ve vzestupném a sestupném pořadí podle kreditů:
VYBRAT * Z kurzu OBJEDNAT PODLE kreditů; VYBRAT * Z kurzu OBJEDNAT PODLE kreditů DESC;
BETWEEN se používá k výběru datových hodnot z určitého rozsahu. Lze použít číselné a textové hodnoty a také data.
SELECT , , … FROM WHERE BETWEEN AND ;
PříkladZobrazme si seznam instruktorů, jejichž plat je více než 50 000, ale méně než 100 000:
VYBERTE si * OD instruktora, KDE plat MEZI 50000 A 100000;
Operátor LIKE se používá ve WHERE k zadání vyhledávacího vzoru pro podobnou hodnotu.
V LIKE se používají dva bezplatné operátory:
- % (žádný, jeden nebo více znaků);
- _ (jeden znak).
Zobrazme seznam kurzů, jejichž názvy obsahují „do“ a seznam kurzů, jejichž názvy začínají na „CS-“:
SELECT * FROM kurzu WHERE nadpis LIKE ‘%to%’; SELECT * FROM kurzu WHERE course_id LIKE "CS-___";
Pomocí IN můžete zadat více hodnot pro klauzuli WHERE:
SELECT , , … FROM WHERE IN (, , …);
PříkladZobrazme seznam studentů oborů Comp. Sci., Physics and Elec. angl.:
SELECT * FROM student WHERE dept_name IN ('Comp. Sci.', 'Physics', 'Elec. Eng.');
JOIN se používá k propojení dvou nebo více tabulek pomocí společných atributů v nich. Obrázek níže ukazuje různé způsoby připojení k SQL. Všimněte si rozdílu mezi levým vnějším spojením a pravým vnějším spojením:
SELECT , , … FROM JOIN ON = ;
Příklad 1Zobrazíme seznam všech kurzů a relevantní informace o fakultách:
SELECT * FROM kurz JOIN oddělení ON kurz.název_oddělení=název_oddělení;
Zobrazíme seznam všech požadovaných kurzů a podrobnosti o nich:
SELECT prereq.course_id, titul, dept_name, kredity, prereq_id FROM prereq LEFT OUTER JOIN kurz ON prereq.course_id=kurz.id_kurzu;
Zobrazíme seznam všech kurzů bez ohledu na to, zda jsou povinné nebo ne:
SELECT course.course_id, title, dept_name, credits, prereq_id FROM prereq RIGHT OUTER JOIN course ON prereq.course_id=course.course_id;
View je virtuální SQL tabulka vytvořená jako výsledek provedení výrazu. Obsahuje řádky a sloupce a je velmi podobný běžné SQL tabulce. Zobrazení vždy zobrazuje nejnovější informace z databáze.
Vytváření CREATE VIEW AS SELECT, ,... FROM WHERE; Odebrání DROP VIEW ; PříkladVytvořme pohled skládající se z kurzů se 3 kredity:
Tyto funkce se používají k získání souhrnného výsledku souvisejícího s danými daty. Běžně používané agregační funkce jsou následující:
- COUNT (název_sloupce) - vrátí počet řádků;
- SUM (col_name) - vrátí součet hodnot v tomto sloupci;
- AVG (název_sloupce) - vrací průměrnou hodnotu daného sloupce;
- MIN (název_sloupce) - vrací nejmenší hodnotu daného sloupce;
- MAX (název_sloupce) – Vrátí největší hodnotu daného sloupce.
Vnořené poddotazy jsou SQL dotazy, které obsahují klauzule SELECT , FROM a WHERE vnořené do jiného dotazu.
PříkladPojďme si najít kurzy, které byly vyučovány na podzim 2009 a na jaře 2010:
SELECT DISTINCT id_kurzu FROM sekce WHERE semestr = 'Podzim' AND rok= 2009 AND ID_kurzu IN (SELECT id_kurzu FROM sekce WHERE semestr = 'Jaro' AND rok= 2010);
Kirill Pozdeev, překladatel
Jak Yandex používá vaše data a strojové učení k personalizaci služeb -.
SQL (ˈɛsˈkjuˈɛl; anglicky strukturovaný dotazovací jazyk - „strukturovaný dotazovací jazyk“) je deklarativní programovací jazyk používaný k vytváření, úpravě a správě dat v relační databázi.
Soulad se standardy SQL pro různé databáze:
SQL (Structured Query Language - strukturovaný dotazovací jazyk). SQL je primárně informační logický jazyk určený k popisu uložených dat, k načtení uložených dat a k úpravě dat.
SQL není programovací jazyk. Jak se SQL stalo složitějším, stalo se více aplikačním programovacím jazykem a uživatelé nyní mohou používat nástroje pro tvorbu vizuálních dotazů.
SQL je jazyk, který nerozlišuje velká a malá písmena. Řetězce v SQL jsou uzavřeny v jednoduchých uvozovkách.
Jazyk SQL je sbírka příkazů. SQL příkazy se dělí na:
Data Definition Language (DDL) - jazyk pro popis schémat v ANSI, sestává z příkazů, které vytvářejí objekty (tabulky, indexy, pohledy atd.) v databázi (CREATE, DROP, ALTER atd.).
Operátory manipulace s daty (Data Manipulation Language, DML) jsou sadou příkazů, které určují, jaké hodnoty jsou v tabulkách kdykoli prezentovány (INSERT, DELETE, SELECT, UPDATE atd.).
příkazy definice přístupu k datům (Data Control Language, DCL) – sestává z nástrojů, které určují, zda povolit uživateli provádět určité akce nebo ne (GRANT/REVOKE, LOCK/UNLOCK).
Operátory Transaction Control Language (TCL).
Bohužel se tyto termíny nepoužívají univerzálně ve všech implementacích. Jsou zdůrazněny ANSI a jsou užitečné na koncepční úrovni, ale většina programů SQL je málo zpracovává odděleně, takže se v podstatě stávají funkčními kategoriemi příkazů SQL.
VYBERTE sekci PŘIPOJTE SEJednoduché JOIN (=průnik JOIN =INNER JOIN) - znamená zobrazit pouze společné záznamy obou tabulek. Způsob, jakým jsou záznamy považovány za sdílené, určují pole ve výrazu spojení. Například následující položka: FROM t1 JOIN t2 ON t1. id = t2. id
znamená, že se zobrazí záznamy se stejným ID, které existují v obou tabulkách.
LEFT JOIN (nebo LEFT OUTER JOIN) znamená zobrazit všechny záznamy z levé tabulky (ta, který je ve výrazu spojení první) bez ohledu na to, zda existují odpovídající záznamy v pravé tabulce. Pokud v pravé tabulce nejsou žádné záznamy, nastaví se prázdná hodnota NULL.
RIGHT JOIN (nebo RIGHT OUTER JOIN) funguje na rozdíl od LEFT JOIN - zobrazuje všechny záznamy z pravé (druhé) tabulky a pouze ty, které se shodují z levé (první) tabulky.
Další typy spojení JOIN: MINUS - odečítání; FULL JOIN - kompletní spojení; CROSS JOIN - „Každý s každým“ nebo operace karteziánského produktu.
INSERT IGNORE Pokud zadáte klíčové slovo IGNORE v příkazu INSERT s řádky, které mají více hodnot, budou všechny řádky, které mají v této tabulce duplicitní PRIMARY nebo UNIQUE klíče, ignorovány a nebudou vloženy. Pokud nezadáte IGNORE, tato operace vložení se přeruší, když narazí na řádek, který má duplicitní hodnotu pro existující klíč.
Příkaz REPLACE se od INSERT liší pouze tím, že pokud je v tabulce záznam se stejnou hodnotou v indexovaném poli (unikátní index) jako nový záznam, pak se starý záznam před přidáním nového smaže.
AKTUALIZACE< tablename>SET ( | ) .,. .< COLUMN name> = < VALUE expresslon>[KDE< predlcate>| KDE PROUD< cursor name>(*pouze pro přílohu*) ] ; UPDATE peers SET zone= "voip" ; # aktualizovat všechny řádky ve sloupci zóny peers tabulky UPDATE stat SET whp= "13x13x13" WHERE id = 1 ; UPDATE countries SET nm_ukr= ( SELECT del_country. ukrajinsky FROM del_countries WHERE countries. nm_en= del_country. anglicky ) ;Využití WordPressu, nastavení: v tabulce wp_posts smažte všechny výskyty řádku
UPDATE wp_posts SET post_content = REPLACE (post_content, "" , "" );ODSTRANIT Z