Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
Přednáška 5 Úvod do SQL
2
SQL Standardizovaný jazyk relačních databází, vytvořený po představení relačního modelu. SQL je zkratka anglických slov Structured Query Language (strukturovaný dotazovací jazyk). Jde o neprocedurální jazyk – je třeba zadat, jaké informace požadujeme, nikoli jak je získat. Ve skutečnosti nejde o jeden jazyk, ale o různé dialekty různých databázových systémů (ORACLE, MS SQL, MySQL, …). Různé vývojové verze. MySQL implementuje ANSI/ISO standard SQL-92 s rozšířeními až po verze jazyka SQL 2008. Budeme se zabývat primárně dialektem RDBMS MySQL.
3
SQL příkazy SQL příkazy můžeme rozdělit do čtyř skupin.
DML (Data Manipulation Language). Množina příkazů pro manipulaci s daty. DDL (Data Definition Language). Množina příkazů pro definici dat. DCL (Data Control Language). Množina příkazů pro definici řízení přístupových práv. TCL (Transaction Control). Množina příkazů pro řízení transakcí. Speciální příkazy.
4
DML Tato skupina příkazů se používá pro manipulaci s daty. Hlavní příkazy, které spadají do této skupiny jsou: SELECT – vybírá data z databáze. INSERT – vkládá data do databáze. UPDATE – edituje data v databázi. DELETE – odstraňuje data z celých tabulek nebo řádky tabulek odpovídající podmínce. CALL – volá Uložené procedury. LOCK TABLE – zamyká celé tabulky: Zámky čtení (READ) Zámky zápisu (WRITE)
5
DDL Skupina příkazů používající se pro definici databázových struktur. Hlavní příkazy jsou: CREATE – vytváří objekty databáze (i databázi samotnou). ALTER – mění strukturu databázových objektů. DROP – odstraňuje objekty databáze (tabulky, indexy, databáze). TRUNCATE - odstraní všechny záznamy z tabulky, přičemž zachová strukturu tabulky (objekt tabulky). COMMENT – umožní přidávat komentáře k objektům databáze. RENAME – v MySQL umožňuje měnit název tabulky (pozor ne databáze, to bylo možné do verze ).
6
DCL Skupina příkazů DCL se používá pro řízení uživatelských práv.
GRANT – nastavuje uživatelská práva k tabulkám databáze. REVOKE – odebírá přístupová práva přidělená příkazem GRANT.
7
TCL Množina příkazů pro řízení transakcí. Transakce podporují v MySQL pouze tabulky typu InnoDB: COMMIT – potvrzení provedení transakce. SAVEPOINT – definuje záchytný bod transakce, ke kterému se lze během provádění transakce vrátit. ROLLBACK – ruší transakci a vrací se zpět ke stavu původnímu. START TRANSACTION – zahajuje blok transakce. SET TRANSACTION – umožňuje změnit level izolace transakce globálně nebo pro aktuální session.
8
Základní pravidla zápisu
Dobrým a obecně platným pravidlem zápisu SQL je, že příkazy SQL zapisujeme velkými písmeny a názvy db, tabulek a sloupců zapisujeme malými písmeny: Příklad: INSERT INTO prvnidb.studenti (id, jmeno, prijmeni, narozeni) VALUES (1, 'Marek', 'Stejskal', ); Tento příkaz vloží jednu datovou n-tici (řádek dat) do tabulky studenti. Pokud jsme připojeni přímo ke konkrétní databázi prvnidb, můžeme zapisovat zkráceně bez udání názvu databáze: INSERT INTO studenti (id, jmeno, prijmeni, narozeni)
9
CASE Senstive Je potřeba si pamatovat, že SQL NENÍ striktně CASE Sensitive. Budeme se ale tvářit, že JE . Stejně existuje libovůle v názvech objektů. Dobře by vám tak zafungoval i následující příkaz: INSERT INTO Studenti (id, JMENO, prijmeni, rok_Narozeni) VALUES (2, 'Diana', 'Zouharová', ); Rozhodně se tomu vyvarujeme! Zapisujeme názvy objektů vždy přesně tak, jak jsou pojmenovány v databázi.
10
Databáze Vytvoření CREATE Změna ALTER Odstranění DROP
Všechny operace s databází lze vykonávat bez znalosti příslušného příkazu SQL a to pomocí průvodců PHPMyAdmina. Měli byste mít základní představu o syntaxi těchto příkazů. Ukážeme si vytvoření databáze a odstranění. Další si můžete najít v manuálu.
11
Vytvoření databáze Syntaxe: CREATE {DATABASE} [IF NOT EXISTS] db_name [specifikace vytvoření] Specifikace vytvoření: [DEFAULT] CHARACTER SET [=] charset_name | [DEFAULT] COLLATE [=] collation_name {} – povinně volitelné součásti syntaxe [] – volitelné součásti syntaxe
12
CREATE DATABASE `prvnidb` DEFAULT CHARACTER SET utf8
Příklad Vytvoření databáze prvnidb: CREATE DATABASE `prvnidb` DEFAULT CHARACTER SET utf8 COLLATE utf8_czech_ci;
13
Odstranění databáze Odstraněním databáze odstraníme všechny data v ní!
Syntaxe: DROP {DATABASE} [IF EXISTS] db_name Pozor: Nesmíte vymazat defaultní databázi „mysql“. Obsahuje nastavení uživatelských práv, seznam Uložených procedur, nastavení časového pásma a další důležité ukazatele. Přístup k této db by měl mít pouze hlavní administrátor.
14
Tabulka v databázi Vytvoření CREATE Změna ALTER Změna jména RENAME
Odstranění DROP Odstranění všech dat se zachováním struktury TRUNCATE Operace s daty v tabulce: Vložení INSERT Výběr SELECT Odstranění DELETE Editace UPDATE
15
Operace s tabulkami SQL syntax pro vytvoření tabulky či její změnu je v této chvíli pro nás velmi náročný. Obsahuje prvky, kterým bychom v této fázi vašeho studia ještě natolik nerozuměli. Např.: Přesná definice datových typů a jejich součástí Definice indexů, omezení, cizích klíčů Definice nastavení tabulky Definice fyzického rozdělení tabulky v souborovém systému Pro tuto chvíli si vystačíme s průvodcem PHPMyAdmina a budeme tabulky tvořit a upravovat pomocí něj.
16
Příklad Vytvoření jednoduché tabulky pro naše studijní účely v databázi prvnidb: CREATE TABLE `prvnidb`.`studenti` ( `id` INT( 1 ) NOT NULL , `jmeno` VARCHAR( 20 ) CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL , `prijmeni` VARCHAR( 40 ) CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL , `narozeni` DATE NOT NULL , PRIMARY KEY ( `id` ) ) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_czech_ci;
17
Vložení záznamu do tabulky
Máme vytvořenu databázi prvnidb a v ní tabulku studenti. Schéma tabulky je následující: Pro vložení je k dispozici příkaz INSERT: INSERT INTO studenti (id, jmeno, prijmeni, narozeni) VALUES (1, 'Marek', 'Stejskal', ); Zkrácená varianta: INSERT INTO studenti VALUES (1, 'Marek', 'Stejskal', ); id jmeno prijmeni narozeni Prostor pro datové n-tice
18
Vložení více řádků INSERT umožňuje i v jednom příkazu vložit více řádků dat. Tato varianta je rychlejší, než dílčí příkazy (nemusí se znovu ověřovat struktura tabulky). Příklad: INSERT INTO studenti (id, jmeno, prijmeni, rok_narozeni) VALUES (1, 'Marek', 'Stejskal', ) , (2, 'Diana', 'Zouharová', ) , (3, 'Roman', 'Tomík', ) , (4, 'Jakub', 'Stejskal', );
19
Tabulka studenti Do naší tabulky studenti jsme vložili data. Tabulka vypadá následovně: Dále si ukážeme jak záznam v tabulce editovat a odstranit. id jmeno prijmeni narozeni 1 Marek Stejskal 2 Diana Zouharová 3 Šimon Tomík 4 Jakub
20
Editace záznamů Příklad:
Pomocí příkazu UPDATE můžeme měnit všechny atributy daného záznamu (výjimku může tvořit hodnota primárního klíče) nebo jen některé atributy: Příklad: UPDATE studenti SET prijmeni = 'Tomíková' WHERE id = 2; Potřebujeme-li editovat i další atributy záznamu, oddělíme je čárkou. tabulka Atribut = Nová hodnota Podmínka výběru záznamu jmeno = 'Andrea' , prijmeni = 'Tomíková'
21
Editace záznamu Důležitou součástí příkazu UPDATE je klauzule WHERE za kterou uvádíme podmínku výběru záznamu. Jako podmínka se nejčastěji uvádí sloupec primárního klíče. POZOR Neuvedeme-li podmínku WHERE, dojde k editaci všech záznamů dané tabulky!! Editace záznamu je dalším z jednoduchých úkonů, které lze provádět v prostředí PHPMyAdmin.
22
Odstranění záznamu Záznam (řádek) tabulky se odstraňuje vždy jako celý řádek příkazem DELETE. Důležitou roli tak hraje opět podmínka WHERE, pomocí které určíme, o jaký záznam se jedná. POZOR Chybějící podmínka WHERE způsobí odstranění všech řádků tabulky!! Příklad: DELETE FROM studenti WHERE id = 4;
23
Jednoduché dotazy Úkolem příkazu SELECT je vyvolat a zobrazit data z jedné nebo více tabulek. Jde o nejpoužívanější příkaz SQL. Příkaz SELECT a jeho syntax je potřeba ovládat. PHPMyAdmin nedokáže sestavit komplikovaný dotaz s mnoha jeho doplňky. Základy příkazu SELECT si samostatně nastudujte a PRAKTICKY VYZKOUŠEJTE na příkladech 7 kapitoly skript.
24
SELECT Velmi zjednodušený syntax příkazu SELECT:
SELECT [DISTINCT] {* | [seznam_sloupců] | výraz} [FROM tabulka] [WHERE podmínka] [ORDER BY seznam_sloupců] [LIMIT] FROM – udává tabulku, která se má použít. WHERE – filtruje výstup podle podmínky. ODRER BY – určuje řazení výstupu. LIMIT – omezuje výsledný výstup na stanovenou hodnotu.
25
Příklad SELECT jmeno, prijmeni FROM studenti WHERE YEAR(narozeni) > 1989; Výstup: Vyzkoušejte: SELECT 1 +1; SELECT curdate(); jmeno prijmeni Diana Zouharová
26
Zapamatujte si DDL, DML, DCL, TCL Příkazy databáze Příkazy tabulky
Příkazy manipulace dat v tabulce Základy příkazu SELECT
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.