Archívy kategórie: Knihy na SQL. Základy SQL pre začiatočníkov s lekciami Interaktívny výukový program sql

Väčšina moderných webových aplikácií komunikuje s databázami, pričom zvyčajne používa jazyk tzv SQL. Našťastie pre nás sa tento jazyk veľmi ľahko učí. V tomto článku sa pozrieme na jednoduché SQL žiadosti a naučte sa ich používať na interakciu Databáza MySQL.

Čo potrebuješ?

SQL (Structured Query Language) jazyk špeciálne navrhnutý na interakciu so systémami správy databáz ako napr MySQL, Oracle, Sqlite a iné... Vystupovať SQL požiadavky v tomto článku, odporúčam vám nainštalovať MySQL do lokálneho počítača. Tiež odporúčam používať phpMyAdmin ako vizuálne rozhranie.

To všetko je dostupné v obľúbenom Denveri. Myslím, že každý by mal vedieť, čo to je a kde to zohnať :). Môcť inak použite WAMP alebo MAMP.

Denver má vstavaný MySQL konzoly. My to využijeme.

VYTVORIŤ DATABÁZU:vytvorenie databázy

Tu je naša prvá požiadavka. Vytvoríme našu prvú databázu pre ďalšiu prácu.

Ak chcete začať, otvorte MySQL konzola a prihlásenie. Pre WAMP predvolené heslo je prázdne. To nič nie je :). Pre MAMP – „koreň“. Denver treba objasniť.

Po prihlásení zadajte nasledujúci riadok a kliknite Zadajte:

CREATE DATABASE my_first_db;

Všimnite si, že na koniec dotazu sa pridáva bodkočiarka (;), rovnako ako v iných jazykoch.

Tiež príkazy v SQL rozlišovať malé a veľké písmená. Píšeme ich veľkými písmenami.

možnosti iba: znakovú sadua Zoraďovanie

Ak chcete nainštalovať znaková sada (znaková sada) a porovnávanie (porovnávanie) môže napíšte nasledujúci príkaz:

VYTVORIŤ DATABÁZU my_first_db PREDVOLENÁ SET ZNAKOV utf8 COLLATE utf8_general_ci;

Nájdite zoznam znakových sád, ktoré sú podporované v MySQL.

ZOBRAZIŤ DATABÁZY:zoznam všetkých databáz

Tento príkaz sa používa na zobrazenie všetkých dostupných databáz.

DROP DATABASE:vymazanie databázy

Pomocou tohto dotazu môžete zrušiť existujúcu databázu.

Pri tomto príkaze buďte opatrní, pretože sa spúšťa bez varovania. Ak sú vo vašej databáze údaje, všetky budú vymazané.

POUŽITIE:Výber databázy

Technicky to nie je dotaz, ale operátor a na konci nie je potrebná bodkočiarka.

Hovorí to MySQL vyberte databázu, ktorá bude štandardne fungovať pre aktuálnu reláciu. Teraz sme pripravení vytvárať tabuľky a robiť ďalšie veci s databázou.

Čo je tabuľka v databáze?

Tabuľku v databáze môžete reprezentovať ako excelový súbor.

Rovnako ako na obrázku, tabuľky majú názvy stĺpcov, riadkov a informácií. Používaním SQL môžeme vytvoriť takéto tabuľky. Môžeme tiež pridávať, čítať, aktualizovať a odstraňovať informácie.

VYTVORIŤ TABUĽKU: Vytvorte tabuľku

C Pomocou tohto dotazu môžeme vytvárať tabuľky v databáze. Bohužiaľ dokumentácia MySQL pre nováčikov nie je v tejto téme príliš jasná. Štruktúra tohto typu žiadosti môže byť veľmi zložitá, ale začneme jednoduchou.

Nasledujúci dotaz vytvorí tabuľku s 2 stĺpcami.

Používatelia CREATE TABLE (používateľské meno VARCHAR(20), dátum_vytvorenia DATE);

Všimnite si, že naše dotazy môžeme písať na viacero riadkov a s tabulátormi na odsadenie.

Prvý riadok je jednoduchý. Jednoducho vytvoríme tabuľku s názvom „používatelia“. Ďalej v zátvorkách, oddelených čiarkami, je zoznam všetkých stĺpcov. Za každým názvom stĺpca máme typy informácií ako VARCHAR alebo DATE.

VARCHAR(20) znamená, že stĺpec je typu string a môže mať maximálne 20 znakov. DÁTUM je tiež typ informácií, ktorý sa používa na ukladanie dátumov v tomto formáte: "RRRR - MM-DD".

PRIMÁRNY KĽÚČ ( primárny kľúčh)

Pred vykonaním ďalšieho dotazu musíme zahrnúť aj stĺpec pre „user_id “, ktorý bude naším primárnym kľúčom. PRIMÁRNY KĽÚČ si môžete predstaviť ako informáciu, ktorá sa používa na identifikáciu každého riadku v tabuľke.

CREATE TABLE užívateľov (user_id INT AUTO_INCREMENT PRIMARY KEY, užívateľské meno VARCHAR(20), create_date DATE);

INT vytvorí 32-bitový celočíselný typ (ako čísla). AUTOMATICKÝ PRÍRASTOK automaticky vygeneruje novú hodnotu ID zakaždým, keď pridávame nové riadky informácií. Nie je to potrebné, ale celý proces to uľahčuje.

Tento stĺpec nemusí byť celočíselná hodnota, ale najčastejšie sa používa. Primárny kľúč je tiež voliteľný, ale odporúča sa pre architektúru a výkon databázy.

Spustíme dotaz:

ZOBRAZIŤ TABUĽKY:zobraziť všetky tabuľky

Tento dotaz vám umožňuje získať zoznam tabuliek, ktoré sú v databáze.

VYSVETLITE:Zobraziť štruktúru tabuľky

Tento dotaz môžete použiť na zobrazenie štruktúry existujúcej tabuľky.

Zobrazia sa stĺpce so všetkými vlastnosťami.

ZOBRAZIŤ TABUĽKU:vymazať tabuľku

Rovnako ako DROP DATABASES, tento dotaz zruší tabuľku a jej obsah bez varovania.

ALTER TABUĽKA: výmenný stôl

