• SQL: univerzální jazyk pro práci s databázemi. SQL "pro figuríny": co začátečníci potřebují vědět

    Překlad, který můžete říci:

    Tento článek vás seznámí se strukturou jazyka SQL a také s některými obecnými pojmy, jako jsou datové typy, které mohou pole obsahovat, a některé nejednoznačnosti, které v SQL existují. Nemusíte si pamatovat každý detail zmíněný v tomto článku. Pouze zde krátká recenze; mnoho podrobností je uvedeno, na které se později odkazují, když ovládají jazyk.

    Jak funguje SQL?

    SQL je jazyk zaměřený speciálně na relační databáze (RDB). Vystupuje dobrá práce, což byste museli udělat, pokud byste používali obecný programovací jazyk, jako je C. Chcete-li vytvořit C RDB, museli byste začít od nuly. Museli byste definovat objekt nazvaný tabulka, který by se mohl rozrůst na libovolný počet řádků, a poté postupně vytvářet procedury pro vkládání a načítání hodnot.

    Pokud byste chtěli najít nějaké konkrétní řetězce, budete muset projít procedurou, jako je následující:

    • Zvažte řádek tabulky.
    • Zkontrolujte, zda je tento řetězec jedním z řetězců, které potřebujete.
    • Pokud ano, uložte jej někam, dokud nebude zkontrolována celá tabulka.
    • Zkontrolujte, zda v tabulce nejsou další řádky.
    • Pokud ano, vraťte se ke kroku 1.
    • Pokud neexistují žádné další řádky, vypište všechny hodnoty uložené v kroku 3.

    (Samozřejmě se nejedná o skutečnou sadu příkazů C, ale pouze o logiku kroků, které měly být zahrnuty v skutečný program.) SQL toto vše udělá za vás. Příkazy v SQL mohou pracovat se všemi skupinami tabulek jako jedna entita a mohou zpracovávat jakékoli množství informací získaných nebo odvozených z nich jako jeden celek.

    Co dělá ANSI?

    Jak jsme si řekli v Úvodu, standard SQL je definován pomocí kódu ANSI (American National Standards Institute). SQL nebyl vynalezen ANSI. Toto je v podstatě vynález IBM. Ale jiné společnosti si SQL okamžitě vzaly. Nejméně jedna společnost (Oracle) získala právo uvádět na trh produkty SQL od IBM.

    Poté, co se na trhu objevila řada konkurenčních SQL programů, ANSI určila standard, do kterého by měly být uvedeny. (Definice takových norem je funkcí ANSI). Poté se však objevily určité problémy. Vznikly v důsledku standardizace ANSI v podobě některých omezení. Protože ANSI ne vždy definuje, co je nejužitečnější, programy se snaží vyhovět standardu ANSI, aniž by jim dovolily je příliš omezovat. To zase vede k náhodným nesrovnalostem. Databázové programy obvykle poskytují ANSI SQL Další funkce a často uvolňovat mnohá omezení. Proto budou brány v úvahu i běžné odrůdy ANSI. I když samozřejmě nemůžeme pokrýt každou výjimku nebo variaci, dobré nápady mají tendenci být přijaty a použity v různých programech, i když nejsou definovány standardem ANSI. ANSI je jakýmsi minimálním standardem a můžete dělat více, než umožňuje, i když při provádění úkolů, které definuje, musíte dodržovat jeho pokyny.

    Interaktivní a vnořené SQL

    Existují dva SQL: Interactive a Nested. Obě formy většinou fungují stejně, ale používají se odlišně. Interaktivní SQL se používá k provozu přímo na databázi a vytváří výstup pro použití svým zákazníkem. V tomto SQL - když zadáte příkaz, bude okamžitě proveden a okamžitě vidíte výstup (pokud existuje).

    Vnořené SQL se skládá z SQL příkazů umístěných uvnitř programů, které jsou obvykle napsány v jiném jazyce (jako je COBOL nebo PASCAL). Díky tomu jsou tyto programy výkonnější a efektivnější.

    S povolením těchto jazyků se však člověk musí vypořádat SQL struktura a styl správy dat, který vyžaduje některá interaktivní rozšíření SQL. Předávání příkazů SQL vnořeným příkazům SQL se „předává“ pro proměnné nebo parametry používané programem, ve kterém byly vnořeny.

    V této knize představíme SQL interaktivním způsobem. To nám umožní diskutovat o příkazech a jejich akcích, aniž bychom se museli starat o to, jak jsou propojeny s jinými jazyky. Interaktivní SQL je forma nejužitečnější pro neprogramátory. Vše, co se naučíte o interaktivním SQL, se v podstatě vztahuje na vnořený formulář. Změny nutné pro použití vnořeného formuláře budou popsány v poslední kapitole této knihy.

    SQL podsekce

    V interaktivních i vnořených SQL formulářích existuje mnoho částí nebo podsekcí. Protože se s touto terminologií při čtení SQL pravděpodobně setkáte, poskytneme vysvětlení. Bohužel se tyto termíny nepoužívají univerzálně ve všech implementacích. Jsou specifikovány ANSI a jsou užitečné na koncepční úrovni, ale většina programů SQL je stěží zpracovává samostatně, takže se v podstatě stávají funkčními kategoriemi příkazů SQL.

    • DDL (Data Definition Language) - takzvaný jazyk popisu schémat v ANSI - se skládá z příkazů, které vytvářejí objekty (tabulky, indexy, pohledy atd.) v databázi.
    • DML (Data Manipulation Language) je sada příkazů, které určují, jaké hodnoty jsou v tabulkách v daném okamžiku přítomny.
    • DCD (Data Control Language) se skládá z funkcí, které určují, zda povolit uživateli provádět určité akce nebo ne. Oni jsou základní části DDL na ANSI.

    Nezapomeňte na tato jména. Není různé jazyky a části příkazů SQL seskupené podle jejich funkce.

    Různé typy dat

    Ne všechny typy hodnot, které mohou být v polích tabulky, jsou logicky stejné. Nejviditelnější rozdíl je mezi čísly a textem. Nemůžete seřadit čísla v abecedním pořadí nebo odečíst jedno jméno od druhého.

    Vzhledem k tomu, že systémy RDB jsou založeny na vztazích mezi částmi informací, různé typy dat musí být od sebe odlišné, aby v nich bylo možné provádět vhodné procesy a srovnání. V SQL se to dělá tak, že každému poli je přiřazen datový typ označující typ hodnoty, které může pole obsahovat. Všechny hodnoty v tomto poli musí být stejného typu. V tabulce Zákazníci například cname a město obsahují řetězce textu k vyhodnocení a snum a cnum jsou čísla. Z tohoto důvodu nemůžete zadat hodnotu Nejvyšší nebo Žádná do pole hodnocení, které má číselný datový typ. Toto omezení je dobré, protože ukládá vašim datům určitou strukturu. Často budete porovnávat některé nebo všechny hodnoty v daném poli, takže možná budete chtít provést akci pouze na určitých řádcích, ne na všech. To byste nemohli udělat, pokud byly hodnoty polí smíšeného datového typu.

    Bohužel definice těchto datových typů je hlavní oblastí, kde se většina komerčních databázových programů a oficiální SQL standard vždy neshodují. Standard ANSI SQL rozpoznává pouze text a číslo, zatímco většina komerčních programů používá jiné speciální typy. Jako DATA (DATE) a TIME (TIME) - ve skutečnosti téměř standardní typy (ačkoli jejich přesný formát se liší). Některé balíčky také podporují typy jako MONEY a BINARY. (PENÍZE jsou speciální "měnový" systém používaný počítači.)

    Všechny informace v počítači jsou přenášeny v binárních číslech a následně převedeny do jiných systémů, abychom je mohli snadno používat a rozumět jim.

    ANSI definuje několik číselné typy, rozdíly mezi nimi jsou docela jemné a někdy zmatené. Povolené datové typy ANSI jsou uvedeny v příloze B. Složitost číselných typů ANSI lze alespoň částečně vysvětlit snahou o to, aby vnořené SQL bylo kompatibilní s řadou dalších jazyků. Dva typy čísel ANSI, INTEGER a DECIMAL (které mohou být zkráceny jako INT a DEC, v tomto pořadí), budou adekvátní pro naše účely, stejně jako pro účely většiny praktických obchodních aplikací. Typ INTEGER lze přirozeně reprezentovat jako DESETINNÉ ČÍSLO, které neobsahuje žádné číslice vpravo od desetinné čárky.

    Typ textu je CHAR (nebo CHAR), který odkazuje na řádek textu. Pole typ CHAR má délku určenou maximálním počtem znaků, které lze do tohoto pole zadat. Většina implementací má také nestandardní typ zvaný VARCHAR, což je textový řetězec a může mít libovolnou délku až do maxima definovaného implementací (obvykle 254 znaků). Hodnoty CHARACTER a VARCHAR jsou uvedeny v jednoduchých uvozovkách jako „text“. Rozdíl mezi CHAR a VARCHAR je ten, že CHAR si musí vyhradit dostatek paměti maximální délkařetězce a VARCHAR přiděluje paměť podle potřeby.

    Typy znaků se skládají ze všech tisknutelných znaků, včetně čísel. Číslo 1 však není totožné se znakem „1“. Znak "1" je pouze tištěný kus textu, který není systémem definován jako číselná hodnota 1. Například 1 + 1 = 2, ale "1" + "1" se nerovná "2". Hodnoty znaků jsou uloženy v počítači jako binární hodnoty, ale uživateli se zobrazují jako tištěný text.

    Převod se provádí podle formátu určeného systémem, který používáte. Tento převodní formát bude jedním ze dvou standardních typů (možná s rozšířeními) používaných v počítačových systémech: kód ASCII (používaný ve všech osobních a malých počítačích) a kód EBCDIC (Extended Binary Decimal Code of Information Interchange) (používaný v velké počítače). Určité operace, jako je abecední řazení hodnot polí, se změní s formátem.

    Při používání typu DATE se musíme řídit trhem, nikoli ANSI. (V systému, který nerozpozná typ DATE, můžete datum samozřejmě deklarovat jako znakové nebo číselné pole, ale většina operací bude časově náročnější.)

    Měli byste si prohlédnout dokumentaci k softwarovému balíčku, který budete používat, abyste přesně zjistili, jaké datové typy podporuje.

    SQL. Nesrovnalosti.

    Z předchozí diskuse můžete pochopit, že mezi produkty ve světě SQL existují různé nekonzistence. SQL se vynořil z komerčního databázového světa jako nástroj a později byl vyvinut do standardu ANSI. Bohužel ANSI ne vždy definuje, co je nejužitečnější, takže se programy snaží vyhovět standardu ANSI, aniž by je příliš omezoval. ANSI je jakýmsi minimálním standardem – můžete dělat více, než umožňuje, ale musíte být schopni získat stejné výsledky na stejném úkolu.

    CO JE TO "UŽIVATEL"?

    SQL se obvykle vyskytuje na počítačových systémech, které mají více než jednoho uživatele, a proto je musí rozlišovat (vaše rodina počítačů může mít libovolný počet uživatelů, ale obvykle neumí rozlišit jednoho uživatele od druhého).

    Typicky má v takovém systému každý uživatel nějaký druh kódu kontroly práv, který ho identifikuje (terminologie se liší). Na začátku relace s počítačem se uživatel přihlásí (zaregistruje) tím, že počítači sdělí, kdo je daným uživatelem, tím, že se identifikuje pomocí konkrétního ID (Identifier). Libovolný počet lidí používajících Access ID jsou individuální uživatelé; a podobně může zastupovat jedna osoba velký počet uživatelé (v různých časech) používající různá přístupová ID SQL. Akce ve většině prostředí SQL jsou přetypovány na speciální přístupové ID, které přesně odpovídá konkrétnímu uživateli. Tabulku nebo jiný objekt vlastní uživatel, který k němu má plné oprávnění. Uživatel může nebo nemusí mít oprávnění k provedení akce s objektem. Pro naše účely souhlasíme s tím, že každý uživatel má potřebná oprávnění k provádění jakékoli akce, dokud se nevrátíme konkrétně k diskusi o oprávněních v kapitole 22. Speciální hodnotu USER lze použít jako argument v příkazu. Ukazuje na dostupné ID uživatele, který příkaz vydal.

    Konvence a terminologie

    Klíčová slova jsou slova, která mají v SQL zvláštní význam. Mohou to být příkazy, ale ne názvy textů nebo objektů. Klíčová slova zdůrazníme jejich psaním VELKÝMI PÍSMENY. Musíte být opatrní, abyste si nezaměnili klíčová slova s ​​výrazy.

    SQL má určité technické termíny, které se používají k jeho popisu. Jsou mezi nimi taková slova jako „žádost“, „nabídka“ a „predikát“, která jsou nejdůležitější v popisu a pochopení jazyka, ale pro SQL neznamenají nic nezávislého.

    Příkazy nebo věty jsou pokyny, které používáte pro přístup k databázi SQL.

    Příkazy se skládají z jedné nebo více samostatných logických částí nazývaných věty.

    Věty začínají klíčovým slovem a skládají se z klíčová slova a argumenty. Můžete se setkat například s větami "FROM Salespeope" a "WHERE city = "Londýn"". Argumenty doplňují nebo mění význam věty. Ve výše uvedených příkladech je argument Prodejci a FROM je klíčové slovo klauzule FROM. Podobně "město = "Londýn"" je argumentem klauzule WHERE.

    Objekty jsou databázové struktury, které jsou pojmenovány a uloženy v paměti. To zahrnuje základní tabulky, pohledy a indexy.

    Abychom vám ukázali, jak týmy vznikají, uděláme to na příkladech. Existuje však formálnější metoda pro popis příkazů pomocí standardizovaného konvence. V dalších kapitolách jej použijeme pro usnadnění, abyste těmto konvencím porozuměli v případě, že se s nimi setkáte v jiných dokumentech SQL.

    Hranaté závorky () označují části, které nelze použít, a tři tečky (...) označují, že vše, co jim předchází, se může opakovat libovolněkrát. slova v úhlové konzoly() jsou speciální termíny, které vysvětlují, co to je. Výrazně jsme zjednodušili standardní SQL terminologii, ale aniž bychom ohrozili její porozumění.

    souhrn

    V této kapitole jsme stručně probrali základy. Ale naším záměrem bylo prolétnout základy SQL, abyste pokryli všechny informace.

    Nyní víte pár věcí o SQL: jaká je jeho struktura, jak se používá, jak reprezentuje data a jak jsou definována (a některé nesrovnalosti, které s tím přicházejí), některé konvence a termíny používané k jejich popisu . To vše je příliš mnoho informací na jednu kapitolu; neočekáváme, že si budete pamatovat všechny tyto podrobnosti, ale v případě potřeby se k nim můžete vrátit později.

    SQL je strukturovaný dotazovací jazyk. SQL neexistuje bez databází - nedají se v něm psát programy a v tomto smyslu to není programovací jazyk jako PHP, ale když se musíte vypořádat s konkrétním DBMS, pak se bez znalosti SQL neobejdete. Můžete na něj psát jednoduché dotazy nebo můžete provádět velké transakce skládající se z několika složitých dotazů. SQL dotaz je druh příkazu do databáze. Takový příkaz může požadovat vrácení informací, které splňují určitá kritéria, nebo může dát pokyn k vymazání jakýchkoli záznamů atd. SQL příkaz je jednoduchý řetězec, Například:

    SELECT * FROM Personál WHERE oddělení

    SQL dotazy se obvykle blíží jednoduchému výrazu v angličtině. Výše uvedený příkaz lze přeložit do ruštiny následovně

    VYBERTE VŠECHNO od zaměstnanců WHERE clwjiertme"

    Celkem srozumitelný tým, škoda, že je to nahrané jen v angličtině. V důsledku provedení takového dotazu DBMS vrátí všechny záznamy z tabulky Zaměstnanci, ve kterých je pole depart* Mit_id rovno třem. V našem příkladu tento dotaz ve skutečnosti vybírá pouze programátory z celé zaměstnanecké základny.

    Pokud jste dosud s DBMS nepracovali, můžete mít rozumnou otázku: kde a jak můžete pracovat daná žádost? Existují tři způsoby, jak provádět SQL dotazy.

    1. Interaktivní prostředí pro interakci s DBMS. Pro většinu DBMS serverů existují klientské programy (vestavěné nebo dodávané třetími stranami), v jejichž pracovním prostředí můžete psát SQL dotazy, spouštět je a získat výsledek. Tyto nástroje obvykle používají správci databází a přímo nesouvisejí s programováním PHP. Příkladem klientského programu MySQL je program MySQL Administrator (http: /www.mysgl.coin/product-s/administratoT/) nebo velmi oblíbený PHP systém phpMyAdmin (http: / /www.phpmyadi'ln.r»et /itummjiage/index.php). Pro začátek postačí již nainstalovaná distribuční sada, která má konzolové rozhraní. Na Linuxu potřebujete příkazový řádek zadáním příkazu mysql otevřete okno s pozvánkou k zadávání SQL dotazů a ve Windows ke spuštění stejného rozhraní musíte spustit soubor mysql. exe z adresáře bin.

    2. Statické SQL dotazy. Obvykle jsou takové dotazy zapsány uvnitř uložených procedur v samotných databázích nebo pevně připojeny do samotných aplikací. Statický SQL dotaz je předdefinovaný a změní se pouze v případě, že je program nebo kód uložené procedury ručně přepsán. Z PHP se takový SQL dotaz provádí pomocí speciálních funkcí, o kterých bude řeč dále.

    3. Dynamické SQL dotazy. NA tento druh zahrnout takové požadavky, i žito při psaní žádosti nelze plně definovat. i "příklad, když píšete program pro získání seznamu zaměstnanců" mt různých odděleních podniku, programátor neví, ci "> o společnosti budou mít oddělení a kteří zaměstnanci do nich budou zahrnuti i „. tato data lze samozřejmě zapsat do programu rigidně, ale s první změnou ve struktuře společnosti může být program vyhozen nebo bude muset být přepsán. Dynamické dotazy umožňují vytvářet programy, které jsou flexibilní vůči změnám dat .V PHP provádějí takové dotazy téměř stejné funkce jako statické, pouze v nich '^in'> Není možné předat některé parametry.

    Souhrnem výše uvedených tří bodů lze říci, že SQL dotazy jsou spouštěny ze speciálních administrativních programů nebo různými způsoby z PHP skriptů.

    Protože DBMS řeší mnoho problémů, SQL musí být také multifunkční jazyk. Existuje několik typů operací, které mohou být< \ ществлять с помощью SQL.

    1. Určení struktury databáze. Tento typ zahrnuje dotazy, které vytvářejí a upravují tabulky a indexy. Obvykle se jedná o příkazy CRE; "E TA' LE, ALI'R TA' LE, ' " '. TE INDEX atd.

    2. Manipulace s daty. Tento typ zahrnuje požadavky na vložení (přesun*a> leni), odstranění nebo úpravu dat v tabulkách. Toto jsou tři hlavní příkazy: INSERT. ODSTRANIT A AKTUALIZOVAT.

    3. Výběr dat Zahrnuje pouze jeden příkaz SELECT. Neprovádí změny v datech sama o sobě, ale umožňuje je získat z databáze. I když se k načítání dat používá pouze jeden příkaz, je velmi výkonný a v aplikacích se používá velmi často.

    4. Správa serveru DBMS. Tento typ zahrnuje především požadavky na správu uživatelů a jejich přístupových práv (například příkaz GRANT).

    Dobrá znalost SQL značně usnadňuje práci programátora při práci s databází. Aplikace mohou být malé, ale mají skvělé funkce pouze díky tomu, že SQL zabere spoustu úkolů.

    Stejně jako v jakékoli jiné oblasti IT existují v SQL standardy - to je ANSI SQL. Zkratka ANSI znamená Amrican National Standards Institute (American National Standards Institute). Nicméně, v neposlední řadě kvůli rozdílu ve funkčnosti samotných DBMS, implementace SQL pro různé

    DBMS se však od sebe liší. V současné době má téměř každý DBMS svůj dialekt, který se většinou příliš neliší od obecného standardu, ale má své vlastní charakteristiky. Například PL/SQL je kompatibilní s Oracle a PostgreSQL a T-SQL se používá pro práci s MS SQL Server.

    Pro následnou práci s databázemi doporučujeme ihned prostudovat standard, se kterým plánujete v budoucnu pracovat. Většině webových vývojářů funkcionalita MySQL DBMS (a lze ji používat zdarma) v tuto chvíli stačí, takže v této knize budou všechny příklady MySQL uvedeny v dialektu této DBMS. Dokumentaci dotazovacího jazyka pro MySQL lze nalézt na www.mysql.com.

    databáze, které by mohly fungovat na mnoha počítačových systémech různé druhy. S jeho pomocí mohou uživatelé skutečně manipulovat s daty bez ohledu na to, zda pracují na osobním počítači, síťové pracovní stanici nebo sálovém počítači.

    Jedním z jazyků, který vznikl jako výsledek vývoje relačního datového modelu, je jazyk SQL (Structured Query Language), který je v současné době velmi rozšířen a stal se standardní jazyk relační databáze. Standard SQL byl vydán Americkým národním standardizačním institutem (ANSI) v roce 1986 a v roce 1987 jej Mezinárodní organizace pro standardy (ISO) přijala jako mezinárodní jazyk. Současný standard SQL je znám jako SQL/92.

    S použitím jakýchkoli norem jsou spojeny nejen četné a zcela zřejmé výhody, ale také určité nevýhody. Především normy směrují vývoj příslušného odvětví určitým směrem; v případě jazyka SQL vede existence silných základních principů v konečném důsledku ke kompatibilitě jeho různých implementací a přispívá jak ke zvýšené přenositelnosti. software a databází obecně a všestrannosti práce správců databází. Na druhou stranu normy omezují flexibilitu a funkčnost konkrétní implementace. Pod jazyková implementace SQL pochopil software SQL příslušného výrobce. Pro rozšíření funkčnosti přidává mnoho vývojářů založených na standardech standardní jazyk SQL různá rozšíření. Je třeba poznamenat, že normy vyžadují jakékoli dokončené jazykové implementace SQL má určité vlastnosti a široce odráží hlavní trendy, které vedou nejen k interoperabilitě mezi všemi konkurenčními implementacemi, ale také přispívají k hodnotě SQL programátorů a uživatelů. relační databáze na moderní trh software.

    Vše konkrétní jazykové implementace poněkud odlišné od sebe navzájem. Je v nejlepším zájmu výrobců zajistit, aby jejich implementace splňovaly aktuální standardy ANSI pro přenositelnost a uživatelský komfort. Každá implementace SQL však obsahuje vylepšení, aby vyhovovala potřebám konkrétního databázového serveru. Tato vylepšení nebo rozšíření jazyka SQL jsou dodatečné příkazy a možnosti, které jsou doplňky standardního balíčku a jsou dostupné v této konkrétní implementaci.

    V současné době je jazyk SQL podporován mnoha desítkami DBMS. různé typy navržený pro širokou škálu počítačových platforem, od osobních počítačů po sálové počítače.

    Všechny jazyky pro manipulaci s daty byly vytvořeny pro mnoho DBMS před příchodem relační databáze, byly zaměřeny na operace s daty reprezentovanými jako záznamy logických souborů. To samozřejmě vyžadovalo, aby uživatel měl podrobné znalosti o organizaci ukládání dat a seriózní snahu specifikovat, jaká data jsou potřeba, kde se nacházejí a jak je získat.

    Uvažovaný jazyk SQL je zaměřen na operace s daty prezentovanými ve formě logicky propojených sad relačních tabulek. Nejdůležitější vlastností jeho struktur je zaměření na konečný výsledek zpracování dat, nikoli na postup při tomto zpracování. Jazyk SQL sám určuje, kde se data nacházejí, indexuje a dokonce i to, jaká nejúčinnější sekvence operací by měla být použita k získání výsledku, a proto není nutné tyto podrobnosti uvádět v databázovém dotazu.

    Úvod do technologie klient-server

    Kvůli expanzi trhu informační služby výrobci softwaru začali vyrábět stále inteligentnější, a tedy rozsáhlé softwarové systémy. Mnoho organizací a jednotlivých uživatelůčasto nemohli umístit zakoupené produkty na své vlastní počítače. Pro výměnu informací a jejich šíření byly vytvořeny počítačové sítě a na speciální souborové servery se začaly instalovat zobecňující programy a data.

    Díky DBMS pracujícím se souborovými servery má mnoho uživatelů přístup ke stejným databázím. Zjednodušuje vývoj různých automatizované systémy vedení organizace. Při tomto přístupu se však veškeré zpracování požadavků z programů nebo z terminálů uživatelských počítačů provádí na nich, proto je pro realizaci i jednoduchého požadavku nutné číst z souborový server nebo do něj zapisovat celé soubory, což vede ke konfliktním situacím a zahlcení sítě. K odstranění těchto nedostatků bylo navrženo technologie klient-server, ale zároveň byl potřeba jediný jazyk pro komunikaci se serverem - volba padla na SQL.

    Technologie klient-server znamená tento druh interakce softwarové komponenty kde tvoří jeden systém. Jak název napovídá, existuje určitý klientský proces, který vyžaduje určité zdroje proces serveru která tyto zdroje poskytuje. Není nutné, aby byli na stejném počítači. Je běžné umístit server na jeden uzel v místní síti a klienty na jiné uzly.

    V kontextu databáze klient spravuje uživatelské rozhraní a aplikační logiku a jedná jako pracovní stanice na kterých běží databázové aplikace. Klient obdrží požadavek od uživatele, zkontroluje syntaxi a vygeneruje dotaz do databáze v SQL nebo jiném databázovém jazyce, který odpovídá aplikační logice. Poté odešle zprávu na server, čeká na odpověď a naformátuje přijatá data pro prezentaci uživateli. Server přijímá a zpracovává dotazy do databáze a poté posílá výsledky zpět klientovi. Takové zpracování zahrnuje kontrolu přihlašovacích údajů klienta, vynucování požadavků na integritu a dotazování a aktualizaci dat. Podporuje také řízení souběžnosti a obnovy.

    Architektura klient-server má řadu výhod.

    Structured Query Language (strukturovaný dotazovací jazyk) nebo SQL- je deklarativní programovací jazyk pro použití v kvazi-relačních databázích. Mnohé z původních vlastností SQL byly převzaty n-ticovými výpočty, ale nedávná rozšíření SQL zahrnují stále více relační algebry.
    SQL byl původně vytvořen IBM, ale mnoho prodejců vyvinulo své vlastní dialekty. Byla přijata jako norma Americkým národním institutem pro normalizaci (ANSI) v roce 1986 a ISO v roce 1987. V SQL Programming Language Standard, ANSI uvedl, že oficiální výslovnost SQL je „es cue el“. Mnoho databázových specialistů však používalo „slangovou“ výslovnost „Sequel“, odrážející původní název jazyka, Sequel, který byl později změněn kvůli konfliktům s obchodní značkou a názvy v IBM. Programování pro začátečníky.
    SQL programovací jazyk byla revidována v roce 1992 a tato verze je známá jako SQL-92. Poté byl 1999 znovu revidován, aby se stal SQL: 1999 (AKA SQL3). Programování pro figuríny. SQL 1999 podporuje objekty, které dříve nebyly podporovány v jiných verzích, ale pouze na konci roku 2001 podporovalo implementace SQL pouze několik systémů správy databází: 1999.
    SQL, přestože je definován jako ANSI a ISO, má mnoho variací a rozšíření, z nichž většina má své vlastní charakteristiky, jako je implementace „PL/SQL“ společnosti Oracle nebo implementace Sybase a Microsoft s názvem „Transact-SQL“, která může uživatele zmást.základy programování. Není také neobvyklé, že komerční implementace opomíjejí podporu klíčových funkcí standardu, jako jsou datové typy, jako je datum a čas, ve prospěch některých vlastních. Výsledkem je, že na rozdíl od ANSI C nebo ANSI Fortran, které lze obvykle přenášet z platformy na platformu bez velkých strukturálních změn, lze dotazy programovacího jazyka SQL jen zřídka přenášet mezi různé databázové systémy bez větších úprav. Většina lidí v databázovém poli se domnívá, že tento nedostatek kompatibility je záměrný, aby zajistil, že každý vývojář vlastní systém správu databáze a vázat kupujícího na konkrétní databázi.
    Jak název napovídá, programovací jazyk SQL je navržen pro konkrétní, omezený účel – dotazování se na data obsažená v relační databázi. Jako takový je to soubor instrukcí programovacího jazyka pro vytváření vzorků dat, spíše než procedurální jazyk jako C nebo BASIC, které jsou navrženy tak, aby řešily mnohem širší škálu problémů. Rozšíření jazyka jako "PL/SQL" jsou navržena tak, aby toto omezení řešila přidáním procedurálních prvků do SQL při zachování výhod SQL. Dalším přístupem je umožnit dotazům SQL vkládat příkazy procedurálního programovacího jazyka a komunikovat s databází. Podporuje například Oracle a další jazyk Java v databázi, zatímco PostgreSQL umožňuje psát funkce v Perlu, Tcl nebo C.
    Jeden SQL vtip: "SQL není ani strukturovaný, ani jazyk." Vtip je v tom, že SQL není Turingův jazyk. .

    Vyberte * z T
    C1 C2
    1 A
    2 b
    C1 C2
    1 A
    2 b
    Vyberte C1 z T
    C1
    1
    2
    C1 C2
    1 A
    2 b
    Vyberte * z T, kde C1=1
    C1 C2
    1 A

    Pokud je daná tabulka T, dotaz Select * from T zobrazí všechny prvky všech řádků v tabulce.
    Ze stejné tabulky dotaz Select C1 from T zobrazí prvky ze sloupce C1 všech řádků v tabulce.
    Ze stejné tabulky dotaz Select * from T where C1=1 zobrazí všechny prvky všech řádků, kde je hodnota sloupce C1 "1".

    SQL klíčová slova

    SQL slova jsou rozdělena do několika skupin.

    První je Data Manipulation Language neboli DML(jazyk pro správu dat). DML je podmnožinou jazyka používaného k dotazování databází, přidávání, aktualizaci a odstraňování dat.

    • SELECT je jedním z nejčastěji používaných příkazů DML a umožňuje uživateli zadat dotaz jako popis požadovaného výsledku jako sady. Dotaz nespecifikuje, jak by měly být výsledky uspořádány - převést dotaz do formy, kterou lze provést v databázi, je úkolem databázového systému, konkrétněji optimalizátoru dotazů.
    • INSERT se používá k přidání řádků (formální sady) do existující tabulky.
    • UPDATE se používá ke změně datových hodnot v existujícím řádku tabulky.
    • DELETE určuje existující řádky, které mají být z tabulky odstraněny.

    Do skupiny DML lze říci, že spadají další tři klíčová slova:

    • ZAČÁTEK PRÁCE (nebo START TRANSACTION, v závislosti na dialektu SQL) lze použít k označení začátku databázové transakce, která se buď zcela spustí, nebo neproběhne vůbec.
    • COMMIT uvádí, že všechny změny dat provedené po potvrzení operace jsou uloženy.
    • ROLLBACK určuje, že všechny změny dat od posledního potvrzení nebo vrácení by měly být zničeny, a to až do bodu, který byl potvrzen do databáze jako "vrácení zpět".

    COMMIT a ROLLBACK se používají v oblastech, jako je kontrola transakcí a zámky. Obě instrukce dokončí všechny aktuální transakce (sady databázových operací) a uvolní všechny zámky při změně dat v tabulkách. Přítomnost nebo nepřítomnost příkazu BEGIN WORK nebo podobného příkazu závisí na konkrétní implementaci SQL.

    Druhá skupina klíčových slov odkazuje na skupinu Data Definition Language nebo DDL (Data Definition Language). DDL umožňuje uživateli definovat nové tabulky a související prvky. Většina komerčních základen SQL data mají vlastní rozšíření DDL, která umožňují kontrolu nad nestandardními, ale obvykle životně důležitými důležité prvky specifický systém.
    Hlavními body DDL jsou příkazy pro vytvoření a odstranění.

    • CREATE určuje objekty (například tabulky), které mají být v databázi vytvořeny.
    • DROP určuje, které existující objekty v databázi budou odstraněny, obvykle trvale.
    • Některé databázové systémy také podporují příkaz ALTER, který umožňuje uživateli upravit existující objekt různými způsoby, například přidáním sloupců do existující tabulky.

    Třetí skupina klíčových slov SQL je Data Control Language nebo DCL (Data Control Language). DCL je zodpovědný za přístupová práva k datům a umožňuje uživateli řídit, kdo má přístup k prohlížení nebo manipulaci s daty v databázi. Jsou zde dvě hlavní klíčová slova:

    • GRANT - umožňuje uživateli provádět operace
    • REVOKE - odebere nebo omezí možnost uživatele provádět operace.

    Databázové systémy využívající SQL

    • InterBase
    • MySQL
    • Věštec
    • PostgreSQL
    • SQL Server

    Jak se stát profesionálem ve vývoji webových stránek a začít vydělávat? Levné video kurzy s úvodním úvodem.

    Klientské programy

    protokol TFTP

    TFTP- Stejný FTP protokol, ale konec protokol UDP(tj. protokol bez garantovaného doručení). Lze použít v místní síti, kde je důležitější přenosová rychlost. V praxi málo používaný.

    FTP- Program se spouští z příkazového řádku.

    Windows Commander- může pracovat jako FTP klient. Umožňuje pracovat se vzdálenými adresáři stejným způsobem jako s místními adresáři.

    NetVampire- Specializovaný FTP klient, který umožňuje stahování velké soubory a stahujte přes špatné kanály.

    SQL (Structured Query Language) je strukturovaný dotazovací jazyk pro relační databáze. Pomocí tohoto jazyka lze formulovat výrazy (dotazy), které extrahují požadovaná data, upravují je, vytvářejí tabulky a mění jejich struktury, určují přístupová práva k datům a mnoho dalšího.

    Dotazy jsou prováděny systémem správy databází (DBMS). Pokud nejste specialistou na vývoj a správu databází, můžete být jejich uživatelem, který prohlíží a/nebo mění data v existujících tabulkách. V mnoha případech se tyto a další databázové operace provádějí pomocí speciální aplikace poskytování uživateli uživatelsky přívětivé rozhraní. Přihlášky se obvykle zapisují speciální jazyky programování (C, Pascal, Visual Basic atd.) a jsou nejčastěji vytvářeny pomocí integrovaných vývojových prostředí, jako je Delphi, C++ Builder apod. K databázi se však lze dostat i bez nich – pouze pomocí SQL. Je třeba také poznamenat, že specializované aplikace obvykle při přístupu k databázi používají fragmenty kódu SQL.

    SQL je tedy široce přijímaný standardní jazyk pro práci s relačními databázemi. Syntaxe tohoto jazyka je natolik jednoduchá, že ji mohou používat i běžní uživatelé, nejen programátoři. V současné době by měl typický uživatel počítače ovládat alespoň textový editor (např. Microsoft Word) a tabulky (například Microsoft Excel). Není to špatné, pokud také umí používat databáze. Existuje mnoho různých DBMS, ale univerzální nástroj pro práci s databázemi existuje pouze jeden – SQL. Základní součástí je znalost SQL, alespoň jeho základů, a schopnost jej aplikovat na vyhledávání a analýzu dat počítačová gramotnost i běžní uživatelé.

    První vývoj systémů pro správu relačních databází (relační DBMS) byl uskutečněn v IBM na počátku 70. let 20. století. Zároveň byl vytvořen datový jazyk, který byl navržen pro práci v těchto systémech. Experimentální verze tohoto jazyka se jmenovala SEQUEL – z angličtiny. Structured English QUEry Language (strukturovaný anglický dotazovací jazyk). nicméně oficiální verze byl nazýván zkráceně - SQL (Structured Query Language). Přesněji řečeno, SQL je podjazyk dat, protože DBMS obsahuje další jazykové prostředky.

    V roce 1981 vydala společnost IBM relační DBMS SQL/DS. Do této doby společnost Relation Software Inc. (dnes je to Oracle Corporation) již vydala svůj relační DBMS. Tyto produkty se okamžitě staly standardem pro systémy správy databází. Mezi tyto produkty patřil i SQL, který se stal de facto standardem pro datové podjazyky. Výrobci jiných DBMS vydali své vlastní verze SQL. Měly nejen základní vlastnosti produktů IBM. Aby dodavatelé získali nějakou výhodu pro „své“ DBMS, zavedli některá rozšíření SQL. Zároveň byly zahájeny práce na vytvoření obecně uznávaného standardu SQL.

    V roce 1986 vydal American National Standards Institute (ANSI) oficiální standard SQL-86, který byl v roce 1989 aktualizován na SQL-89. V roce 1992 byl tento standard pojmenován SQL-92 (ISO/IEC 9075:1992). Nejnovější verze standardu SQL je SQL:2003 (ISO/IEC 9075X:2003).

    Jakákoli implementace SQL v konkrétním DBMS se poněkud liší od standardu deklarovaného výrobcem. Takže mnoho DBMS (např. Microsoft Access 2003, PostgreSQL 7.3) plně nepodporují SQL-92, ale pouze s určitou úrovní souladu. Navíc podporují i ​​prvky, které standard neobsahuje. Vývojáři DBMS se však snaží zajistit, aby nové verze jejich produktů co nejvíce odpovídaly standardu SQL.

    Pozornost. Tento kurz popisuje prvky SQL2003, z nichž ne všechny jsou podporovány stávajícími DBMS. Než je uvedete do praxe, měli byste se ujistit, že budou fungovat ve vašem DBMS. Můžete se o tom dozvědět z technická dokumentace. Většina popsaných prvků odpovídá a více rané verze SQL, zejména rozšířený SQL-92.

    SQL byl koncipován jako jednoduchý dotazovací jazyk pro relační databázi, blízký přirozenému (přesněji angličtině) jazyku. Předpokládalo se, že blízkost formy k přirozenému jazyku udělá z SQL nástroj dostupný pro široké použití. běžní uživatelé databází, nejen programátorů. Původně SQL neobsahoval žádnou z řídicích struktur, které se vyskytují v běžných programovacích jazycích. Požadavky, jejichž syntaxe je poměrně jednoduchá, byly zadávány přímo z konzole jeden po druhém a prováděny ve stejném pořadí. SQL se však nikdy nestal nástrojem pro bankéře, prodejce letenek a letenek, ekonomy a další zaměstnance různých firem využívajících informace uložené v databázích. Jednoduché SQL se pro ně ukázalo jako příliš komplikované a nepohodlné, a to i přes svou blízkost k přirozenému jazyku otázek.

    V praxi se s databází obvykle pracuje prostřednictvím aplikací napsaných programátory v procedurálních jazycích, jako je C, Visual Basic, Pascal, Java atd. Aplikace jsou často vytvářeny ve speciálních vizuálních vývojových prostředích, jako jsou Delphi, Microsoft Access, Visual dBase atd. Vývojář aplikace přitom prakticky nemusí psát programové kódy, protože to za něj dělá vývojový systém. Každopádně práce s programový kód se ukazuje jako minimální. Tyto aplikace jsou pohodlné GUI, který nenutí uživatele zadávat SQL dotazy přímo. Místo toho to dělá aplikace. Aplikace však může nebo nemusí používat SQL pro přístup k databázi. SQL není jediné, i když velmi účinná náprava získávání, přidávání a změna dat, a pokud je možné je použít v aplikaci, pak by to mělo být provedeno.

    Vztahové základy data mohou existovat a existují bez ohledu na aplikace, které poskytují uživatelské rozhraní. Pokud z nějakého důvodu takové rozhraní neexistuje, lze k databázi přistupovat pomocí SQL, pomocí konzole nebo nějaké aplikace, pomocí které se lze k databázi připojit, zadat a odeslat SQL dotaz (například Borland SQL Explorer ).

    Jazyk SQL je považován za deklarativní (popisný) jazyk, na rozdíl od jazyků, ve kterých jsou programy napsány. To znamená, že příkazy SQL popisují, co je třeba udělat, nikoli jak.

    Například pro výběr informací o jménech a pozicích zaměstnanců oddělení 102 z tabulky zaměstnanců stačí provést následující dotaz:

    SELECT Příjmení, Pozice FROM Zaměstnanci WHERE Oddělení=102;

    V ruštině tento výraz zní takto:

    VYBRAT Příjmení, pozice Z Zaměstnanci POKUD oddělení = 102;

    Chcete-li změnit hodnotu " Ivanov "zapnuto" Petrov " sloupec Příjmení , stačí spustit následující dotaz:

    AKTUALIZACE Zaměstnanci SET Příjmení="Petrov" WHERE Příjmení="Ivanov";

    V ruštině tento výraz vypadá takto:

    AKTUALIZACE Zaměstnanci NASTAVENÍM Příjmení ROVNAT SE" Petrov "KDE Příjmení = "Ivanov" ;

    Nemusíte podrobně popisovat akce, které musí DBMS provést, aby z tabulky vybral data uvedená v dotazu. Jednoduše popíšete, co chcete dostávat. V důsledku provedení dotazu DBMS vrátí tabulku obsahující data, která jste požadovali. Pokud v databázi nejsou žádná data odpovídající dotazu, bude vrácena prázdná tabulka.

    nicméně nejnovější verze SQL podporuje příkazy řízení výpočtu, které jsou společné pro procedurální řídicí jazyky (příkazy podmíněného skoku a smyčky). SQL proto nyní není čistě deklarativní jazyk.

    Kromě načítání, přidávání, upravování a mazání dat z tabulek vám SQL umožňuje provádět všechny potřebné akce k vytváření, úpravám a zabezpečení databází. Všechny tyto funkce jsou rozděleny mezi tři komponenty SQL:

    · DML (Jazyk pro manipulaci s daty - jazyk pro manipulaci s daty ) je navržena tak, aby podporovala databázi: select ( VYBRAT ), doplňky ( VLOŽIT ), Změny ( AKTUALIZACE ) a odstranění ( VYMAZAT ) údaje z tabulek. Tyto operátory (příkazy) mohou obsahovat výrazy včetně těch, které se počítají, a také poddotazy – dotazy obsažené v jiném dotazu. Obecně může být výraz dotazu tak složitý, že nemůžete okamžitě říct, co dělá. Složitý dotaz však lze mentálně rozdělit na části, které se snáze analyzují. Podobně jsou složité dotazy sestaveny z relativně snadno srozumitelných výrazů (poddotazů).

    · DDL (Jazyk definice dat - jazyk pro definici dat ) je určen k vytváření, úpravě a mazání tabulek a celé databáze. Příklady příkazů zahrnutých v DDL jsou VYTVOŘIT TABULKU (vytvořit tabulku)," VYTVOŘIT ZOBRAZENÍ (vytvořit pohled) VYTVOŘTE SHEMA (vytvořit schéma) ALTER TABULKA (přebalovací stůl), POKLES (odstranit) atd.

    · DCL (Jazyk ovládání dat - jazyk pro správu dat ) je navržen tak, aby chránil databázi před různými druhy poškození. DBMS poskytuje určitou ochranu dat automaticky. V některých případech by však měla být zvážena další opatření poskytovaná společností DCL.