Základy SQL pre začiatočníkov s lekciami. Programovací jazyk SQL Čo potrebujete

Od autora: Nazvali vás čajníkom? No, táto záležitosť sa dá vyriešiť! Každý samovar bol kedysi čajníkom! Alebo bol raz každý profesionál samovar? Nie, opäť niečo nie je v poriadku! Vo všeobecnosti je MySQL pre začiatočníkov.

Prečo figuríny potrebujú MySQL?

Ak vážne plánujete prepojiť svoj život s internetom, hneď od prvých krokov na „webe“ narazíte na tento DBMS. MySQL možno jednoducho nazvať „celointernetovým“ databázovým systémom. Bez neho sa nezaobíde ani jeden viac či menej seriózny zdroj, nachádza sa v administračnom paneli každého hostingu. A predovšetkým populárne CMS a dokonca aj „domáce“ motory sú postavené s jeho účasťou.

Vo všeobecnosti sa bez tejto platformy nezaobídete. Ale na jeho štúdium budete potrebovať aj správny prístup, správne nástroje a hlavne túžbu a trpezlivosť. Dúfam, že máte dosť posledných ingrediencií. A pripravte sa na to, že sa vám mozgy uvaria a z hlavy vytečie para ako zo skutočnej kanvice

Ale MySQL je pre figuríny také ťažké, iba ak sa ho začnete učiť nesprávne. Vy a ja neurobíme takú chybu a začneme naše zoznámenie s touto technológiou od samého začiatku.

Základné pojmy

Najprv si prejdeme základné pojmy, ktoré v tejto publikácii spomenieme:

Databáza (DB) je hlavnou súčasťou DBMS. Databáza obsahuje tabuľky, ktoré pozostávajú zo stĺpcov a záznamov (riadkov). Bunky vytvorené na priesečníku obsahujú štruktúrované údaje určitého typu.

DBMS (database management system) je súbor všetkých softvérových modulov pre správu databáz.

SQL je štruktúrovaný dotazovací jazyk, s ktorým vývojár „komunikuje“ s jadrom DBMS (serverom). Ako každý programovací jazyk, aj SQL má svoju vlastnú syntax, množinu príkazov a operátorov a podporované dátové typy.

Myslím si, že na začiatok nám stačia teoretické vedomosti. Chýbajúce medzery v teórii „dofarbíme“ praxou. Teraz už zostáva len vybrať ten správny softvérový nástroj.

Výber správneho nástroja

Keď som sa prehrabal celým radom MySQL shellov pre začiatočníkov, uvedomil som si, že jednoducho neexistujú. Všetky softvérové ​​produkty pre správu DBMS vyžadujú už nainštalovaný databázový server. Vo všeobecnosti som sa opäť rozhodol nevynájsť „skúter“ a rozhodol som sa pre domáci balík Denwer. Môžete si ho stiahnuť na oficiálnej webovej stránke.

Už obsahuje všetky komponenty DBMS, čo umožňuje začiatočníkovi začať praktické zoznámenie sa s MySQL ihneď po jednoduchej a priamočiarej inštalácii. Okrem toho Denwer obsahuje niekoľko ďalších nástrojov potrebných pre začínajúceho vývojára: lokálny server, PHP.

Prvé kroky

Nebudem popisovať proces inštalácie „džentlmenskej“ sady, pretože tam sa všetko deje automaticky. Po spustení inštalácie máte čas iba stlačiť potrebné klávesy. Presne to, čo potrebujete vo verzii MySQL pre figuríny.

Po dokončení procesu inštalácie spustite lokálny server a počkajte niekoľko sekúnd. Potom do panela s adresou prehliadača zadajte localhost.

Na stránke „Hurá, funguje to!“ postupujte podľa jedného z odkazov zobrazených na obrázku. Potom sa dostanete do phpMyAdmin - shell na správu databáz.

Kliknutím na odkaz http://downloads.mysql.com/docs/world.sql.zip si stiahnete príklad testovacej databázy z oficiálnej webovej stránky MySQL. Znova prejdite na phpMyAdmin, v hlavnom menu v hornej časti prejdite na kartu „Importovať“. V okne Importovať do aktuálneho nastavte v prvej časti (Súbor na import) hodnotu na Prehľadávať počítač.

V okne Prieskumník vyberte archív so stiahnutou vzorovou databázou. Nezabudnite kliknúť na tlačidlo „OK“ v dolnej časti hlavného okna.

Odporúčam vám, aby ste zatiaľ nemenili zadané hodnoty parametrov. To môže viesť k nesprávnemu zobrazeniu importovaných zdrojových údajov. Ak systém phpMyAdmin vygeneruje chybu, že nedokáže rozpoznať algoritmus kompresie databázy, rozbaľte ho a zopakujte celý proces importu od začiatku.

Ak všetko prebehlo v poriadku, potom sa v hornej časti zobrazí hlásenie programu, že import bol úspešný a ďalšie (slovo) sa objaví vľavo v zozname databázy.

Pozrime sa na jeho štruktúru zvnútra, aby ste si jasnejšie predstavili, s čím sa musíte popasovať.

Kliknite na názov databázy MySQL pre začiatočníkov. Pod ním sa zobrazí zoznam tabuliek, z ktorých sa skladá. Kliknite na jeden z nich. Potom prejdite na hornú položku ponuky „Štruktúra“. V hlavnej pracovnej oblasti sa zobrazí štruktúra tabuľky: názvy všetkých stĺpcov, typy údajov a všetky atribúty.