Tento dotaz môže tiež obsahovať zložitú štruktúru kvôli viacerým zmenám, ktoré môže vykonať v tabuľke. Pozrime sa na príklady.

(ak ste v poslednom kroku odstránili tabuľku, vytvorte ju znova na testy)

PRIDANIE STĹPCA

Používatelia ALTER TABLE PRIDAŤ e-mail VARCHAR(100) ZA užívateľským menom;

Vzhľadom na dobrú čitateľnosť SQL si myslím, že nemá zmysel to podrobne vysvetľovať. Za "používateľské meno" pridávame nový stĺpec "e-mail".

ODSTRÁNENIE STĹPCA

Bolo to tiež veľmi ľahké. Tento dopyt používajte opatrne, pretože údaje môžu byť bez varovania vymazané.

Obnovte stĺpec, ktorý ste práve odstránili, na ďalšie experimentovanie.

VYKONAJTE ZMENU STĹPCA

Niekedy možno budete chcieť vykonať zmeny vo vlastnostiach stĺpca a nie je potrebné ho úplne odstrániť.

Tento dotaz premenoval užívateľský stĺpec na "user_name" a zmenil jeho typ z VARCHAR(20) na VARCHAR(30). Takáto zmena by nemala zmeniť údaje v tabuľke.

VLOŽIŤ: Pridávanie informácií do tabuľky

Pridajme do tabuľky nejaké informácie pomocou nasledujúceho dotazu.

Ako vidíte, VALUES() obsahuje zoznam hodnôt oddelených čiarkami. Všetky hodnoty sú uzavreté v jednotlivých stĺpcoch. A hodnoty musia byť v poradí stĺpcov, ktoré boli definované pri vytváraní tabuľky.

Všimnite si, že prvá hodnota je NULL pre pole PRIMARY KEY s názvom "user_id". Robíme to preto, aby sa ID vygenerovalo automaticky, keďže stĺpec má vlastnosť AUTO_INCREMENT. Keď sú informácie pridané prvýkrát, ID bude 1. Ďalší riadok bude 2 atď.

ALTERNATÍVNA MOŽNOSŤ

Existuje ďalšia možnosť dotazu na pridávanie riadkov.

Tentokrát namiesto VALUES použijeme kľúčové slovo SET, ktoré nemá zátvorky. Existuje niekoľko nuancií:

Stĺpec je možné preskočiť. Napríklad sme nepriradili hodnotu „user_id “, ktorá predvolene získa svoju hodnotu AUTO_INCREMENT. Ak vynecháte stĺpec VARCHAR, pridá sa prázdny reťazec.

Každý stĺpec musí byť označený názvom. Z tohto dôvodu môžu byť uvedené v akomkoľvek poradí, na rozdiel od predchádzajúcej verzie.

ALTERNATÍVA 2

Tu je ďalšia možnosť.

Opäť, keďže existujú odkazy na názov stĺpca, hodnoty môžete zadať v ľubovoľnom poradí.

LAST_INSERT_ID()

Tento dotaz môžete použiť na získanie ID, ktoré bolo AUTO_INCREMENT pre posledný riadok aktuálnej relácie.

TERAZ()

Teraz je čas ukázať vám, ako môžete použiť funkciu MySQL v dotazoch.

Funkcia NOW() vráti aktuálny dátum. Môžete ho teda použiť na automatické nastavenie dátumu stĺpca na aktuálny, keď vložíte nový riadok.

Všimnite si, že sme dostali 1 upozornenie, ale ignorujte ho. Dôvodom je, že NOW() slúži aj na zobrazenie dočasných informácií.

VYBERTE: Čítanie údajov z tabuľky

Ak pridáme informácie do tabuľky, potom by bolo logické naučiť sa ich čítať odtiaľ. Tu nám pomôže dotaz SELECT.

Nižšie je uvedený najjednoduchší možný dotaz SELECT na čítanie tabuľky.

V tomto prípade hviezdička (*) znamená, že sme si vyžiadali všetky polia z tabuľky. Ak chcete iba určité stĺpce, dotaz bude vyzerať takto.

PodmienkaKDE

Najčastejšie nás nezaujímajú všetky stĺpce, ale iba niektoré. Predpokladajme napríklad, že potrebujeme iba e-mailovú adresu používateľa „nettuts“.

WHERE vám umožňuje nastaviť podmienky v dotaze a vykonať podrobné výbery.

Všimnite si, že rovnosť používa jedno znamienko rovnosti (=) namiesto dvoch ako pri programovaní.

Môžete použiť aj prirovnania.

AND alebo OR možno použiť na kombináciu podmienok:

Upozorňujeme, že číselné hodnoty nesmú byť v úvodzovkách.

IN()

Toto je užitočné pri vzorkovaní viacerých hodnôt.

PÁČI SA MI TO

Umožňuje zadávať požiadavky „zástupných kariet“.

Znak % sa používa ako „zástupný znak“. To znamená, že na jeho mieste môže byť čokoľvek.

PodmienkaZORADIŤ PODĽA

Ak chcete získať výsledok v usporiadanej forme podľa nejakého kritéria

Predvolené poradie je ASC (od najmenšieho po najväčšie). V opačnom prípade sa používa DESC.

LIMIT ... OFFSET ...

Môžete obmedziť počet výsledkov, ktoré dostanete.

LIMIT 2 berie len prvé 2 výsledky. LIMIT 1 OFFSET 2 dostane 1 výsledok po prvých 2. LIMIT 2, 1 znamená to isté (len si všimnite, že najprv je offset a potom limit ).

AKTUALIZÁCIA: Vykonajte zmeny v informáciách v tabuľke

Tento dotaz sa používa na zmenu informácií v tabuľke.

Vo väčšine prípadov sa používa v spojení s klauzulou WHERE, pretože s najväčšou pravdepodobnosťou budete chcieť vykonať zmeny v určitých stĺpcoch. Ak neexistuje klauzula WHERE, zmeny ovplyvnia všetky riadky.

Môžete tiež použiť LIMIT na obmedzenie počtu riadkov, ktoré je potrebné upraviť.

VYMAZAŤ: Odstránenie informácií z tabuľky

Rovnako ako UPDATE sa tento dotaz používa s WHERE:

Ak chcete odstrániť obsah tabuľky, môžete to urobiť takto:

VYMAZAŤ Z používateľov;

Ale je lepšie použiť TRUNCATE (skrátiť).

Okrem vymazania tento dotaz aj vynuluje hodnoty AUTOMATICKÝ PRÍRASTOK a pri opätovnom pridávaní riadkov začne odpočítavanie od nuly. VYMAZAŤ to neurobí a odpočítavanie pokračuje.

Zakázanie hodnôt reťazcov a špeciálnych slov

reťazcové hodnoty

Niektoré znaky je potrebné deaktivovať ( uniknúť ), alebo môžu nastať problémy.

Na tento účel sa používa spätná lomka.(\).

Špeciálne slová

Pretože v MySQL existuje veľa špeciálnych slov SELECT alebo UPDATE ), aby sa predišlo chybám pri ich používaní, je potrebné použiť úvodzovky. Ale nie obyčajné citáty, ale tieto(`).

To znamená, že budete musieť pridať stĺpec s názvom " vymazať “, musíte to urobiť takto:

Záver

Ďakujem za prečítanie až do konca. Dúfam, že tento článok bol pre vás užitočný. Ešte to neskončilo! Pokračovanie nabudúce:).

V tomto článku som sa pokúsil spojiť všetky hlavné body Transakcia SQL pomôcť začínajúcim databázovým programátorom naučiť sa jazyk a písať dotazy a aplikácie v 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 s príkladmi.

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

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

Táto príručka 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, vysvetlivky a príklady. Taktiež, ak sme už niekde v materiáloch na našej stránke podrobne preskúmali alebo použili ten alebo ten predmet alebo akciu, samozrejme vložím 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. Táto príručka je opäť určená pre začínajúcich programátorov Transact-SQL, ako aj pre jednoduchých správcov, ktorí pravidelne potrebujú nahrať nejaké údaje zo servera SQL.

Pre podrobné štúdium jazyka T-SQL odporúčam prečítať si moju knihu “The T-SQL Programmer's Way. Transact-SQL Language Tutorial “, v ktorej hovorím čo najpodrobnejšie a s veľkým počtom príkladov o jazyku T-SQL.

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é, prejdime si proces vytvárania, úpravy a zrušenia databázy v Transact- SQL.

Tvorba

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

Test CREATE DATABASE

kde test je názov databázy.

Pre viac informácií o vytváraní databázy na SQL Server sme hovorili 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é, príkaz ALTER DATABASE zmeniť, otestovať názov databázy, ktorá sa má zmeniť, príkaz SET indikujúci, že budeme meniť parametre databázy, AUTO_SHRINK samotný parameter, ON / OFF hodnotu 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 je dátum vrátane času dňa v zlomkoch sekundy v 24-hodinovom formáte.

Reťazce znakov

  • char [ (n) ] je 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 je zadané 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 - Ú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ťou 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, potom bude maximálna veľkosť úložiska 2 ^ 31-1 bajtov (2 GB). Ak je zadané n, potom veľkosť úložiska je skutočná dĺžka zadaných údajov plus 2 bajty.
  • obrázok - binárne dáta premenlivej dĺžky, veľkosti od 0 do 2^31 - 1 (2 147 483 647) bajtov.

Iné

  • xml - ukladanie xml údajov. Podrobne sme to rozobrali v materiáli Transact-sql - práca s xml a ak vôbec neviete, čo XML je, tak 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 v Transact-SQL.

Tvorba

CREATE TABLE test_table( IDENTITY(1,1) NOT NULL,--identifikátor, celé číslo int, hodnoty NULL nie sú povolené (50) NULL, --Názov, reťazec dlhý 50 znakov, hodnoty NULL sú povolené, --sum , približná číselná hodnota, povolené hodnoty null NULL, --dátum a čas, povolené hodnoty null (100) NULL --reťazec dlhý 100 znakov, povolené hodnoty null) 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 na pridanie;
  • prosto_pole – názov stĺpca;
  • pole numeric(18, 0) – typ údajov nového stĺpca;
  • NULL – parameter znamená, že do tohto poľa je možné 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 nie je možné konvertovať hodnoty v týchto poliach, v takom prípade budete musieť odstrániť stĺpec so všetkými údajmi a znova pridať alebo vymazať všetky údaje v toto pole.

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ánenie tabuľky

Aby sme vymazali tabuľku, napíšme si taký 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 len pohľad. Ak niekto nevie, potom pohľad je druh uloženého dotazu, ku ktorému je možné pristupovať rovnakým spôsobom ako k tabuľke. Vytvorme pohľad na základe testovacej tabuľky test_table a povedzme, že veľmi často potrebujeme napísať dotaz, napríklad podľa podmienky je súčet viac ako 1000, takže aby sme tento dotaz nepísali zakaždým, napíšeme pohľad raz a následne sa naň budeme odvolávať.

Tvorba

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

Pozrite si príklad hovoru:

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á tiež systémové objekty, ktoré môžu niekedy poskytnúť celkom užitočné informácie, ako napríklad systémové pohľady. Teraz budeme analyzovať niekoľko takýchto reprezentácií. Dá sa k nim pristupovať rovnakým spôsobom ako k bežným zobrazeniam ( napríklad vyberte * v zobrazení 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 databázy.
  • 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é všetko vyriešiť. Ak chcete vidieť, ako sa dajú využiť v praxi, tak to sme už urobili napríklad v materiáloch

Funkcie

MS SQL Server vám umožňuje vytvárať funkcie, ktoré vrátia určité údaje, inými slovami, používateľ sám môže napísať funkciu a použiť ju neskôr, napríklad keď potrebujete získať hodnoty, ktoré vyžadujú zložité výpočty alebo zložité vzorkovanie údajov. Niekedy je to len na zmenšenie kódu, keď volanie funkcie nahradí často požadované hodnoty v rôznych dotazoch a aplikáciách.

Tvorba

CREATE FUNCTION test_function (@par1 bigint, @par2 float) VRACI 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 sú prichádzajúce parametre;
  • RETURNS varchar(300) – návratový typ;
  • DECLARE @result varchar(300) – deklarácia premennej s typom varchar(300);
  • Príkaz select je v našom prípade činnosťou funkcie;
  • RETURN @výsledok - vráti výsledok;
  • BEGIN a END sú začiatok a koniec kódu funkcie.

Príklad použitia v dotaze:

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

DROP FUNCTION test_funkcie

Vstavané funkcie

Okrem toho, že SQL Server umožňuje vytvárať užívateľom definované funkcie, poskytuje aj možnosť využívať vstavané funkcie, ktoré pre vás vývojári DBMS už 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 serveri, inými slovami, pod akým prihlasovacím menom tento alebo ten používateľ pracuje;
  • user_name() – meno používateľa databázy;
  • @@SERVICENAME je názov služby DBMS;
  • @@IDENTITY je posledný identifikátor vložený do tabuľky;
  • db_name() je názov aktuálnej databázy;
  • db_id() je ID databázy.

Súhrnné funkcie

Funkcie, ktoré vypočítavajú nejakú 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 je 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

Funkcie reťazcov

Tento typ funkcie pracuje s reťazcami.

Vľavo (reťazcový výraz, Postavy) – vráti zadaný počet znakov v reťazci, začínajúc 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 reťazca začínajúceho sprava

Príklad

SELECT Right("Príklad správnej funkcie", 10) -- Výsledok "Správna akcia"

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

Príklad

SELECT len("Príklad dĺžky") --Výsledok 28

Nižšia (riadok) - Vráti reťazec so všetkými znakmi skonvertovanými na malé písmená.

Príklad

SELECT nižší("nižší príklad") --výsledok "nižší príklad"

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

Príklad

SELECT Upper("Upper Example") --Výsledok "UPPER EXAMPLE"

Ltrim (riadok) - Vráti reťazec bez všetkých počiatočných medzier.

Príklad

SELECT ltrim(" príklad ltrim") --Výsledok "príklad ltrim"

Rtrim (riadok) - vráti reťazec s odstránenými všetkými medzerami vpravo

Príklad

SELECT Rtrim (" príklad Rtrim ") -- Výsledok" Rtrim príklad"

Nahradiť (riadok, čo hľadáme, čo nahradíme) - nahradí všetky výskyty v reťazcovom výraze špecifikovanom v druhom parametri znakmi špecifikovanými v treťom parametri.

Príklad

SELECT Replace("Nahradiť príklad", "v práci", "REPLACE") -- Výsledok "Príklad funkcie REPLACE Nahradiť"

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

Príklad

SELECT Replicate ("Example Replicate", 3) -- Výsledok "Example Replicate Example Replicate Example Replicate "

obrátene (riadok) - vráti všetko v opačnom poradí.

Príklad

SELECT Obrátiť ("Príklad obrátenia") -- Výsledok "esreveR iiccnuf 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, dĺžku čísla zadaného v treťom parametri, počnúc znakom zadaným v druhom parametri.

Príklad

SELECT Substring("Príklad funkcie podreťazca", 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é 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) je 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 od 0 do 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 year(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“

Konverzia funkcií

Obsadenie (výraz ako dátový typ) je funkcia na konverziu jedného typu na iný. V príklade prevedieme 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, pričom sa používa tretí voliteľný parameter – formát 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 druhoch výpočtov. O tabuľkových funkciách sme podrobne 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) --vratná 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) --vratná 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_table

Ako vidíte, na vytvorenie, úpravu 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_table(1)

Postupy

Postupy je sada príkazov SQL, ktoré sa skompilujú raz a môžu mať, podobne ako funkcie, rôzne parametre. Používa sa na zjednodušenie výpočtov, 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_table SET summa = summa + @sum WHERE id = @id GO

Odstránenie

DROP PROCEDURE sp_test_procedure

Výzva postupu

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

EXECUTE sp_test_procedure 1 --alebo EXEC sp_test_procedure 1

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

Systémové postupy

Systémové postupy sú postupy na vykonávanie rôznych administratívnych akcií na objektoch na serveri 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 veľa, 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

Zmeniť hodnotu parametra EXEC sp_configure "Ad Hoc Distributed Queries",1 prekonfigurovať --použiť EXEC sp_configure --jednoducho zobraziť hodnoty všetkých parametrov

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

V praxi sme tento postup aplikovali v materiáli Cross-database 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 v Transact-SQL

Príklad

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

Kde prvý parameter je príkaz sql (reťazec Unicode), druhý je definícia všetkých parametrov zabudovaných do príkazu 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.Tento postup sa neodporúča používať 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úšť 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 UPDATE – môže tiež odstrániť, vložiť AS BEGIN – príkazy SQL v prípade UPDATE END GO

Zmeniť

ALTER TRIGGER trg_test_table_update ON test_table pre vloženie --môže tiež vymazať, aktualizovať AS BEGIN --sql príkazy 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; --enable 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 vyhľadávania údajov triedením údajov podľa špecifického poľa. Ak nakreslíme analógiu, potom je napríklad oveľa jednoduchšie a rýchlejšie vyhľadať určitú informáciu v knihe podľa jej obsahu, ako keby tam obsah nebol. V MS SQL Server DBMS existujú nasledujúce typy indexov:

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

Neklastrovaný index– pri použití tohto typu indexu index obsahuje indexy riadkov zoradené podľa zadaného poľa a nie samotné riadky, vďaka čomu sa požadovaný riadok rýchlo vyhľadá. 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 vo forme riadkov, ale vo forme stĺpcov (odtiaľ názov), tabuľka môže mať jeden columnstore 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, preto budete musieť index vypnúť, pridať / zmeniť údaje, potom index znova zapnite.

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

Operácie, ktoré využívajú agregačné funkcie pomocou zoskupovania, sú v prítomnosti takéhoto indexu oveľa rýchlejšie (niekoľkokrát!).

Index Columnstore je k dispozícii od SQL Server 2012 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 klastrované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. Ide o bežný dataset, t.j. výsledok dotazu.

Príklad (všetko je v kóde postupu)

Deklarovanie premenných DECLARE @id BIGINT DECLARE @fio VARCHAR(100) DECLARE @summa FLOAT --deklarovanie kurzora DECLARE test_cur CURSOR FOR SELECT id, fio, summa FROM test_table --otvorenie kurzora OPEN test_cur --čítanie prvého riadku v kurzore --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 -- pre každú môžeme vykonať príkazy SQL iterácia cyklu -- ................. SQL príkazy .................. -- prečítajte si ďalší riadok kurzor 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 riadka 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Ť

Pomocou tohto operátora môžete vymazať údaje.

Príklad

Vymazanie celej tabuľky DELETE test_table -- odstránenie iba riadkov, ktoré zodpovedajú podmienke DELETE test_table WHERE summa > 100

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

Structured Query Language (štruktúrovaný dopytovací jazyk) 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 prevzali n-ticové výpočty, 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 cue el“. Mnoho databázových špecialistov však používalo „slangovú“ výslovnosť „Sequel“, ktorá odrážala pôvodný názov jazyka Sequel, ktorý bol neskôr zmenený kvôli konfliktom ochranných známok a názvov v 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. Potom bol 1999 znovu 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 až koncom roka 2001 podporovalo implementácie SQL iba niekoľko systémov správy databáz: 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“ korporácie Oracle alebo implementácia Sybase a Microsoft s názvom „Transact-SQL“, ktorá môže používateľa zmiasť.základy programovania. Nie je nezvyčajné ani to, že komerčné implementácie vynechávajú podporu kľúčových funkcií štandardu, ako sú dátové typy ako dátum a čas, v prospech niektorých vlastných. Výsledkom je, že na rozdiel od ANSI C alebo ANSI Fortran, ktoré sa zvyčajne dajú preniesť z platformy na platformu bez väčších štrukturálnych zmien, dotazy programovacieho jazyka SQL možno len zriedka prenášať medzi rôzne databázové systémy bez väčších úprav. Väčšina ľudí v oblasti databáz sa domnieva, že tento nedostatok interoperability je zámerný s cieľom poskytnúť každému vývojárovi vlastný systém správy databáz a naviazať zákazníka na konkrétnu databázu.
Ako už názov napovedá, programovací jazyk SQL je určený na špecifický, obmedzený účel – dotazovanie sa na údaje obsiahnuté v relačnej databáze. Ako taký je to súbor inštrukcií programovacieho jazyka na vytváranie vzoriek údajov, a nie procedurálny jazyk ako C alebo BASIC, ktoré sú určené na riešenie oveľa širšieho spektra problémov. Rozšírenia jazyka ako "PL/SQL" sú navrhnuté tak, aby riešili toto obmedzenie pridaním procedurálnych prvkov do SQL pri zachovaní výhod SQL. Ďalším prístupom je umožniť SQL dotazom vložiť príkazy procedurálneho programovacieho jazyka a interagovať s databázou. Napríklad Oracle a ďalšie podporujú jazyk Java v databáze, zatiaľ čo PostgreSQL umožňuje písať funkcie v jazyku Perl, Tcl alebo C.
Jeden SQL vtip: "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

Ak je zadaná tabuľka 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, 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 popis požadovaného výsledku ako množiny. Dotaz nešpecifikuje, ako by mali byť výsledky usporiadané - preloženie dotazu do formulára, ktorý je možné 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 majú z tabuľky odstrániť.

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á sa buď úplne spustí, alebo sa nespustí vôbec.
  • COMMIT uvádza, že všetky zmeny údajov po potvrdení operácie sa uložia.
  • ROLLBACK určuje, že všetky zmeny údajov od posledného potvrdenia alebo vrátenia by mali byť zničené až do bodu, ktorý bol potvrdený do databázy ako "vrátenie".

COMMIT a ROLLBACK sa používajú v oblastiach, ako je kontrola transakcií a zámky. Obe inštrukcie dokončia všetky aktuálne transakcie (množiny databázových operácií) a uvoľ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 sa týka skupiny Data Definition Language alebo DDL (Data Definition Language). DDL umožňuje užívateľovi definovať nové tabuľky a súvisiace 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 majú vytvoriť v databáze.
  • DROP určuje, ktoré existujúce objekty v databáze budú zrušené, 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, ako je napríklad pridávanie 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 na prezeranie alebo manipuláciu s údajmi v databáze. Sú tu dve hlavné kľúčové slová.

Predkladám Vám do pozornosti voľný preklad článku SQL pre začiatočníkov

Čoraz viac moderných webových aplikácií interaguje s databázami, pričom zvyčajne používa daný jazyk SQL. Našťastie pre nás sa tento jazyk dá celkom ľahko naučiť. V tomto článku sa začneme učiť základy SQL dotazov a ich interakciu s databázou. MySQL.

Čo potrebuješ

SQL (Structured Query Language) je jazyk určený na interakciu so systémami správy relačných databáz (DBMS) ako napr. MySQL, Oracle, Sqlite a ďalšie. Na spustenie SQL dotazov v tomto článku predpokladám, že áno MySQL. Odporúčam tiež použiť phpMyAdmin ako vizuálne zobrazenie MySQL.

Nasledujúce aplikácie vám uľahčia inštaláciu MySQL a phpMyAdmin do vášho počítača:

  • WAMP pre Windows
  • MAMP pre Mac

Začnime vykonávať dotazy na príkazovom riadku. WAMP už ho obsahuje v konzole MySQL. Pre MAMP možno si to budete musieť prečítať.

CREATE DATABASE: Vytvorte databázu

Naša úplne prvá požiadavka. Vytvoríme si databázu, s ktorou budeme pracovať.

Najprv otvorte konzolu MySQL a prihláste sa. Pre WAMP, predvolene sa používa prázdne heslo. Pre MAMP heslo musí byť "root".

Po prihlásení napíšte túto požiadavku a kliknite Zadajte:

CREATE DATABASE my_first_db;

Všimnite si, že na koniec dotazu sa pridáva bodkočiarka (;), rovnako ako na koniec riadku v kóde.

Rovnako aj kľúčové slová VYTVORIŤ DATABÁZU nerozlišujú sa malé a veľké písmená, rovnako ako všetky kľúčové slová v SQL. Pre lepšiu čitateľnosť ich ale napíšeme veľkými písmenami.

Poznámka: znaková sada a poradie zoraďovania

Ak chcete nastaviť predvolenú znakovú sadu a poradie zoraďovania, použite takýto dotaz:

VYTVORIŤ DATABÁZU my_first_db PREDVOLENÁ SET ZNAKOV utf8 COLLATE utf8_general_ci;

Zoznam podporovaných znakových sád a porovnávaní nájdete na MySQL.

ZOBRAZIŤ DATABÁZY: Zoznam všetkých databáz

Tento dotaz sa používa na zobrazenie všetkých databáz.

DROP DATABASE: Zrušte databázu

Pomocou tohto dotazu môžete vymazať existujúcu databázu.

Pri tomto dopyte buďte opatrní, pretože nevytlačí žiadne upozornenia. Ak máte v databáze tabuľky a údaje, dotaz ich všetky okamžite zahodí.

Z technického hľadiska to nie je požiadavka. Toto je "operátor" a nevyžaduje bodkočiarku na konci.

Hlási sa MySQLže je potrebné vybrať predvolenú databázu a pracovať s ňou až do konca relácie. Teraz sme pripravení vytvoriť tabuľky a zvyšok tejto databázy.

Čo je databázová tabuľka?

Tabuľku v databáze si môžete predstaviť ako normálnu tabuľku alebo ako súbor csv so štruktúrovanými údajmi.

Ako v tomto príklade, tabuľka má názvy riadkov a stĺpce údajov. Pomocou SQL dotazov môžeme vytvoriť túto tabuľku. Údaje môžeme tiež pridávať, čítať, upravovať a mazať.

CREATE TABLE: Vytvorte tabuľku

Pomocou tohto dotazu môžeme vytvoriť tabuľku v databáze. Bohužiaľ dokumentácia MySQL nie je veľmi priateľský k novým používateľom. Štruktúra tohto dotazu môže byť veľmi zložitá, ale začneme jednoducho.

Nasledujúci dotaz vytvorí tabuľku s dvoma stĺpcami.

Používatelia CREATE TABLE (používateľské meno VARCHAR(20), dátum_vytvorenia DATE);

Všimnite si, že dotaz môžeme napísať na viacero riadkov a použiť Tab na ústup.

S prvým riadkom je všetko jednoduché. Vytvoríme tabuľku s názvom používateľov. Ďalej v zátvorkách sú stĺpce tabuľky uvedené oddelené čiarkami. Za každým názvom stĺpca nasleduje typ údajov, napr. VARCHAR alebo DÁTUM.

VARCHAR(20) znamená, že stĺpec je typu string a nemôže mať viac ako 20 znakov. DÁTUM- dátový typ určený na ukladanie dátumov vo formáte: "RRRR-MM-DD".

primárny kľúč

Pred vykonaním tohto dotazu musíme vložiť stĺpec ID používateľa, ktorý bude PRIMÁRNYM KĽÚČOM. Bez toho, aby sme zachádzali do prílišných podrobností, môžete si primárny kľúč predstaviť ako spôsob, ako rozpoznať každý riadok údajov v tabuľke.

Žiadosť vyzerá takto:

CREATE TABLE užívateľov (user_id INT AUTO_INCREMENT PRIMARY KEY, užívateľské meno VARCHAR(20), create_date DATE);

INT- 32-bitový typ celého čísla (numerický). AUTOMATICKÝ PRÍRASTOK automaticky vygeneruje nové identifikačné číslo vždy, keď sa pridá riadok údajov. Nevyžaduje sa to, ale je to s ním pohodlnejšie.

Tento stĺpec nemusí byť celé číslo, hoci ide o najbežnejší typ údajov. Stĺpec primárneho kľúča sa nevyžaduje, ale odporúča sa na zlepšenie výkonu a architektúry databázy.

Spustíme dotaz:

ZOBRAZIŤ TABUĽKY: Zoznam všetkých tabuliek

Dotaz vám umožňuje získať zoznam všetkých tabuliek v aktuálnej databáze.

VYSVETLITE: Zobrazte štruktúru tabuľky

Tento dotaz použite na zobrazenie štruktúry existujúcej tabuľky.

V dôsledku toho sa zobrazia polia (stĺpce) a ich vlastnosti.

DROP TABLE: Zhodiť stôl

Páči sa mi to DROP DATABÁZY, tento dotaz vymaže tabuľku a jej obsah bez akéhokoľvek varovania.

ALTER TABLE: Zmena tabuľky

Takýto dotaz môže mať zložitú štruktúru, pretože môže vykonať viacero zmien v tabuľke. Pozrime sa na jednoduché príklady.

Kvôli čitateľnosti SQL, táto žiadosť nepotrebuje vysvetlenie.

Odstránenie je rovnako jednoduché. Žiadosť používajte opatrne, údaje sa vymažú bez varovania.

Znova pridajte pole email, budete ho potrebovať neskôr:

Používatelia ALTER TABLE PRIDAŤ e-mail VARCHAR(100) ZA užívateľským menom;

Niekedy môže byť potrebné zmeniť vlastnosti stĺpca, nie je potrebné ho odstraňovať a vytvárať znova.

Tento dotaz premenuje pole užívateľské meno v užívateľské meno a zmení jeho typ z VARCHAR(20) na VARCHAR(30). Takéto zmeny neovplyvnia údaje v tabuľke.

INSERT: Pridanie údajov do tabuľky

Pridajme záznamy do tabuľky pomocou dotazov.

Ako môžeš vidieť, VALUES() obsahuje zoznam hodnôt oddelených čiarkami. Hodnoty reťazca sú uzavreté v jednoduchých úvodzovkách. Hodnoty musia byť v poradí špecifikovanom pri vytváraní tabuľky.

Všimnite si, že prvá hodnota je NULOVÝ pre primárny kľúč, ktorého pole sme pomenovali ID používateľa. Všetko preto, že pole je označené ako AUTOMATICKÝ PRÍRASTOK a id sa vygeneruje automaticky. Prvý riadok údajov bude mať id 1. Ďalší pridaný riadok bude 2 atď.

Alternatívna syntax

Tu je ďalšia syntax na vkladanie riadkov.

Tentoraz sme použili kľúčové slovo SET namiesto HODNOTY. Všimnime si niekoľko vecí:

  • Stĺpec je možné vynechať. Pole sme napríklad nepriradili žiadnu hodnotu ID používateľa pretože je označený ako AUTOMATICKÝ PRÍRASTOK. Ak do poľa s typom nepriradíte hodnotu VARCHAR, potom štandardne prevezme hodnotu prázdneho reťazca (ak pri vytváraní tabuľky nebola nastavená iná predvolená hodnota).
  • Každý stĺpec môže byť označený názvom. Polia teda môžu ísť v akomkoľvek poradí, na rozdiel od predchádzajúcej syntaxe.

Alternatívne číslo syntaxe 2

Tu je ďalší príklad.

Ako predtým, polia sú prístupné podľa názvu, môžu sa objaviť v ľubovoľnom poradí.

Tento dotaz použite na získanie ID posledného vloženého riadku.

TERAZ()

Je čas ukázať vám, ako používať funkcie MySQL v žiadostiach.

Funkcia TERAZ() vráti aktuálny dátum. Použite ho na automatické pridanie aktuálneho dátumu do poľa s typom DÁTUM.

Upozorňujeme, že sme dostali varovanie od MySQL, ale to nie je také dôležité. Dôvodom je funkcia TERAZ() vlastne vracia časovú informáciu.

Vytvorili sme pole dátum_vytvorenia, ktorý môže obsahovať iba dátum, nie čas, takže údaje boli skrátené. Namiesto TERAZ() by sme mohli použiť CURDATE(), ktorý vráti iba aktuálny dátum, no skončil by s rovnakým výsledkom.

SELECT: Získavanie údajov z tabuľky

Je zrejmé, že údaje, ktoré sme napísali, sú zbytočné, kým ich nedokážeme prečítať. Žiadosť prichádza na záchranu VYBRAŤ.

Najjednoduchší príklad použitia dotazu VYBRAŤ na čítanie údajov z tabuľky:

Hviezdička (*) znamená, že chceme získať všetky stĺpce tabuľky. Ak potrebujete získať iba určité stĺpce, použite niečo takéto:

Častejšie chceme získať iba určité riadky, nie všetky. Napríklad získajme e-mailovú adresu používateľa nettuts.

Je to podobné ako podmienka IF. WHERE vám umožňuje nastaviť podmienku v dotaze a získať požadovaný výsledok.

Podmienka rovnosti používa jednoduché znamienko (=) namiesto dvojitého znamienka (==), ktoré môžete použiť pri programovaní.

Môžete použiť aj ďalšie podmienky:

A a ALEBO sa používajú na kombináciu podmienok:

Upozorňujeme, že číselné hodnoty nemusia byť uzavreté v úvodzovkách.

IN()

Používa sa na porovnanie s viacerými hodnotami.

PÁČI SA MI TO

Umožňuje vám nastaviť vzor vyhľadávania.

Znak percenta (%) sa používa na určenie vzoru.

OBJEDNAJ PODĽA PODMIENKY

Túto podmienku použite, ak chcete, aby sa výsledok vrátil zoradený:

Predvolené poradie je ASC(Vzostupne). Pridať DESC triediť v opačnom poradí.

LIMIT … OFFSET …

Môžete obmedziť počet vrátených riadkov.

LIMIT 2 berie prvé dva riadky. LIMIT 1 OFFSET 2 zaberie jeden riadok po prvých dvoch. LIMIT 2, 1 znamená to isté, iba prvé číslo je posun a druhé obmedzuje počet riadkov.

AKTUALIZÁCIA: Aktualizácia údajov v tabuľke

Tento dotaz sa používa na aktualizáciu údajov v tabuľke.

Väčšinou používané spolu s KDE aktualizovať konkrétne riadky. Ak podmienka KDE nie je nastavené, zmeny sa použijú na všetky riadky.

Ak chcete obmedziť riadky, ktoré je možné upraviť, môžete použiť LIMIT.

DELETE: Odstránenie údajov z tabuľky

Páči sa mi to , tento dotaz sa často používa v spojení s podmienkou KDE.

SKRAŤ TABUĽKU

Ak chcete odstrániť obsah z tabuľky, použite nasledujúci dotaz:

VYMAZAŤ Z používateľov;

Pre lepší výkon použite .

Vynulujte aj počítadlo poľa AUTOMATICKÝ PRÍRASTOK, takže novo pridané riadky budú mať ID rovné 1. Pri použití to sa nestane a počítadlo bude naďalej rásť.

Únikové hodnoty reťazca a špeciálne slová

Hodnoty reťazca

Niektoré postavy je potrebné utiecť, inak môžu nastať problémy.

Opačná lomka (\) sa používa na escapovanie.

Je to veľmi dôležité z bezpečnostných dôvodov. Všetky používateľské údaje musia byť pred zápisom do databázy escapované. AT PHP použite funkciu mysql_real_escape_string() alebo pripravené dotazy.

Špeciálne slová

Pretože v MySQL veľa rezervovaných slov ako VYBRAŤ alebo , aby ste sa vyhli rozporom, uzavrite názvy stĺpcov a tabuliek do úvodzoviek. A musíte použiť nie obyčajné úvodzovky, ale spätné začiarknutia (`).