Vitajte vo vývoji databáz pomocou štandardného dotazovacieho jazyka SQL. Systémy správy databáz (DBMS) majú veľa nástrojov, ktoré bežia na širokej škále hardvérových platforiem.

  • Základy relačnej databázy

    V tejto kapitole... | Organizačné informácie | Čo je databáza | Čo je to DBMS | Porovnanie databázových modelov | Čo je to relačná databáza

  • Základy SQL

    V tejto kapitole... | Čo je SQL | SQL mylné predstavy | Pohľad na rôzne štandardy SQL | Úvod do štandardných SQL príkazov a rezervovaných slov | Predstavuje čísla, symboly, dátumy, časy a iné typy údajov | Nedefinované hodnoty a obmedzenia

  • komponenty SQL

    V tejto kapitole... | Vytvorenie databázy | Spracovanie údajov | Ochrana databázy | SQL je jazyk špeciálne navrhnutý na vytváranie a udržiavanie údajov v relačných databázach. A hoci firmy dodávajúce systémy na správu takýchto databáz ponúkajú vlastné implementácie SQL, samotný vývoj jazyka je určovaný a kontrolovaný normou ISO/ANSI.

  • Vytváranie a udržiavanie jednoduchej databázy

    V tejto kapitole... | Vytvorte, upravte a odstráňte tabuľku z databázy pomocou nástroja RAD. | Vytvorte, upravte a odstráňte tabuľku z databázy pomocou SQL. | Prenos databázy do iného DBMS.

  • Vytvorenie relačnej databázy s viacerými tabuľkami

    V tejto kapitole... | Čo by malo byť v databáze | Definovanie vzťahov medzi prvkami databázy | Prepojenie tabuliek pomocou kľúčov | Návrh integrity údajov | Normalizácia databázy | Táto kapitola predstaví príklad vytvorenia multitabuľkovej databázy.

  • Manipulácia s údajmi z databázy

    V tejto kapitole... | Práca s údajmi | Získanie potrebných údajov z tabuľky | Zobrazenie informácií vybraných z jednej alebo viacerých tabuliek | Aktualizácia informácií v tabuľkách a zobrazeniach | Pridanie nového riadku do tabuľky

  • Definovanie hodnôt

    V tejto kapitole... | Použitie premenných na zníženie redundantného kódovania | Získavanie často požadovaných informácií umiestnených v poli databázovej tabuľky | Kombinovanie jednoduchých hodnôt na vytváranie zložených výrazov | Táto kniha neustále zdôrazňuje, aká dôležitá je štruktúra databázy pre zachovanie integrity databázy.

  • Zložité výrazy s významom

    V tejto kapitole... | Používanie príkazov s podmieneným prípadom | Konverzia dátovej položky z jedného dátového typu na iný | Ušetrite čas zadávania údajov pomocou výrazov s hodnotou záznamu | V kapitole 2 sa SQL nazýval dátový podjazyk.

  • "Cielenie" na požadované údaje

    V tejto kapitole... | Určenie požadovaných tabuliek | Oddelenie potrebných riadkov od všetkých ostatných | Vytváranie účinných doložiek kde | Ako pracovať s nulovými hodnotami | Vytváranie zložených výrazov s logickými spojkami | Zoskupenie výstupu výsledkov dotazu podľa stĺpca

  • Vzťahoví operátori

    V tejto kapitole... | Spojovacie stoly, ktoré majú podobnú štruktúru | Zlučovacie tabuľky, ktoré majú rôznu štruktúru | Získanie potrebných údajov z viacerých tabuliek | SQL je dotazovací jazyk používaný v relačných databázach.

  • Používanie vnorených dopytov

    V tejto kapitole... | Načítanie údajov z viacerých tabuliek pomocou jedného príkazu SQL | Vyhľadanie údajových položiek porovnaním hodnoty z jednej tabuľky so súborom hodnôt z inej | Vyhľadanie údajových položiek porovnaním hodnoty z jednej tabuľky s jednou hodnotou vybranou pomocou príkazu select z inej tabuľky

  • Rekurzívne dopyty

  • Zabezpečenie databázy

    V tejto kapitole... | Riadenie prístupu k databázovým tabuľkám | Rozhodovanie o udelení prístupu | Udelenie prístupových povolení | Zrušenie oprávnenia na prístup | Zabránenie pokusom o neoprávnený prístup

  • Ochrana dát

    V tejto kapitole... | Ako sa vyhnúť poškodeniu databázy | Problémy spôsobené simultánnymi operáciami | Riešenie týchto problémov pomocou motorov SQL | Nastavenie požadovanej úrovne zabezpečenia pomocou príkazu set transakcie

  • Používanie SQL v aplikáciách

    V tejto kapitole... | SQL v aplikácii | Zdieľanie SQL s procedurálnymi jazykmi | Ako sa vyhnúť nekompatibilite | Kód SQL vložený do kódexu postupu | Volanie modulov SQL z kódu procedúry | Volanie SQL z nástroja RAD | V predchádzajúcich kapitolách sme sa venovali najmä SQL príkazom jednotlivo, t.j. Bola sformulovaná úloha spracovania údajov a bol pre ňu vytvorený SQL dotaz.

  • ODBC a JDBC

    V tejto kapitole... | Definícia ODBC | Popis častí ODBC | Používanie ODBC v prostredí klient/server | Používanie ODBC na internete | Používanie ODBC v lokálnych sieťach | Používanie JDBC | Každý rok sú počítače jednej organizácie alebo niekoľkých rôznych organizácií stále viac navzájom prepojené. Preto je potrebné vytvoriť zdieľaný prístup k databázam cez sieť.

  • SQL:2003 a XML

    V tejto kapitole... | Používanie SQL s XML | XML, databázy a internet | Jednou z najvýznamnejších nových funkcií SQL:2003 je jeho podpora pre súbory XML (extensible Markup Language), ktoré sa čoraz viac stávajú univerzálnym štandardom na výmenu údajov medzi rôznymi platformami.

  • Kurzory

    V tejto kapitole... | Definovanie rozsahu kurzora v príkaze deklarovať | Otvára sa kurzor | Vzorkovanie údajov riadok po riadku | Zatvorenie kurzora | SQL sa líši od väčšiny najpopulárnejších programovacích jazykov v tom, že vykonáva operácie s údajmi všetkých riadkov tabuľky súčasne, zatiaľ čo procedurálne jazyky spracovávajú údaje riadok po riadku.

  • Dnes sú kurzy SQL „pre figuríny“ čoraz populárnejšie. Dá sa to vysvetliť veľmi jednoducho, pretože v modernom svete stále častejšie nájdete takzvané „dynamické“ webové služby. Vyznačujú sa pomerne flexibilným plášťom a sú založené na Všetci začínajúci programátori, ktorí sa rozhodnú venovať webovým stránkam, sa najskôr zapíšu do kurzov SQL „pre figuríny“.

    Prečo sa učiť tento jazyk?

    V prvom rade sa SQL vyučuje s cieľom ďalej vytvárať širokú škálu aplikácií pre jeden z najpopulárnejších blogových motorov súčasnosti - WordPress. Po absolvovaní niekoľkých jednoduchých lekcií budete môcť vytvárať dopyty akejkoľvek zložitosti, čo len potvrdzuje jednoduchosť tohto jazyka.

    Čo je SQL?

    Alebo štruktúrovaný dopytovací jazyk bol vytvorený s jediným cieľom: určiť ich, poskytnúť k nim prístup a spracovať ich v pomerne krátkych časových úsekoch. Ak poznáte význam SQL, pochopíte, že tento server je klasifikovaný ako takzvaný „neprocedurálny“ jazyk. To znamená, že jeho možnosti zahŕňajú iba popis akýchkoľvek komponentov alebo výsledkov, ktoré chcete na stránke v budúcnosti vidieť. Kedy však presne neuvádza, aké výsledky sa dosiahnu. Každá nová požiadavka v tomto jazyku je ako ďalšia „nadstavba“. Dotazy sa budú vykonávať v poradí, v akom sú zadané do databázy.

    Aké postupy je možné vykonať pomocou tohto jazyka?

    Napriek svojej jednoduchosti vám databáza SQL umožňuje vytvárať širokú škálu dopytov. Čo teda môžete urobiť, ak sa naučíte tento dôležitý programovací jazyk?

    • vytvoriť širokú škálu tabuliek;
    • prijímať, ukladať a upravovať prijaté údaje;
    • zmeniť štruktúru tabuľky podľa vlastného uváženia;
    • skombinovať prijaté informácie do jednotlivých blokov;
    • vypočítať prijaté údaje;
    • zabezpečiť úplnú ochranu informácií.

    Aké príkazy sú v tomto jazyku najobľúbenejšie?

    Ak sa rozhodnete absolvovať kurz SQL for Dummies, dostanete podrobné informácie o príkazoch, ktoré sa používajú pri vytváraní dopytov pomocou neho. Najbežnejšie sú dnes:

    1. DDL je príkaz, ktorý definuje dáta. Používa sa na vytváranie, úpravu a mazanie širokej škály objektov v databáze.
    2. DCL je príkaz, ktorý manipuluje s údajmi. Používa sa na poskytovanie prístupu k informáciám v databáze rôznym používateľom, ako aj na používanie tabuliek alebo zobrazení.
    3. TCL je tím, ktorý riadi rôzne transakcie. Jeho hlavným účelom je určiť priebeh transakcie.
    4. DML - manipuluje s prijatými údajmi. Jeho úlohou je umožniť používateľovi presúvať rôzne informácie z databázy alebo ich tam zadávať.

    Typy privilégií, ktoré existujú na tomto serveri

    Privilégiá sa týkajú tých akcií, ktoré môže konkrétny používateľ vykonávať v súlade so svojím statusom. Najminimálnejšie je samozrejme bežné prihlásenie. Samozrejme, privilégiá sa môžu časom meniť. Staré budú vymazané a nové budú pridané. Dnes všetci, ktorí absolvujú kurzy SQL Server „pre figuríny“, vedia, že existuje niekoľko typov povolených akcií:

    1. Typ objektu – používateľ môže vykonávať ľubovoľný príkaz len vo vzťahu ku konkrétnemu objektu, ktorý sa nachádza v databáze. Zároveň sa privilégiá pre rôzne objekty líšia. Sú tiež viazané nielen na konkrétneho používateľa, ale aj na tabuľky. Ak niekto pomocou svojich schopností vytvoril tabuľku, považuje sa za jej vlastníka. Preto má právo prideliť nové privilégiá iným používateľom súvisiace s informáciami v ňom.
    2. Typ systému je takzvané dátové autorské právo. Používatelia, ktorí získali takéto privilégiá, môžu v databáze vytvárať rôzne objekty.

    História SQL

    Tento jazyk vytvorilo výskumné laboratórium IBM v roku 1970. V tom čase bol jeho názov mierne odlišný (SEQUEL), no po niekoľkých rokoch používania bol zmenený, mierne skrátený. Napriek tomu aj dnes mnohí svetoznámi programátorskí experti stále vyslovujú tento názov staromódnym spôsobom. SQL bol vytvorený s jediným cieľom – vymyslieť jazyk, ktorý by bol taký jednoduchý, že by sa ho bez problémov naučili aj bežní používatelia internetu. Zaujímavosťou je, že v tom čase nebol SQL jediným takýmto jazykom. V Kalifornii iná skupina špecialistov vyvinula podobný Ingres, ale nikdy sa nerozšíril. Pred rokom 1980 existovalo niekoľko variácií SQL, ktoré sa od seba len mierne líšili. Aby sa predišlo nedorozumeniam, v roku 1983 vznikla štandardná verzia, ktorá je populárna dodnes. Kurzy SQL „pre dummy“ vám umožnia dozvedieť sa o službe oveľa viac a naplno si ju preštudovať za pár týždňov.

    Structured Query Language alebo SQL je deklaratívny programovací jazyk na použitie v kvázi relačných databázach. Mnohé z pôvodných funkcií SQL boli prevzaté z n-ticového počtu, ale najnovšie rozšírenia SQL zahŕňajú čoraz viac relačnej algebry.
    SQL bol pôvodne vytvorený spoločnosťou IBM, ale mnohí predajcovia vyvinuli svoje vlastné dialekty. Ako normu ju prijal Americký národný inštitút pre normalizáciu (ANSI) v roku 1986 a ISO v roku 1987. V štandarde programovacieho jazyka SQL ANSI uviedla, že oficiálna výslovnosť SQL je „es q el“. Mnoho databázových špecialistov však používalo „slangovú“ výslovnosť „Sequel“, ktorá odráža pôvodný názov jazyka Sequel, ktorý bol neskôr zmenený v dôsledku konfliktu ochrannej známky a názvu s IBM. Programovanie pre začiatočníkov.
    SQL programovací jazyk bola revidovaná v roku 1992 a táto verzia je známa ako SQL-92. 1999 bol potom znova revidovaný, aby sa stal SQL:1999 (AKA SQL3). Programovanie pre figuríny. SQL 1999 podporuje objekty, ktoré predtým neboli podporované v iných verziách, ale koncom roku 2001 podporovalo implementácie SQL iba niekoľko systémov správy databáz: SQL 1999.
    SQL, hoci je definovaný ako ANSI a ISO, má mnoho variácií a rozšírení, z ktorých väčšina má svoje vlastné charakteristiky, ako napríklad implementácia „PL/SQL“ od Oracle Corporation alebo implementácia Sybase a Microsoftu s názvom „Transact-SQL“, čo môže byť mätúce. ktorí poznajú základy programovania. Nie je nezvyčajné ani to, že komerčné implementácie vynechávajú podporu hlavných funkcií štandardu, akými sú dátové typy ako dátum a čas, pričom uprednostňujú nejaký vlastný variant. Výsledkom je, že na rozdiel od ANSI C alebo ANSI Fortran, ktoré sa zvyčajne dajú preniesť z platformy na platformu bez veľkých štrukturálnych zmien, dotazy programovacieho jazyka SQL možno len zriedka prenášať medzi rôzne databázové systémy bez výrazných úprav. Väčšina ľudí v databázovom priemysle verí, že tento nedostatok kompatibility je zámerný, aby každý vývojár mal k dispozícii svoj vlastný systém správy databáz a pripojil kupujúceho ku konkrétnej databáze.
    Ako už názov napovedá, programovací jazyk SQL je určený na špecifické, obmedzené účely – dotazovanie sa na údaje obsiahnuté v relačnej databáze. Ako taký je to súbor inštrukcií programovacieho jazyka na vytváranie dátových vzoriek, a nie procedurálny jazyk ako C alebo BASIC, ktoré sú určené na riešenie oveľa širšieho spektra problémov. Jazykové rozšírenia ako "PL/SQL" sú navrhnuté tak, aby vyriešili toto obmedzenie pridaním procedurálnych prvkov do SQL pri zachovaní výhod SQL. Ďalším prístupom je vloženie príkazov procedurálneho programovacieho jazyka do SQL dotazov a interakcia s databázou. Napríklad Oracle a ďalšie podporujú Javu v databáze, zatiaľ čo PostgreSQL umožňuje písať funkcie v jazyku Perl, Tcl alebo C.
    Jeden vtip o SQL: "SQL nie je ani štruktúrovaný, ani jazyk." Vtip je v tom, že SQL nie je Turingov 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

    Vzhľadom na tabuľku T dotaz Select * from T zobrazí všetky prvky všetkých riadkov v tabuľke.
    Z tej istej tabuľky dotaz Select C1 from T zobrazí prvky zo stĺpca C1 všetkých riadkov v tabuľke.
    Dotaz Select * from T kde C1=1 z tej istej tabuľky zobrazí všetky prvky všetkých riadkov, kde je hodnota stĺpca C1 "1".

    SQL kľúčové slová

    Slová SQL sú rozdelené do niekoľkých skupín.

    Prvým je Data Manipulation Language alebo DML(jazyk správy údajov). DML je podmnožinou jazyka používaného na dopytovanie databáz a pridávanie, aktualizáciu a odstraňovanie údajov.

    • SELECT je jedným z najčastejšie používaných príkazov DML a umožňuje používateľovi zadať dotaz ako súbor popisu požadovaného výsledku. Dotaz nešpecifikuje, ako majú byť výsledky usporiadané - preložiť dotaz do podoby, ktorá sa dá vykonať v databáze, je úlohou databázového systému, konkrétnejšie optimalizátora dotazov.
    • INSERT sa používa na pridanie riadkov (formálnej sady) do existujúcej tabuľky.
    • UPDATE sa používa na zmenu údajových hodnôt v existujúcom riadku tabuľky.
    • DELETE určuje existujúce riadky, ktoré sa z tabuľky odstránia.

    Tri ďalšie kľúčové slová možno povedať, že spadajú do skupiny DML:

    • ZAČIATOK PRÁCE (alebo START TRANSACTION, v závislosti od dialektu SQL) možno použiť na označenie začiatku databázovej transakcie, ktorá buď dokončí všetky, alebo sa vôbec nevykoná.
    • COMMIT uvádza, že všetky zmeny údajov vykonané po vykonaní operácií sa uložia.
    • ROLLBACK určuje, že všetky zmeny údajov po poslednom potvrdení alebo vrátení musia byť zničené až do bodu, ktorý bol zaznamenaný v databáze ako „vrátenie späť“.

    COMMIT a ROLLBACK sa používajú v oblastiach, ako je kontrola transakcií a uzamykanie. Obe inštrukcie dokončia všetky aktuálne transakcie (množiny operácií v databáze) a odstránia všetky zámky pri zmene údajov v tabuľkách. Prítomnosť alebo absencia príkazu BEGIN WORK alebo podobného príkazu závisí od konkrétnej implementácie SQL.

    Druhá skupina kľúčových slov patrí do skupiny Data Definition Language alebo DDL (Data Definition Language). DDL umožňuje užívateľovi definovať nové tabuľky a ich pridružené prvky. Väčšina komerčných databáz SQL má svoje vlastné rozšírenia DDL, ktoré umožňujú kontrolu nad neštandardnými, ale zvyčajne životne dôležitými prvkami konkrétneho systému.
    Hlavnými bodmi DDL sú príkazy na vytvorenie a odstránenie.

    • CREATE určuje objekty (napríklad tabuľky), ktoré sa vytvoria v databáze.
    • DROP určuje, ktoré existujúce objekty v databáze budú vymazané, zvyčajne natrvalo.
    • Niektoré databázové systémy podporujú aj príkaz ALTER, ktorý umožňuje užívateľovi modifikovať existujúci objekt rôznymi spôsobmi, napríklad pridaním stĺpcov do existujúcej tabuľky.

    Tretia skupina SQL kľúčových slov je Data Control Language alebo DCL (Data Control Language). DCL je zodpovedný za prístupové práva k údajom a umožňuje používateľovi kontrolovať, kto má prístup k prezeraniu alebo manipulácii s údajmi v databáze. Sú tu dve hlavné kľúčové slová.

    V tomto materiáli som sa snažil spojiť všetky hlavné body Transact-SQL, ktorý pomôže začínajúcim databázovým programátorom zvládnuť tento jazyk a písať dotazy a aplikácie v jazyku Transact-SQL.

    Programovanie databáz a konkrétnejšie databázy so systémom Microsoft SQL Server sa stali veľmi populárnymi, a preto som sa rozhodol vytvoriť akúsi mini referenčnú knihu, v ktorej nájdete všetky hlavné body s vysvetleniami a samozrejme príkladmi.

    Na precvičenie písania SQL dotazov alebo vytvárania databázových objektov môžete v čase zostavovania príručky použiť bezplatnú edíciu SQL Server Express, najnovšia verzia je Microsoft SQL Server 2014 Express.

    Referencia Transact-SQL pre začiatočníkov - popis referencie

    Táto referenčná kniha bude vyzerať takto, najprv uvediem malý obsah s navigáciou, potom začne samotná príručka, ku každej položke budú komentáre, vysvetlenia a príklady. Tiež, ak sme už podrobne preskúmali alebo použili niekde v materiáloch na našej webovej stránke tento alebo ten predmet alebo akciu, samozrejme poskytnem odkazy, aby ste si mohli pozrieť podrobné príklady alebo ako použiť tú alebo onú akciu v praxi .

    Keďže obsiahnuť úplne všetko sa jednoducho nedá, tak sa nečudujte, že ste tu niečo nenašli. Ešte raz opakujem, že táto príručka bola vytvorená pre začínajúcich programátorov Transact-SQL, ako aj pre jednoduchých správcov, ktorí pravidelne potrebujú sťahovať niektoré údaje zo servera SQL.

    Pre podrobné štúdium jazyka T-SQL odporúčam prečítať si moju knihu „The T-SQL Programmer’s Way. Návod na jazyk Transact-SQL“, v ktorom hovorím o jazyku T-SQL čo najpodrobnejšie, s veľkým množstvom príkladov.

    Databáza

    Dokonca aj začínajúci programátor Transact-SQL by mal vedieť, ako vytvoriť databázu alebo zmeniť jej vlastnosti, takže predtým, ako sa pozrieme na tabuľky, pohľady, funkcie a všetko ostatné, pozrime sa na proces vytvárania, úpravy a odstraňovania databázy Transact-SQL.

    Tvorba

    Ak chcete vytvoriť databázu, musíte spustiť nasledujúci dotaz:

    Test CREATE DATABASE

    kde test je názov databázy.

    Viac o vytvorení databázy na SQL serveri sme si povedali v materiáli Ako vytvoriť databázu v MS SQL 2008

    Odstránenie

    Ak potrebujete vymazať databázu, môžete použiť dotaz:

    DROP DATABASE test

    Zmeniť

    Na zmenu parametrov databázy môžete použiť grafické rozhranie Management Studio, v ktorom sú všetky parametre podrobne popísané, alebo môžete posielať dopyty ALTER DATABASE, napríklad pre povolenie automatickej kompresie testovacej databázy, použite nasledujúci dotaz

    ALTER DATABASE test SET AUTO_SHRINK ON; --A na vypnutie testu ALTER DATABASE SET AUTO_SHRINK OFF;

    Dúfam, že je to jasné, ALTER DATABASE je príkaz na zmenu, test je názov databázy, ktorá sa mení, SET je príkaz označujúci, že zmeníme parametre databázy, AUTO_SHRINK samotný parameter, ON/OFF hodnota parametra.

    Typy údajov

    Najbežnejšie a najčastejšie používané

    Presné čísla

    • tinyint - 1 bajt
    • smallint - 2 bajty
    • int - 4 bajty
    • bigint - 8 bajtov
    • číselné a desiatkové ( typ s pevnou presnosťou a mierkou)
    • peniaze - 8 bajtov
    • malé peniaze - 4 bajty

    Približné čísla

    • float [ (n) ] – veľkosť závisí od n (n môže byť od 1 do 53, predvolená hodnota je 53)
    • skutočné - 4 bajty

    dátum a čas

    • dátum – dátum
    • čas - čas
    • datetime - dátum vrátane času dňa so zlomkami sekundy v 24-hodinovom formáte.

    Reťazce znakov

    • char [ (n) ] – reťazec s pevnou dĺžkou, kde n je dĺžka reťazca (od 1 do 8000). Veľkosť úložiska je n bajtov.
    • varchar [ (n | max) ] je reťazec s pevnou dĺžkou, kde n je dĺžka reťazca (od 1 do 8000). Ak zadáte max, potom maximálna veľkosť úložiska bude 2^31-1 bajtov (2 GB), a ak zadáte n, potom skutočná dĺžka zadaných údajov plus 2 bajty.
    • text – dáta reťazca s premenlivou dĺžkou, maximálna veľkosť 2 147 483 647 bajtov (2 GB).
    • nchar[(n)] je reťazec Unicode s pevnou dĺžkou, kde n je dĺžka reťazca (od 1 do 4000). Veľkosť úložiska je dvojnásobkom hodnoty n v bajtoch
    • nvarchar [ (n | max) ] je reťazec Unicode s pevnou dĺžkou, kde n je dĺžka reťazca (od 1 do 4000). Ak zadáte max, maximálna veľkosť úložiska bude 2^31-1 bajtov (2 GB), a ak n, potom dvojnásobok skutočnej dĺžky zadaných údajov plus 2 bajty.
    • ntext sú údaje reťazca s premenlivou dĺžkou s maximálnou dĺžkou reťazca 1 073 741 823 bajtov.

    Binárne dáta

    • binárne [ (n) ] - binárne dáta s pevnou dĺžkou, veľkosť n bajtov, kde n je hodnota od 1 do 8000. Veľkosť úložiska je n bajtov.
    • varbinary [ (n | max) ] - binárne dáta s premenlivou dĺžkou, kde n môže mať hodnotu od 1 do 8000. Ak zadáte max, maximálna veľkosť úložiska bude 2^31-1 bajtov (2 GB). Keď je zadané n, veľkosť úložiska je skutočná dĺžka vstupných dát plus 2 bajty.
    • image - binárne dáta s premenlivou dĺžkou, s veľkosťou od 0 do 2^31 - 1 (2 147 483 647) bajtov.

    Iné

    • xml – ukladanie xml údajov. Podrobne sme diskutovali v materiáli Transact-sql - práca s xml a ak vôbec neviete, čo je XML, potom sme o tom hovorili v článku Základy XML pre začiatočníkov.
    • tabuľka – uloženie výslednej sady riadkov.

    Tabuľky

    Na tejto stránke je dosť príkladov vytvárania tabuliek, keďže takmer v každom článku týkajúcom sa SQL uvádzam príklad vytvorenia testovacej tabuľky, ale na upevnenie vedomostí si vytvorte, upravte a vymažte testovaciu tabuľku. Pozrime sa, ako sa nastavujú dátové typy polí v tabuľkách Transact-SQL.

    Tvorba

    CREATE TABLE test_table( IDENTITY(1,1) NOT NULL, --identifikátor, int celé číslo, nie sú povolené žiadne hodnoty NULL (50) NULL, --celý názov, reťazec 50 znakov, hodnoty NULL sú povolené NULL, -- súčet, približná číselná hodnota, hodnoty NULL sú povolené NULL, --dátum a čas, hodnoty NULL sú povolené (100) NULL --reťazec dlhý 100 znakov, hodnoty NULL sú povolené) ON GO

    Pridanie stĺpca

    ALTER TABLE test_table ADD prosto_pole numeric(18, 0) NULL
    • test_table je názov tabuľky;
    • add — príkaz pridať;
    • prosto_pole – názov stĺpca;
    • pole numeric(18, 0) – typ údajov nového stĺpca;
    • NULL – parameter, ktorý znamená, že do tohto poľa možno uložiť hodnotu NULL.

    Zmena typu údajov

    Zmeňme dátový typ nového poľa, ktoré sme práve vytvorili (prosto_pole) z numeric(18, 0) na bigint a zväčšme dĺžku poľa komentára na 300 znakov.

    ALTER TABLE test_table ALTER COLUMN prosto_pole bigint; ALTER TABLE test_tabuľka ALTER COLUMN komentár varchar(300);

    Poznámka! SQL server nebude môcť zmeniť typ údajov, ak hodnoty v týchto poliach nemožno skonvertovať, v takom prípade budete musieť odstrániť stĺpec so všetkými údajmi a znova pridať alebo vymazať všetky údaje v tomto poli.

    Odstránenie stĺpca

    Ak chcete odstrániť konkrétny stĺpec, použite príkaz drop, napríklad na odstránenie poľa prosto_pole použite nasledujúci dotaz

    ALTER TABLE test_table DROP COLUMN prosto_pole

    Odstrániť tabuľku

    Aby sme mohli vymazať tabuľku, napíšme tento jednoduchý dotaz, kde test_table je tabuľka, ktorú treba vymazať

    DROP TABLE test_table

    zastupovanie

    Veľmi užitočným objektom v databáze je pohľad (VIEW) alebo podľa nás jednoducho pohľad. Ak niekto nevie, zobrazenie je druh uloženého dotazu, ku ktorému možno pristupovať rovnakým spôsobom ako k tabuľke. Vytvorme si pohľad na základe testovacej tabuľky test_table a predpokladajme, že veľmi často potrebujeme napísať dotaz, napríklad podľa podmienky je súčet väčší ako 1000, takže aby sme tento dotaz nepísali zakaždým, pohľad napíšeme raz a následne sa naňho odvoláme.

    Tvorba

    CREATE VIEW test_view AS SELECT id, fio, comment FROM test_table WHERE summa > 1000 GO

    Príklad prístupu k pohľadu:

    SELECT * FROM test_view

    Zmeniť

    ALTER VIEW test_view AS SELECT id, fio, comment FROM test_table WHERE summa > 1500 GO

    Odstránenie

    DROP VIEW test_view

    Systémové zobrazenia

    MS SQL Server DBMS má systémové objekty, ktoré môžu niekedy poskytnúť celkom užitočné informácie, napríklad systémové pohľady. Teraz budeme analyzovať niekoľko takýchto reprezentácií. Môžete k nim pristupovať rovnakým spôsobom ako k bežným zobrazeniam ( napríklad vyberte * zo zobrazenia názvu)

    • sys.all_objects – obsahuje všetky databázové objekty vrátane parametrov ako: názov, typ, dátum vytvorenia a iné.
    • sys.all_columns – vráti všetky stĺpce tabuliek s ich podrobnými charakteristikami.
    • sys.all_views – Vráti všetky zobrazenia v databáze.
    • sys.tables – všetky databázové tabuľky.
    • sys.triggers – všetky spúšťače databázy.
    • sys.databases – všetky databázy na serveri.
    • sys.sysprocesses – aktívne procesy, relácie v databáze.

    V skutočnosti je ich veľa, takže nie je možné ich všetky zoradiť. Ak chcete vidieť, ako sa dajú využiť v praxi, už sme to urobili napríklad v materiáloch

    Funkcie

    MS SQL server umožňuje vytvárať funkcie, ktoré budú vracať špecifické dáta, inými slovami, užívateľ sám môže napísať funkciu a použiť ju v budúcnosti, napríklad keď je potrebné získať hodnoty, ktoré si vyžadujú zložité výpočty alebo zložité výber údajov. Niekedy len kvôli redukcii kódu, keď volanie funkcie nahradí často potrebné hodnoty v rôznych požiadavkách a aplikáciách.

    Tvorba

    CREATE FUNCTION test_function (@par1 bigint, @par2 float) VRÁTI varchar(300) AKO ZAČIATOK DECLARE @rezult varchar(300) SELECT @rezult=comment FROM test_table WHERE id = @par1 AND summa > @par2 RETURN @rezult KONIEC
    • CREATE FUNCTION – príkaz na vytvorenie funkčného objektu;
    • test_funkcia – názov novej funkcie;
    • @par1 a @par2 – prichádzajúce parametre;
    • RETURNS varchar(300) – návratový typ;
    • DECLARE @rezult varchar(300) – deklarácia premennej s typom varchar(300);
    • Príkaz select sú v našom prípade akcie funkcie;
    • RETURN @rezult – vráti výsledok;
    • BEGIN a END sú začiatok a koniec kódu funkcie.

    Príklad použitia v požiadavke:

    SELECT test_funkcia(1, 20)

    Zmeniť

    ALTER FUNCTION test_function (@par1 bigint, @par2 float) VRÁTI varchar(300) AKO ZAČIATOK DECLARE @rezult varchar(300) SELECT @rezult=comment FROM test_table_new WHERE id = @par1 AND summa >= @par2 RETURN @rezult KONIEC

    Odstránenie

    Test_funkcia DROP FUNCTION

    Vstavané funkcie

    Okrem toho, že SQL Server umožňuje vytvárať vlastné funkcie, poskytuje aj možnosť využívať vstavané funkcie, ktoré už pre vás vývojári DBMS napísali. Je ich veľa, preto som tie najčastejšie rozdelil do skupín a pokúsil som sa ich stručne opísať.

    Systémové funkcie

    Tu uvediem niekoľko príkladov funkcií, ktoré vracajú rôzne systémové údaje

    • @@VERSION – vráti verziu SQL servera;
    • @@SERVERNAME – vráti názov servera;
    • SUSER_NAME() – prihlasovacie meno používateľa na server, inými slovami, pod akým prihlasovacím menom ten alebo ten používateľ pracuje;
    • user_name() – meno používateľa databázy;
    • @@SERVICENAME – názov služby DBMS;
    • @@IDENTITY - posledný identifikátor vložený do tabuľky;
    • db_name() - názov aktuálnej databázy;
    • db_id() – identifikátor databázy.

    Súhrnné funkcie

    Funkcie, ktoré vypočítavajú hodnotu na základe množiny (skupiny) hodnôt. Ak pri volaní týchto funkcií potrebujete zadať stĺpec na zobrazenie výsledku, musíte údaje zoskupiť (zoskupiť podľa) podľa tohto poľa. Túto konštrukciu sme podrobne rozobrali v článku Transact-SQL grouping data group by

    • avg – vráti priemernú hodnotu;
    • počet – počet hodnôt;
    • max – maximálna hodnota;
    • min – minimálna hodnota;
    • súčet – súčet hodnôt.

    Príklad použitia:

    SELECT COUNT(*) ako počet, SUM(summa) ako súčet, MAX(id) ako maximum, MIN(id) ako minimum, AVG(summa) ako priemer FROM test_table

    Reťazcové funkcie

    Tento typ funkcie pracuje podľa toho s reťazcami.

    Vľavo (reťazcový výraz, Postavy) – vráti zadaný počet znakov v reťazci začínajúcom zľava.

    Príklad

    SELECT LEFT("Príklad funkcie vľavo", 10) --Výsledok "Príklad"

    Správny (reťazcový výraz, Postavy) – vráti zadaný počet znakov v reťazci začínajúcom sprava

    Príklad

    SELECT Right("Príklad správnej funkcie", 10) -- Výsledok "Funkcie vpravo"

    Len (riadok) – vráti dĺžku reťazca.

    Príklad

    SELECT len("Príklad fungovania funkcie len") --Výsledok 28

    Nižšia (riadok) – vráti reťazec, v ktorom sú všetky znaky skonvertované na malé písmená.

    Príklad

    SELECT lower("Príklad nižšej funkcie") --Výsledok "príkladu nižšej funkcie"

    Horná (riadok) - vráti reťazec, v ktorom sú všetky znaky skonvertované na veľké písmená.

    Príklad

    SELECT Upper("Príklad funkcie Upper") --Výsledok "PRÍKLAD HORNEJ FUNKCIE"

    Ltrim (riadok) – vráti reťazec bez všetkých úvodných medzier.

    Príklad

    SELECT ltrim("Príklad činnosti funkcie ltrim") --Výsledok "Príklad činnosti funkcie ltrim"

    Rtrim (riadok) – vráti reťazec s odstránenými všetkými medzerami na pravej strane

    Príklad

    SELECT Rtrim ("Príklad fungovania funkcie Rtrim") -- Výsledok "Príklad fungovania funkcie Rtrim"

    Vymeňte (riadok, čo hľadáme, čím to nahradíme?) – nahradí v reťazcovom výraze všetky výskyty uvedené v druhom parametri znakmi uvedenými v treťom parametri.

    Príklad

    SELECT Nahradiť ("Príklad funkcie Nahradiť", "Práca", "VÝMENA") -- Výsledok "Príklad funkcie REPLACE funkcie Nahradiť"

    Replikovať (riadok, počet opakovaní) – zopakuje riadok (prvý parameter) toľkokrát, koľkokrát je uvedené v druhom parametri.

    Príklad

    SELECT Replicate ("Replikovať príklad", 3) -- Výsledok "Replikovať príklad Replikovať príklad Replikovať príklad"

    Obrátené (riadok) – vráti všetko v opačnom poradí.

    Príklad

    SELECT Reverse ("Príklad funkcie Reverse") -- Výsledok "esreveR iitsknuf etobar op remirP"

    Priestor (počet miest) – vráti reťazec ako zadaný počet medzier.

    Príklad

    SELECT medzera(10) -- výsledok " "

    Podreťazec (riadok, východisková pozícia, koľko znakov) – vráti reťazec s dĺžkou rovnou číslu uvedenému v treťom parametri, počnúc znakom uvedeným v druhom parametri.

    Príklad

    SELECT Substring("Príklad fungovania funkcie Substring", 11, 14) -- Výsledok "operácie funkcie"

    Matematické funkcie

    Okrúhly (číslo, presnosť zaokrúhľovania) – zaokrúhli číselný výraz na počet číslic zadaný v druhom parametri

    Príklad

    SELECT Round(10,4569; 2) -- Výsledok "10,4600"

    Poschodie (číslo) – vráti celé číslo zaokrúhlené nadol.

    Príklad

    SELECT Floor(10,4569) -- Výsledok "10"

    Strop (číslo) – vráti celé číslo zaokrúhlené nahor.

    Príklad

    SELECT Ceiling (10,4569) -- Výsledok "11"

    Moc (číslo, stupňa) — vráti číslo umocnené na mocninu špecifikovanú v druhom parametri.

    Príklad

    SELECT Power(5,2) -- Výsledok "25"

    Námestie (číslo) – vráti číselnú hodnotu na druhú

    Príklad

    SELECT Square(5) -- Výsledok "25"

    Abs (číslo) – vráti absolútnu kladnú hodnotu

    Príklad

    SELECT Abs(-5) -- Výsledok "5"

    Log(číslo) – prirodzený logaritmus s pohyblivou rádovou čiarkou.

    Príklad

    SELECT Log(5) -- Výsledok "1,6094379124341"

    Pi- Pi.

    Príklad

    SELECT Pi() -- Výsledok "3,14159265358979"

    rand– vráti náhodné číslo s pohyblivou rádovou čiarkou medzi 0 a 1

    Príklad

    SELECT rand() -- Výsledok "0,713273187517105"

    Funkcie dátumu a času

    Getdate()– vráti aktuálny dátum a čas

    Príklad

    SELECT Getdate() -- Výsledok "2014-10-24 16:36:23.683"

    deň(dátum) – vráti deň z dátumu.

    Príklad

    SELECT Day(Getdate()) -- Výsledok "24"

    mesiac(dátum) – vráti číslo mesiaca z dátumu.

    Príklad

    SELECT mesiac(Getdate()) -- Výsledok "10"

    rok (dátum) – vráti rok od dátumu

    Príklad

    SELECT rok(Getdate()) -- Výsledok "2014"

    DATEPART(dátumová časť, dátum) – vráti zadaný úsek z dátumu (DD,MM,RRRR atď.)

    Príklad

    SELECT DATEPART(MM,GETDATE()) -- Výsledok "10"

    Isdate (dátum) – skontroluje zadaný výraz, či ide o dátum

    Príklad

    SELECT Isdate(GETDATE()) – výsledok „1“

    Konverzné funkcie

    Obsadenie (výraz ako dátový typ) – funkcia na konverziu jedného typu na druhý. V príklade konvertujeme typ float na int

    Príklad

    SELECT CAST(10,54 ako int) --výsledok 10

    Konvertovať – (dátový typ, výraz, formát dátumu) je funkcia na konverziu jedného dátového typu na iný. Veľmi často sa používa na konverziu dátumu pomocou tretieho voliteľného parametra - formátu dátumu.

    Príklad

    SELECT GETDATE(), CONVERT(DATE, GETDATE(), 104) --Result --2014-10-24 15:20:45.270 – bez konverzie; --2014-10-24 po konverzii.

    Tabuľkové funkcie

    Sú vytvorené s cieľom získať z nich údaje ako z tabuliek, ale po rôznych typoch výpočtov. Podrobne sme o tabuľkových funkciách hovorili v materiáli Transact-sql - Tabuľkové funkcie a dočasné tabuľky

    Tvorba

    --názov našej funkcie CREATE FUNCTION fun_test_tabl (--prichádzajúce parametre a ich typ @id INT) --návratová hodnota, t.j. tabuľka VRÁTI TABUĽKU AKO --okamžite vráti výsledok RETURN (--samotný dotaz alebo niektoré výpočty SELECT * FROM test_table kde id = @id) GO

    Zmeniť

    --názov našej funkcie ALTER FUNCTION fun_test_tabl (--prichádzajúce parametre a ich typ @id INT) --návratová hodnota, t.j. tabuľka VRÁTI TABUĽKU AKO --okamžite vráti výsledok RETURN (--samotný dotaz alebo niektoré výpočty SELECT * FROM test_table kde id = @id a suma > 100) GO

    Odstránenie

    DROP FUNCTION fun_test_tabl

    Ako vidíte, na vytvorenie, zmenu alebo odstránenie takýchto funkcií sa používajú rovnaké operátory ako pre bežné funkcie, rozdiel je len v tom, aký typ funkcia vráti.

    Príklad volania tejto funkcie

    SELECT * FROM fun_test_tabl(1)

    Postupy

    Postupy je sada SQL inštrukcií, ktoré sú skompilované raz a podobne ako funkcie môžu mať rôzne parametre. Používa sa na zjednodušenie výpočtov a vykonávanie skupinových akcií.

    Tvorba

    CREATE PROCEDURE sp_test_procedure (@id INT) AS --deklarovanie premenných DECLARE @sum FLOAT --SQL príkazy SET @sum = 100 AKTUALIZÁCIA test_tabuľky SET summa = summa + @sum WHERE id = @id GO

    Zmeniť

    ALTER PROCEDURE sp_test_procedure (@id int) AS --deklarovanie premenných DECLARE @sum float --SQL príkazy SET @sum = 500 AKTUALIZÁCIA test_tabuľky SET summa = summa + @sum WHERE id = @id GO

    Odstránenie

    DROP PROCEDURE sp_test_procedure

    Vyvolanie procedúry

    Môžete to nazvať rôznymi spôsobmi, napríklad:

    EXECUTE sp_test_procedure 1 --alebo EXEC sp_test_procedure 1

    Kde EXECUTE a EXEC sú volanie procedúry, sp_test_procedure, respektíve názov našej procedúry, 1 hodnota parametra

    Systémové postupy

    Systémové postupy– ide o procedúry na vykonávanie rôznych administratívnych akcií tak na objektoch na serveri, ako aj na konfigurácii samotného servera. Volajú sa rovnakým spôsobom ako bežné procedúry, ale v kontexte akejkoľvek databázy.

    Je ich obrovské množstvo, preto uvediem len niekoľko príkladov.

    sp_configure– postup na zobrazenie a vykonanie zmien v konfigurácii jadra DBMS. Prvý parameter je názov konfiguračného parametra, druhý parameter je hodnota.

    Príklad

    Zmeňte hodnotu parametra EXEC sp_configure "Ad Hoc Distributed Queries", 1 prekonfigurujte -- použite EXEC sp_configure -- stačí si pozrieť hodnoty všetkých parametrov

    kde „Ad Hoc Distributed Queries“ je názov parametra, 1 zodpovedajúci hodnote, na ktorú chceme zmeniť, prekonfigurácia použije zadanú hodnotu.

    V praxi sme tento postup použili v materiáli Interdatabase Query v Transact-SQL

    sp_executesql– vykoná príkaz Transact-SQL alebo sadu príkazov, ktoré možno generovať dynamicky. Tento postup sme použili pri zaznamenávaní zmien údajov materiálu do tabuľky pomocou Transact-SQL

    Príklad

    EXECUTE sp_executesql N"SELECT * FROM test_table WHERE id = @id", N"@id int", @id = 1

    Kde prvý parameter je inštrukcia sql (reťazec v Unicode), druhý je definícia všetkých parametrov zabudovaných do inštrukcie sql, tretí je hodnota parametrov.

    sp_help– vráti podrobné informácie o akomkoľvek databázovom objekte.

    Príklad

    EXECUTE sp_help "test_table"

    sp_rename– premenuje objekt v databáze. Dá sa použiť na premenovanie tabuliek, indexov, názvov stĺpcov v tabuľkách. Neodporúča sa používať tento postup na premenovanie užívateľských procedúr, spúšťačov, funkcií.

    Príklad premenovania tabuľky

    EXEC sp_rename "test_table", "test_table_new"

    kde prvý parameter je objekt so starým názvom a druhý parameter je nový názov objektu.

    Príklad premenovania stĺpca v tabuľke

    EXEC sp_rename "test_table.summa", "summa_new", "COLUMN"

    Tretí parameter označuje, že sa stĺpec premenúva.

    Spúšťače

    Spúšťač je normálny postup, ale volá ho udalosť, nie používateľ. Udalosťou môže byť napríklad vloženie nového riadku do tabuľky (vložiť), aktualizácia údajov v tabuľke (aktualizácia) alebo vymazanie údajov z tabuľky (vymazanie).

    Tvorba

    CREATE TRIGGER trg_test_table_update ON test_table pre AKTUALIZÁCIU --môžete tiež odstrániť, vložiť AS BEGIN --sql inštrukcie v prípade UPDATE END GO

    Zmeniť

    ALTER TRIGGER trg_test_table_update ON test_table pre vloženie --môžete tiež vymazať, aktualizovať AS BEGIN --sql inštrukcie v prípade vloženia END GO

    Odstránenie

    DROP TRIGGER trg_test_table_update

    Povoliť zakázať

    --disable DISABLE TRIGGER trg_test_table_update ON test_table; -- povoliť ENABLE TRIGGER trg_test_table_update ON test_table;

    O spúšťačoch sme hovorili v článku – Ako vytvoriť spúšťač v Transact-SQL.

    Indexy

    Ide o databázový objekt, ktorý zlepšuje výkon získavania údajov triedením údajov podľa špecifického poľa. Ak nakreslíme analógiu, napríklad vyhľadávanie určitých informácií v knihe je oveľa jednoduchšie a rýchlejšie na základe jej obsahu, ako keby tento obsah neexistoval. V MS SQL Server DBMS existujú nasledujúce typy indexov:

    Klastrovaný index— pri takomto indexe sa riadky v tabuľke triedia daným kľúčom, t.j. zadané pole. Tento typ indexu na tabuľku na serveri MS SQL môže byť iba jeden a od MS SQL 2000 sa automaticky vytvára, keď je v tabuľke špecifikovaný primárny kľúč (PRIMARY KEY).

    Nezhlukovaný index– pri použití tohto typu indexu index obsahuje ukazovatele riadkov zoradené podľa zadaného poľa a nie samotné riadky, vďaka čomu dochádza k rýchlemu vyhľadaniu požadovaného riadku. Tabuľka môže mať niekoľko takýchto indexov.

    Index úložiska stĺpcov– tento typ indexu je založený na technológii ukladania údajov tabuľky nie ako riadky, ale ako stĺpce (odtiaľ názov môže mať jeden stĺpcový index);

    Pri použití tohto typu indexu sa tabuľka okamžite stane iba na čítanie, inými slovami, už nebude možné pridávať alebo meniť údaje v tabuľke, aby ste to urobili, budete musieť zakázať index, pridať/zmeniť údaje a potom povoľte index späť.

    Takéto indexy sú vhodné pre veľmi veľké súbory údajov používané v skladoch.

    Operácie, ktoré využívajú agregačné funkcie pomocou zoskupovania, sa s takýmto indexom vykonávajú oveľa rýchlejšie (niekoľkokrát!).

    Index Columnstore je k dispozícii od verzie 2012 SQL Server vo verziách Enterprise, Developer a Evaluation.

    Tvorba

    Klastrovaný index

    VYTVORTE KLUSTEROVÝ INDEX idx_clus_one NA test_table(id) GO

    Kde CREATE CLUSTERED INDEX je inštrukcia na vytvorenie zoskupeného indexu, idx_clus_one je názov indexu, test_table(id) je tabuľka a pole kľúča na triedenie.

    Nezhlukovaný index

    VYTVORIŤ INDEX idx_no_clus ON test_table(summa) GO

    Index úložiska stĺpcov

    CREATE columnstore INDEX idx_columnstore ON test_table(date_create) GO

    Vypnúť

    --zakázať ALTER INDEX idx_no_clus ON test_table DISABLE --povoliť, znovu zostaviť ALTER INDEX idx_no_clus ON test_table REBUILD

    Odstránenie

    DROP INDEX idx_no_clus ON test_table GO

    Kurzory

    kurzor - je to druh dátového typu, ktorý sa používa hlavne v procedúrach a spúšťačoch. Predstavuje bežný súbor údajov, t.j. výsledok žiadosti.

    Príklad (toto všetko v kóde procedúry)

    Deklarovať premenné DECLARE @id BIGINT DECLARE @fio VARCHAR(100) DECLARE @summa FLOAT --deklarovať kurzor DECLARE test_cur CURSOR FOR SELECT id, fio, summa FROM test_table --otvorenie kurzora OPEN test_cur --čítanie údajov prvého riadku do kurzora --a zapíšte ich do premenných FETCH NEXT FROM test_cur DO @id, @fio, @summa --spustite cyklus, kým sa neminú riadky v kurzore WHILE @@FETCH_STATUS = 0 BEGIN --môžeme spustiť sql inštrukcie pre každú iteráciu cyklu -- ................... SQL inštrukcie................... - -prečítať ďalší riadok kurzora FETCH NEXT FROM test_cur DO @id , @fio, @summa END --zavrieť kurzor CLOSE test_cur DEALLOCATE test_cur

    Podrobne sme o kurzoroch hovorili v materiáli Používanie kurzorov a slučiek v Transact-SQL.

    DML dotazy

    DML (Jazyk manipulácie s údajmi) sú príkazy SQL, ktoré manipulujú s údajmi. Patria sem výber, aktualizácia, vloženie, odstránenie.

    VYBRAŤ

    Príklad

    SELECT * FROM test_table

    AKTUALIZOVAŤ

    Používa sa na aktualizáciu údajov

    Príklad

    Všetky riadky v tabuľke sa aktualizujú UPDATE test_table SET summa=500 -- aktualizujú sa iba riadky s ID väčším ako 10 UPDATE test_table SET summa=100 WHERE id > 10

    VLOŽIŤ

    Operátor pre pridávanie údajov

    Pridanie jedného riadku INSERT INTO test_table (fio, summa, date_create, komentár) VALUES ("Celé meno",100, "26.10.2014", "testovací záznam") -- hromadné pridanie na základe dotazu INSERT INTO test_table SELECT fio , summa, date_create , komentár FROM test_table

    VYMAZAŤ

    Tento operátor môžete použiť na vymazanie údajov.

    Príklad

    Vymazanie celej tabuľky DELETE test_table -- odstránenie iba riadkov, ktoré spĺňajú podmienku DELETE test_table WHERE summa > 100

    To je všetko, sprievodca sa skončil! Dúfam, že vám to nejakým spôsobom pomohlo. Veľa štastia!