Povedzme, že z nejakého dôvodu chcete pridať stĺpec s názvom :

Záver

Ďakujem za prečítanie článku. Dúfam, že som vám ten jazyk mohol ukázať SQL veľmi funkčné a ľahko sa učí.

Vitajte na mojej blogovej stránke. Dnes si povieme niečo o SQL dotazoch pre začiatočníkov. Niektorí správcovia webu môžu mať otázku. Prečo sa učiť sql? Nedá sa obísť?

Ukazuje sa, že to nebude stačiť na vytvorenie profesionálneho internetového projektu. Sql slúži na prácu s databázou a vytváranie aplikácií pre WordPress. Pozrime sa na to, ako používať dotazy podrobnejšie.

Čo to je

Sql je štruktúrovaný dopytovací jazyk. Vytvorené na určenie typu údajov, poskytnutie prístupu k nim a spracovanie informácií v krátkych časových úsekoch. Popisuje komponenty alebo niektoré výsledky, ktoré chcete vidieť v internetovom projekte.

Zjednodušene povedané, tento programovací jazyk umožňuje pridávať, upravovať, vyhľadávať a zobrazovať informácie v databáze. Popularita mysql je spôsobená tým, že sa používa na vytváranie dynamických internetových projektov, ktoré sú založené na databáze. Preto, aby ste vytvorili funkčný blog, musíte sa tento jazyk naučiť.

Čo dokáže

Jazyk sql umožňuje:

  • vytvárať tabuľky;
  • zmeniť prijímanie a ukladanie rôznych údajov;
  • kombinovať informácie do blokov;
  • chrániť údaje;
  • vytvárať požiadavky v prístupe.

Dôležité! Po riešení sql môžete písať aplikácie pre WordPress akejkoľvek zložitosti.

Aká štruktúra

Databáza pozostáva z tabuliek, ktoré môžu byť reprezentované ako súbor Excel.

Má meno, stĺpce a riadok s niekoľkými informáciami. Takéto tabuľky môžete vytvoriť pomocou dotazov SQL.

Čo potrebuješ vedieť


Kľúčové body pri učení Sql

Ako je uvedené vyššie, dotazy sa používajú na spracovanie a zadávanie nových informácií do databázy pozostávajúcej z tabuliek. Každý riadok je samostatný záznam. Poďme si teda vytvoriť databázu. Ak to chcete urobiť, napíšte príkaz:

Vytvorte databázu 'bazaname'

V úvodzovkách píšeme názov databázy v latinke. Skúste pre ňu vymyslieť zmysluplné meno. Nevytvárajte databázu ako „111“, „www“ a podobne.

Po vytvorení databázy nainštalujte:

SET NAMES ‘utf-8’

Je to potrebné, aby sa obsah na stránke zobrazoval správne.

Teraz vytvoríme tabuľku:

VYTVORIŤ TABUĽKU 'bazaname' . 'tabuľka' (

id INT(8) NOT NULL PRIMÁRNY KĽÚČ AUTO_INCREMENT,

log VARCHAR(10),

prejsť VARCHAR(10),

dátum DATE

V druhom riadku máme napísané tri atribúty. Pozrime sa, čo znamenajú:

  • Atribút NOT NULL znamená, že bunka nebude prázdna (pole je povinné);
  • Hodnota AUTO_INCREMENT je automatické dopĺňanie;
  • PRIMARY KEY je primárny kľúč.

Ako pridať informácie

Na vyplnenie polí vytvorenej tabuľky hodnotami sa používa príkaz INSERT. Píšeme nasledujúce riadky kódu:

VLOŽIŤ DO 'tabuľky'

(login , pass , date) VALUES

('Vasa', '87654321', '21.06.2017 18:38:44');

V zátvorkách uvádzame názov stĺpcov a v ďalšom - hodnoty.

Dôležité! Postupujte podľa postupnosti názvov stĺpcov a hodnôt.

Ako aktualizovať informácie

Na tento účel sa používa príkaz UPDATE. Pozrime sa, ako zmeniť heslo pre konkrétneho používateľa. Píšeme nasledujúce riadky kódu:

UPDATE 'table' SET pass = '12345678' WHERE id = '1'

Teraz zmeňte heslo na „12345678“. Zmeny sa vyskytujú v riadku s "id"=1. Ak nenapíšete príkaz WHERE, zmenia sa všetky riadky, nie konkrétny.

Odporúčam vám, aby ste si knihu kúpili SQL pre figuríny ". S jeho pomocou budete vedieť profesionálne pracovať s databázou krok za krokom. Všetky informácie sú postavené na princípe od jednoduchých po zložité a budú dobre prijaté.

Ako vymazať záznam

Ak ste niečo napísali zle, opravte to príkazom DELETE. Funguje rovnako ako UPDATE. Napíšeme nasledujúci kód:

DELETE FROM 'table' WHERE id = '1'

Vzorkovanie informácií

Príkaz SELECT sa používa na načítanie hodnôt z databázy. Napíšeme nasledujúci kód:

SELECT * FROM 'table' WHERE id = '1'

V tomto príklade vyberieme všetky dostupné polia v tabuľke. Toto sa stane, ak do príkazu napíšete hviezdičku „*“. Ak potrebujete vybrať nejakú vzorovú hodnotu, napíšte takto:

VYBERTE denník, prejdite do tabuľky FROM WHERE id = '1'

Treba si uvedomiť, že schopnosť pracovať s databázami nebude stačiť. Ak chcete vytvoriť profesionálny internetový projekt, budete sa musieť naučiť pridávať údaje z databázy na stránky. Aby ste to dosiahli, oboznámte sa s webovým programovacím jazykom php. Toto vám pomôže Skvelý kurz Michaila Rusakova .


Odstránenie tabuľky

Vyskytuje sa s požiadavkou DROP. Ak to chcete urobiť, napíšte nasledujúce riadky:

stôl DROP TABLE;

Výstup záznamu z tabuľky podľa určitej podmienky

Zvážte tento kód:

SELECT id, country, city FROM table WHERE people>150000000

Zobrazí záznamy krajín, v ktorých je viac ako stopäťdesiat miliónov obyvateľov.

Združenie

Prepojenie viacerých stolov je možné pomocou funkcie Join. Pozrite sa, ako to funguje v tomto videu:

PHP a MySQL

Ešte raz chcem zdôrazniť, že požiadavky pri vytváraní internetového projektu sú bežná vec. Ak ich chcete použiť v dokumentoch php, postupujte podľa nasledujúceho algoritmu akcií:

  • Pripojte sa k databáze pomocou príkazu mysql_connect();
  • Pomocou mysql_select_db() vyberte požadovanú databázu;
  • Spracovanie dotazu pomocou mysql_fetch_array();
  • Spojenie ukončíme príkazom mysql_close().

Dôležité! Práca s databázou nie je náročná. Hlavná vec je správne napísať žiadosť.

Začínajúci webmasteri si budú myslieť. A čo si na túto tému prečítať? Chcel by som odporučiť knihu Martina Grabera " SQL pre obyčajných smrteľníkov ". Je napísaná tak, že začiatočníci všetkému porozumejú. Použite ju ako referenčnú knihu.

Ale toto je teória. Ako to funguje v praxi? Internetový projekt musí byť v skutočnosti nielen vytvorený, ale aj privedený na vrchol spoločností Google a Yandex. Video kurz vám s tým pomôže " Tvorba a propagácia stránky ».


Video návod

Stále máte otázky? Pozrite si ďalšie online video.

Záver

Práca s písaním SQL dotazov teda nie je taká náročná, ako sa zdá, ale musí to urobiť každý správca webu. Vyššie popísané video kurzy vám v tom pomôžu. Prihlásiť sa na odber moja skupina VKontakte byť prvý, kto sa dozvie o nových zaujímavých informáciách.