Počítače Okna Internet

4 jaké funkce se používají v jazyce sql. Řetězcové funkce SQL - příklady použití. Syntaxe příkazu SELECT a pořadí zpracování

V tomto článku si můžete prohlédnout typy funkcí v jazyce SQL. Funkce mohou být agregované nebo skalární. Začněme ...

POČET ()

POČET ()- funkce, která vrací počet záznamů (řádků) tabulky. Zápis funkce určující sloupec vrátí počet záznamů pro konkrétní sloupec, s výjimkou záznamů NULL. Syntaxe funkce:

COUNT (název_sloupce);

Záznam funkce s maskou "*" vrátí počet všech záznamů v tabulce. Syntax:

POČET (*);

Podívejme se na několik příkladů. Existuje následující tabulka univerzit:

ID Název univerzity Studenti fakulty profesoři Umístění místo
1 Státní národní výzkumná univerzita v Permu 12400 12 1229 Perm psu.ru
2 Petrohradská státní univerzita 21300 24 13126 Petrohrad spbu.ru
3 Novosibirská státní univerzita 7200 13 1527 Novosibirsk nsu.ru
4 Moskevská státní univerzita 35100 39 14358 Moskva msu.ru
5 Vyšší ekonomická škola 20335 12 1615 Moskva hse.ru
6 Uralská federální univerzita 57000 19 5640 Jekatěrinburg urfu.ru
7 Národní výzkumná jaderná univerzita 8600 10 936 Moskva mephi.ru

Příklad 1. Vytiskněte počet záznamů v tabulce pomocí funkce POČET:

VYBRAT POČET (*)
Z univerzit; // vytiskne 7

Příklad 2. Najděte počet univerzit v Moskvě pomocí funkce COUNT:

SELECT COUNT (*) FROM Universities WHERE Location = "Moskva"; // vytiskne 3

AVG ()

AVG ()- funkce, která vrací průměrnou hodnotu sloupce. Tato funkce je použitelná pouze pro číselné sloupce. Syntax:

AVG (název_sloupce);

Podívejme se na příklad. Vezměme si náš univerzitní stůl. Příklad. Najděte průměrný počet studentů pro všechny univerzity pomocí funkce AVG:

VYBERTE AVG (Studenti) Z univerzit; // tiskne 23133

MIN ()

MIN ()- funkce, která vrací minimální hodnotu sloupce. Funkce má následující syntaxi:

MIN (název_sloupce);

Podívejme se na příklad. Vezměme si náš univerzitní stůl. Příklad. Pomocí funkce MIN najděte minimální hodnotu ve sloupci Profesoři:

VYBERTE MIN (profesorů) Z univerzit; // vytiskne 936

MAX ()

MAX ()- funkce, která vrací maximální hodnotu sloupce tabulky. Funkce má následující syntaxi:

MAX (název_sloupce);

Podívejme se na příklad. Vezměme si náš univerzitní stůl. Příklad. Pomocí funkce MAX najděte maximální hodnotu sloupce Studenti:

VYBERTE MAX (Studenti) Z univerzit; // vytiskne 57000

SOUČET ()

SOUČET ()- funkce, která vrací součet hodnot sloupce tabulky. Používá se pouze pro číselné sloupce. Syntaxe funkce:

SUM (výraz);

Parametr VŠECHNO- je výchozí možnost. Počítá se součet všech řádků. Při zadávání parametru ODLIŠNÝ- počítají se pouze jedinečné hodnoty.

Podívejme se na několik příkladů. Vezměme si náš univerzitní stůl. Příklad 1. Pomocí funkce SUM zjistěte v tabulce počet Studentů všech vysokých škol:

VYBERTE SOUČET (Studenti) Z univerzit; // vytiskne 161935

Příklad 2. Pomocí funkce SUM vypočítejte jedinečné hodnoty sloupce Fakulty:

VYBERTE SOUČET (ODLIŠNÉ fakulty) Z univerzit; // zobrazí 117 (ve sloupci Fakulty jsou 2 stejné záznamy, pod ID 1 a 5. Hodnota sloupce pod ID 5 se nesčítá.)

KOLO ()

KOLO ()- funkce pro zaokrouhlování desetinných čísel. Funguje pouze s číselnými sloupci nebo libovolnými reálnými čísly. Syntaxe funkce:

ROUND (výraz, délka);

výraz- název sloupce nebo sloupců a také skutečné číslo. délka- označuje přesnost zaokrouhlení čísla.

Podívejme se na příklad. Vezměme si tabulku Planety:

ID PlanetName Poloměr Sluneční sezóna Rok zahájení Mít prsteny Otvírák
1 Mars 3396 687.58 1659 Ne. Christian Huygens
2 Saturn 60268 10759.22 - Ano -
3 Neptune 24764 60190.91 1846 Ano John Couch Adams
4 Rtuť 2439 115.88 1631 Ne. Mikuláš Koperník
5 Venuše 6051 243.56 1610 Ne. Galileo galilei

Příklad. Zaokrouhlete sloupec SunSeason na jedno desetinné místo pomocí funkce ROUND:

SELECT ROUND (SunSeason, 1) FROM Planet;

UCASE ()

UCASE ()- funkce, která vrací hodnoty sloupce nebo sloupců velkými písmeny. V MS DBMS SQL Server analogem UCASE () je funkce UPPER se stejnou syntaxí:

UCASE (název_sloupce)

Podívejme se na příklad. Vezměme si náš stůl Planety. Příklad. Vytiskněte názvy planet velkými písmeny, které nemají prstence, pomocí funkce UCASE:

SELECT UCASE (PlanetName) FROM Planets WHERE HavingRings = "Ne";

LCASE ()

LCASE ()- funkce, která vrací hodnoty sloupce nebo sloupců malými písmeny. V MS SQL Server DBMS je analogem operátoru SQL LCASE () funkce LOWER se stejnou syntaxí:

LCASE (název_sloupce);

Podívejme se na příklad. Vezměme si náš stůl Planety. Příklad. Použijte funkci LCASE k zobrazení názvů planet s prstenci malými písmeny:

SELECT LCASE (PlanetName) FROM Planets WHERE HavingRings = "Ano";

LEN ()

LEN ()- funkce, která vrací délku hodnoty v poli záznamu. Funkce vyloučí koncové mezery z počítání. Syntax:

LEN (název_sloupce);

Podívejme se na příklad. Vezměme si náš stůl Planety. Příklad. Vytiskněte otvírák a délku názvu planety, kterou objevil, pomocí funkce LEN:

SELECT otvírák, LEN (název planety) FROM planet;

MID ()

MID ()- funkce, která zobrazí určitý počet znaků v textovém poli tabulky. Syntaxe funkce:

MID (název_sloupce, začátek [, délka]);

Parametr Start nastavuje pozici počátečního znaku. Parametr délka nastavuje počet znaků, které se mají odeslat, počínaje pozicí zadanou v parametru start.

Podívejme se na příklad. Vezměme si náš starý univerzitní stůl. Příklad. Zobrazte první 3 znaky názvu města (Location) pomocí funkce MID:

SELECT MID (Umístění, 1, 3) FROM Universities;

NYNÍ ()

NYNÍ ()- funkce, která vrací systémový čas a datum. Syntaxe funkce:

Podívejme se na příklad. Vezměme si náš starý univerzitní stůl. Příklad. Uveďte, kolik studentů aktuálně studuje na jednotlivých univerzitách. pomocí funkce NYNÍ:

SELECT UniversityName, Students, NOW () AS CurDate FROM Universities;

Pro zajištění materiálu postupujte podle příkladu každé funkce sami. Pokud máte nějaké dotazy, pište do komentářů a já je určitě zodpovím.

Základní SQL příkazy by měl znát každý programátor

SQL, neboli Structured Query Language, se používá k manipulaci s daty v relačním databázovém systému (RDBMS). Tento článek bude hovořit o běžně používaných SQL příkazech, které by měl znát každý programátor. Tento materiál je ideální pro ty, kteří si chtějí oprášit své znalosti SQL před pracovním pohovorem. Chcete-li to provést, analyzujte příklady uvedené v článku a zapamatujte si, čím jste prošli ve dvojicích databázemi.

Všimněte si, že některé databázové systémy vyžadují středník na konci každého příkazu. Středník je standardní ukazatel na konec každého příkazu v SQL. Příklady používají MySQL, takže je vyžadován středník.

Nastavení databáze pro příklady

Vytvořte databázi, která demonstruje, jak týmy fungují. Chcete-li pracovat, musíte si stáhnout dva soubory: DLL.sql a InsertStatements.sql. Poté otevřete terminál a zadejte konzolu MySQL pomocí následujícího příkazu (tento článek předpokládá, že MySQL je již v systému nainstalována):

Mysql -u root -p

Poté zadejte své heslo.

Spusťte následující příkaz. Nazvěme databázi „univerzita“:

VYTVOŘIT DATABÁZI univerzita; USE univerzita; ZDROJ ; ZDROJ

Databázové příkazy

1. Zobrazte dostupné databáze

ZOBRAZIT DATABÁZE;

2. Vytvoření nové databáze

VYTVOŘIT DATABÁZI;

3. Výběr databáze k použití

POUŽITÍ ;

4. Import SQL příkazů ze souboru .sql

ZDROJ ;

5. Odstranění databáze

DROP DATABASE ;

Práce s tabulkami

6. Zobrazení tabulek dostupných v databázi

UKAŽTE TABULKY;

7. Vytvoření nové tabulky

VYTVOŘIT TABULKU ( , , PRIMÁRNÍ KLÍČ ( ), CIZÍ KLÍČ ( ) REFERENCE ());

Omezení integrity pomocí CREATE TABLE

Možná budete muset vytvořit omezení pro konkrétní sloupce v tabulce. Při vytváření tabulky můžete nastavit následující omezení:

  • buňka tabulky nemůže mít hodnotu NULL;
  • primární klíč - PRIMARY KEY (jméno_sloupce1, jméno_sloupec2, ...);
  • cizí klíč - CIZÍ KLÍČ (col_namex1,…, col_namexn) REFERENCE název_tabulky (col_namex1,…, col_namexn).

Lze zadat více než jeden primární klíč. V tomto případě získáte složený primární klíč.

Příklad

Vytvořte tabulku "instruktor":

CREATE TABLE instruktor (ID CHAR (5), jméno VARCHAR (20) NOT NULL, název_oddělení VARCHAR (20), plat NUMERICKY (8,2), PRIMÁRNÍ KLÍČ (ID), CIZÍ KLÍČ (jméno_odd) REFERENCE oddělení (jméno_oddělení));

8. Informace o tabulce

Pomocí následujícího příkazu můžete zobrazit různé informace (typ hodnoty, klíč nebo ne) o sloupcích tabulky:

POPSAT ;

9. Přidání dat do tabulky

VLOŽ DO (, , , ...) HODNOTY ( , , , …);

Při přidávání dat do každého sloupce tabulky nemusíte zadávat názvy sloupců.

VLOŽ DO HODNOTY ( , , , …);

10. Aktualizace dat tabulky

AKTUALIZACE SOUBOR = , = , ... KDE ;

11. Odstranění všech dat z tabulky

ODSTRANIT Z ;

12. Smazání tabulky

SHOP STŮL ;

Příkazy pro vytváření požadavků

13. VYBERTE

SELECT se používá k načtení dat z konkrétní tabulky:

VYBRAT , ,… Z ;

Následující příkaz může zobrazit všechna data z tabulky:

VYBERTE * OD ;

14. VYBERTE ROZDÍL

Sloupce tabulky mohou obsahovat duplicitní data. Pomocí SELECT DISTINCT získáte pouze neduplikovaná data.

VYBERTE ROZDÍL , ,… Z ;

15. KDE

Může být použito klíčové slovo WHERE v SELECT specifikovat podmínky v dotazu:

VYBRAT , ,… Z KDE ;

V žádosti mohou být uvedeny následující podmínky:

  • srovnání textu;
  • porovnání číselných hodnot;
  • logické operace AND (a), OR (nebo) a NOT (negace).

Příklad

Vyzkoušejte následující příkazy. Věnujte pozornost podmínkám uvedeným v KDE:

SELECT * FROM kurz WHERE dept_name = 'Comp. Sci.'; SELECT * FROM kurz WHERE kredity> 3; SELECT * FROM kurz WHERE dept_name = "Comp. Sci." A kredity > 3;

16. GROUP BY

Klauzule GROUP BY se často používá s agregačními funkcemi, jako jsou COUNT, MAX, MIN, SUM a AVG k seskupení výstupních hodnot.

VYBRAT , ,… Z SKUPINA VYTVOŘENÁ ;

Příklad

Zobrazme si počet předmětů pro jednotlivé fakulty:

SELECT COUNT (id_kurzu), název_oddělení FROM GROUP BY název_oddělení;

17. MÍT

Klíčové slovo HAVING bylo přidáno do SQL, protože WHERE nelze použít s agregačními funkcemi.

VYBRAT , , ... Z SKUPINA VYTVOŘENÁ MÍT

Příklad

Uveďme seznam fakult s více než jedním kurzem:

SELECT COUNT (id_kurzu), název_oddělení FROM kurzu GROUP BY název_oddělení HAVING COUNT (id_kurzu)> 1;

18. OBJEDNEJTE DO

ORDER BY se používá k řazení výsledků dotazu v sestupném nebo vzestupném pořadí. ORDER BY seřadí vzestupně, pokud není zadána žádná metoda řazení ASC nebo DESC.

VYBRAT , ,… Z SEŘADIT PODLE , ,… ASC | DESC;

Příklad

Zobrazme seznam kurzů vzestupně a sestupně podle počtu kreditů:

VYBERTE * Z kurzu OBJEDNAT PODLE kreditů; VYBRAT * Z kurzu OBJEDNAT PODLE kreditů DESC;

19. MEZI

BETWEEN se používá k výběru datových hodnot ze zadaného rozsahu. Lze použít číselné a textové hodnoty a také data.

VYBRAT , ,… Z KDE MEZI A ;

Příklad

Zde je seznam instruktorů, jejichž plat je více než 50 000, ale méně než 100 000:

VYBERTE SI * OD instruktora, KDE plat MEZI 50000 A 100000;

20. LIKE

Operátor LIKE se používá ve WHERE k určení vyhledávacího vzoru pro podobnou hodnotu.

V LIKE se používají dva bezplatné operátory:

  • % (žádný, jeden nebo více znaků);
  • _ (jeden znak).
VYBRAT , ,… Z KDE JAKO ;

Příklad

Zobrazme si seznam kurzů, jejichž název obsahuje „do“ a seznam kurzů, jejichž název začíná „CS-“:

SELECT * FROM kurzu WHERE nadpis LIKE '% to%'; SELECT * FROM kurzu WHERE course_id LIKE "CS -___";

21. IN

Pomocí IN můžete zadat více hodnot pro klauzuli WHERE:

VYBRAT , ,… Z KDE V ( , , …);

Příklad

Zobrazme si seznam studentů z Comp. Sci. fyzika a elektrotechnika angl.:

SELECT * FROM student WHERE dept_name IN ('Comp. Sci.', 'Fyzika', 'Elec. Eng.');

22. PŘIPOJTE SE

JOIN se používá k propojení dvou nebo více tabulek pomocí společných atributů v nich. Obrázek níže ukazuje různé způsoby se připojí v SQL. Všimněte si rozdílu mezi levým vnějším spojením a pravým vnějším spojením:

VYBRAT , ,… Z PŘIPOJIT NA = ;

Příklad 1

Zobrazíme seznam všech kurzů a příslušné informace o fakultách:

SELECT * FROM course JOIN department ON course.dept_name = department.dept_name;

Příklad 2

Pojďme si uvést všechny požadované kurzy a podrobnosti o nich:

SELECT prereq.course_id, title, dept_name, kredity, prereq_id FROM prereq LEFT OUTER JOIN course ON prereq.course_id = course.course_id;

Příklad 3

Zobrazíme seznam všech kurzů bez ohledu na to, zda jsou povinné nebo ne:

SELECT course.course_id, title, dept_name, credits, prereq_id FROM prereq RIGHT OUTER JOIN course ON prereq.course_id = course.course_id;

23. Pohled

View je virtuální SQL tabulka vytvořená spuštěním výrazu. Obsahuje řádky a sloupce a je velmi podobný běžné SQL tabulce. Zobrazení vždy zobrazuje nejnovější informace z databáze.

Tvorba

VYTVOŘIT ZOBRAZENÍ JAK VYBERTE , ,… Z KDE ;

Mazání

POHLED POHLEDEM ;

Příklad

Vytvořme pohled skládající se z kurzů se 3 kredity:

24. Agregační funkce

Tyto funkce se používají k získání souhrnného výsledku souvisejícího s danými daty. Běžně používané agregační funkce jsou následující:

  • COUNT (název_sloupce) - vrátí počet řádků;
  • SUM (col_name) - vrací součet hodnot v daném sloupci;
  • AVG (název_sloupce) - Vrací průměrnou hodnotu daného sloupce;
  • MIN (název_sloupce) - Vrací nejmenší hodnotu pro daný sloupec;
  • MAX (název_sloupce) – vrátí největší hodnotu daný sloupec.

25. Vnořené poddotazy

Vnořené poddotazy jsou dotazy SQL, které obsahují klauzule SELECT, FROM a WHERE vnořené do jiného dotazu.

Příklad

Pojďme si najít kurzy, které byly vyučovány na podzim 2009 a na jaře 2010:

SELECT DISTINCT id_kurzu FROM sekce WHERE semestr = 'Podzim' AND rok = 2009 AND ID_kurzu IN (SELECT ID_kurzu FROM sekce WHERE semestr = 'Jaro' AND rok = 2010);

Funkce jsou speciálním typem příkazů v sadě příkazů SQL a každý dialekt má svou vlastní implementaci sady příkazů. Ve výsledku můžeme říci, že funkce jsou jednoslovné příkazy, které vracejí jedinou hodnotu. Hodnota funkce může záviset na vstupních parametrech, jako v případě funkce, která vypočítává průměr seznamu hodnot v databázi. Mnoho funkcí však nepoužívá žádné vstupní parametry, například funkce, která vrací aktuální systémový čas – CURRENTJ1ME.

Standard ANSI podporuje několik užitečných funkcí. Tato kapitola popisuje také tyto funkce Detailní popis a příklady pro každou z platforem. Každá platforma má navíc dlouhý seznam vlastních interních funkcí, které přesahují standard SQL. Tato kapitola poskytuje parametry a popisy všech vnitřních funkcí každé platformy.

Většina platforem má navíc možnost vytvářet vlastní funkce. Za dodatečné informace Uživatelsky definované funkce naleznete v pokynech VYTVOŘIT / ZMĚNIT FUNKCI / POSTUP

Typy funkcí

existuje různé způsoby klasifikace funkcí. Následující podčásti popisují důležité rozdíly, které vám pomohou pochopit, jak funkce fungují.

Deterministické a nedeterministické funkce

Funkce mohou být deterministické a nedeterministické. Deterministická funkce vždy vrací stejný výsledek pro stejnou sadu vstupů. Nedeterministické funkce mohou při různých voláních vracet různé výsledky, i když jsou jim předány stejné vstupní hodnoty.

Proč je tak důležité, že se stejným vstupní parametry máš stejné výsledky? To je důležité, protože definuje, jak se funkce používají v pohledech, uživatelsky definovaných funkcích a uložených procedurách. Omezení se liší platformu od platformy, ale někdy lze na těchto objektech použít pouze deterministické funkce. SQL Server může například vytvořit index na výrazu ve sloupci, pokud výraz neobsahuje nedeterministické funkce. Pravidla a omezení na různých platformách se liší, proto při používání funkcí nahlédněte do dokumentace výrobce.

Agregátní a skalární funkce

Dalším způsobem klasifikace funkcí je, když mohou pracovat pouze s jedním řádkem, s kolekcí hodnot nebo se sadami řádků. Agregační funkce pracují se sbírkou hodnot a vracejí jedinou celkovou hodnotu. Skalární funkce vracejí jednu hodnotu v závislosti na skalárních vstupních argumentech. Některé skalární funkce, například CURRENTJTIME, nevyžadují žádné argumenty.

Funkce okna

Funkce okna lze považovat za podobné agregovaným funkcím v tom, že mohou fungovat na více řádcích najednou. Rozdíl je v tom, jak jsou tyto řádky specifikovány. Agregační funkce fungují na sadách řádků zadaných v klauzuli GROUP BY. V případě funkcí okna je sada řádků určena při každém volání funkce a různé výzvy funkce v rámci stejného dotazu mohou pracovat s různými sadami řádků.

Pokračujeme ve studiu dotazovacího jazyka SQL a dnes o tom budeme mluvit Funkce SQL řetězců... Pokryjeme základní a běžně používané funkce řetězce, jako jsou: SNÍŽIT, LTRIM, VYMĚNIT a další, vše zvážíme samozřejmě na příkladech.

VYBERTE jméno || příjmení JAKO FIO Z tabulky

Nebo pro oddělení mezerou zadejte

VYBERTE jméno || "" || příjmení JAKO FIO Z tabulky

ty. dva svislé pruhy spojují dva sloupce do jednoho a abych je oddělil mezerou, vložil jsem mezi ně mezeru ( můžete použít jakýkoli znak, například pomlčku nebo dvojtečku) v apostrofech a také v kombinaci se dvěma svislými pruhy ( Transact-SQL používá + místo dvou svislých pruhů).

funkce INITCAP

Další je také velmi užitečná funkce, INITCAP- která vrací hodnotu v řetězci, ve kterém každé slovo začíná velkým písmenem a pokračuje malými písmeny. To je nutné, pokud nedodržujete pravidla vyplňování v konkrétním sloupci a chcete-li zobrazit celou věc krásná forma můžete tuto funkci použít např. v tabulce máte ve sloupci jméno následující tvar: IVAN ivanov nebo petr petrov, tuto funkci využijete.

VYBERTE INITCAP (jméno) JAKO FIO Z tabulky

A dostanete to takhle.

Funkce UPPER

Podobná funkce, pouze vrátí všechny velké znaky, to je HORNÍ.

SELECT UPPER (name) AS FIO FROM table

  • jméno - název sloupce;
  • 20 - počet znaků ( délka pole);
  • „-“ je znak, který má být doplněn na požadovaný počet znaků.

funkce RPAD

Uvažujme ihned inverzní funkci. RPAD- akce a syntaxe jsou stejné jako u LPAD, pouze znaky napravo jsou vycpané ( v LPAD vlevo).

SELECT RPAD (jméno, 20, "-") JAKO název FROM tabulky

Ivan —————-
Sergey-----

Funkce LTRIM

Další je také užitečná funkce v některých případech, LTRIM- tato funkce odstraní znaky zcela vlevo, které určíte. Například máte ve své databázi sloupec „město“, ve kterém je město uvedeno jako „Moskva“, a existují také města, která jsou uvedena jednoduše „Moskva“. Ale musíte zobrazit zprávu pouze ve tvaru "Moskva" bez "g." Stačí zadat nějaký druh vzoru "g." a pokud znaky nejvíce vlevo začínají na „g“, pak se tyto znaky jednoduše nezobrazí.

VYBERTE LTRIM (město, "město") JAKO gorod Z tabulky

Tato funkce prohledá znaky vlevo, pokud ve vzoru na začátku řetězce nejsou žádné znaky, pak vrátí původní hodnotu buňky a pokud ano, smaže je.

Funkce RTRIM

Pojďme se také rovnou podívat na inverzní funkci. RTRIM- stejně jako LTRIM, pouze znaky se hledají vpravo.

Poznámka! V Transact-SQL funkce RTRIM a LTRIM odstraňují mezery zprava a zleva.

funkce REPLACE

Nyní se podíváme na tak zajímavou funkci jako NAHRADIT- vrací řetězec, ve kterém jsou všechny shody znaků nahrazeny vašimi znaky, které určíte. K čemu se to dá použít, máte například ve své databázi sloupce, ve kterých jsou nějaké oddělovací znaky, například "/". Například Ivan / Ivanov, a chcete zobrazit Ivan-Ivanov, pak napište

VYBERTE REPLACE (název, "/", "-") Z tabulky

a budete mít nahrazení symbolů.

Tato funkce nahradí pouze úplnou shodu znaků, pokud například zadáte „-“, tj. bude hledat pouze tři pomlčky a nenahradí každou jednotlivou pomlčku, na rozdíl od další funkce.

funkce TRANSLATE

PŘELOŽIT- funkce řetězce, která nahradí všechny znaky v řetězci znaky, které určíte. Podle názvu funkce můžete hádat, že se jedná o full line feed. Rozdíl mezi touto funkcí a REPLACE je v tom, že nahradí každý vámi zadaný znak, tj. máte tři znaky, řekněme abc a s pomocí TRANSLATE Můžete jej nahradit abc, takže máte a = a, b = b, c = c a podle tohoto principu budou nahrazeny všechny shody znaků. A pokud jste nahradili REPLACE, pak jste hledali pouze úplnou shodu symbolů abc umístěných v řadě.

Funkce SUBSTR

SUBSTRtuto funkci, vrátí pouze rozsah znaků, který určíte. Jinými slovy, řekněme řetězec 10 znaků a nepotřebujete všech deset znaků, ale řekněme, že potřebujete pouze 3-8 ( od třetího do osmého). Pomocí této funkce to můžete snadno provést. Například máte v databázi identifikátor pevné délky (např. AA-BB-55-66-CC) a každá kombinace znaků něco znamená. A v jednu krásnou chvíli vám bylo řečeno, abyste zobrazili pouze 2 a 3 kombinace znaků, za tímto účelem napište dotaz v následujícím tvaru.

SELECT SUBSTR (ident, "4", "8") FROM tabulky

ty. vytiskneme všechny znaky, počínaje 4 a končící 8, a po tomto dotazu dostanete toto:

Funkce LENGTH - délka řetězce

Další funkce se také může hodit, je DÉLKA- který pouze počítá počet znaků v řádku. Například potřebujete zjistit, kolik znaků je v každé buňce ve sloupci, řekněme "jméno", v tabulce jako je tato.

SELECT LENGTH (jméno) FROM tabulky

po této žádosti obdržíte toto.

4
6
7

Zde jsme s vámi a prozkoumali jsme základní funkce řetězce SQL. V budoucích článcích budeme pokračovat v našem zkoumání SQL.

Naučíme se shrnout. Ne, toto ještě nejsou výsledky učení SQL, ale výsledky hodnot sloupců databázových tabulek. Agregační funkce SQL působí na hodnoty sloupců a vytvářejí jedinou výslednou hodnotu. Nejčastěji používané agregační funkce SQL jsou SUM, MIN, MAX, AVG a COUNT. Je nutné rozlišovat dva případy použití agregačních funkcí. Za prvé, agregační funkce se používají samy o sobě a vracejí jedinou výslednou hodnotu. Za druhé, agregační funkce se používají s klauzulí SQL GROUP BY, to znamená se seskupováním podle polí (sloupců), aby se získaly výsledné hodnoty v každé skupině. Podívejme se nejprve na případy použití agregačních funkcí bez seskupování.

Funkce SQL SUM

Funkce SQL SUM vrací součet hodnot sloupce v databázové tabulce. Lze jej použít pouze na sloupce, jejichž hodnoty jsou čísla. SQL dotazy abyste získali výslednou částku, začněte takto:

VYBRAT SOUČET (COLUMN_NAME)...

Za tímto výrazem následuje FROM (TABLE_NAME) a ​​poté lze zadat podmínku pomocí klauzule WHERE. Kromě toho lze před názvem sloupce zadat DISTINCT, což znamená, že se budou počítat pouze jedinečné hodnoty. Ve výchozím nastavení se berou v úvahu všechny hodnoty (k tomu můžete konkrétně zadat ne DISTINCT, ale ALL, ale slovo ALL je volitelné).

Příklad 1 Existuje databáze společnosti s údaji o jejích divizích a zaměstnancích. Tabulka Zaměstnanci má kromě všeho ještě sloupec s údaji o platech zaměstnanců. Výběr z tabulky je následující (pro zvětšení obrázku na něj klikněte levým tlačítkem myši):

Pro získání součtu všech platů použijeme následující dotaz:

VYBERTE SOUČTU (plat) ZE zaměstnanců

Tento dotaz vrátí 287664,63.

A teď . Ve cvičeních již začínáme úkoly komplikovat, přibližovat je těm, se kterými se setkáváme v praxi.

Funkce SQL MIN

Funkce SQL MIN funguje také na sloupcích, jejichž hodnoty jsou čísla a vrací minimum ze všech hodnot ve sloupci. Tato funkce má stejnou syntaxi jako funkce SUM.

Příklad 3 Databáze a tabulka jsou stejné jako v příkladu 1.

Je třeba zjistit minimální mzdu zaměstnanců oddělení s číslem 42. K tomu sepište následující žádost:

Požadavek vrátí hodnotu 10505,90.

A znovu svépomocné cvičení... V tomto a některých dalších cvičeních budete potřebovat nejen tabulku Staff, ale také tabulku Org, která obsahuje údaje o divizích společnosti:


Příklad 4 Tabulka Org je přidána do tabulky Zaměstnanci, která obsahuje údaje o divizích firmy. Zobrazte minimální počet let odpracovaných jedním zaměstnancem v oddělení se sídlem v Bostonu.

Funkce SQL MAX

Funkce SQL MAX funguje podobně a má podobnou syntaxi, která se používá, když potřebujete určit maximální hodnotu mezi všemi hodnotami ve sloupci.

Příklad 5.

Je nutné zjistit maximální plat zaměstnanců oddělení s číslem 42. K tomu napište následující žádost:

Požadavek vrátí hodnotu 18352,80

Nastal čas cvičení pro sebeřešení.

Příklad 6. Opět pracujeme se dvěma tabulkami – Staff a Org. Zobrazte název oddělení a maximální provize získané jedním zaměstnancem v oddělení, které patří do východní divize. Použití JOIN (připojit se ke stolům) .

Funkce SQL AVG

Výše uvedená syntaxe pro dříve popsané funkce platí také pro funkci SQL AVG. Tato funkce vrací průměr všech hodnot ve sloupci.

Příklad 7. Databáze a tabulka jsou stejné jako v předchozích příkladech.

Předpokládejme, že chcete zjistit průměrné pracovní zkušenosti zaměstnanců oddělení číslo 42. Chcete-li to provést, napište následující dotaz:

Výsledkem bude hodnota 6,33

Příklad 8. Pracujeme s jedním stolem – Staff. Vyberte průměrnou mzdu zaměstnanců s praxí 4 až 6 let.

Funkce SQL COUNT

Funkce SQL COUNT vrací počet záznamů v databázové tabulce. Pokud v dotazu zadáte SELECT COUNT (COLUMN_NAME) ..., bude výsledkem počet záznamů s výjimkou záznamů, ve kterých je hodnota sloupce NULL (nedefinováno). Pokud jako argument použijete hvězdičku a spustíte dotaz SELECT COUNT (*) ..., výsledkem bude počet všech záznamů (řádků) v tabulce.

Příklad 9. Databáze a tabulka jsou stejné jako v předchozích příkladech.

Chcete znát počet všech zaměstnanců, kteří dostávají provize. Počet zaměstnanců, jejichž hodnoty sloupce Comm nejsou NULL, vrátí následující dotaz:

VYBERTE POČET (Komunikace) OD personálu

Výsledkem je 11.

Příklad 10. Databáze a tabulka jsou stejné jako v předchozích příkladech.

Pokud potřebujete zjistit celkový počet záznamů v tabulce, pak jako argument funkce COUNT použijeme dotaz s hvězdičkou:

VYBERTE POČET (*) OD zaměstnanců

Výsledkem je 17.

V dalším svépomocné cvičení budete muset použít poddotaz.

Příklad 11. Pracujeme s jedním stolem – Staff. Zobrazení počtu zaměstnanců v oddělení plánování (Plains).

Agregovat funkce pomocí SQL GROUP BY (seskupení)

Nyní se podívejme na použití agregačních funkcí ve spojení s klauzulí SQL GROUP BY. Klauzule SQL GROUP BY se používá k seskupení výsledných hodnot podle sloupců databázové tabulky. Stránka má lekci věnovanou tomuto operátorovi samostatně .

Příklad 12. Existuje databáze reklamního portálu. Obsahuje tabulku Reklamy, která obsahuje údaje o odeslaných reklamách za daný týden. Sloupec Kategorie obsahuje údaje o velkých kategoriích inzerátů (například Nemovitosti) a Sloupec Díly o menších částech zahrnutých do kategorie (například části Byty a vily jsou součástí kategorie Nemovitosti). Sloupec Jednotky obsahuje údaje o počtu odeslaných inzerátů a sloupec Peníze částku přijatou za odeslání inzerátu.

KategorieČástJednotkyPeníze
DopravaMotorová vozidla110 17600
NemovitostByty89 18690
NemovitostChatky57 11970
DopravaMotocykly131 20960
Stavební materiálPrkna68 7140
ElektrotechnikaTV sety127 8255
ElektrotechnikaLedničky137 8905
Stavební materiálRegips112 11760
Volný časknihy96 6240
NemovitostDomy47 9870
Volný časHudba117 7605
Volný časHry41 2665

Pomocí příkazu SQL GROUP BY zjistěte množství peněz vydělaných zobrazováním reklam v každé kategorii. Píšeme následující žádost:

VYBERTE kategorii, SOUČET (Peníze) JAKO PENÍZE Z Reklamy GROUP BY Category

Příklad 13. Databáze a tabulka jsou stejné jako v předchozím příkladu.

Pomocí příkazu SQL GROUP BY zjistěte, která část každé kategorie měla nejvíce reklam. Píšeme následující žádost:

VYBERTE kategorii, část, MAX (jednotky) JAKO MAXIMUM FROM Ads GROUP BY Category

Výsledkem bude následující tabulka:

Lze získat celkové a jednotlivé hodnoty v jedné tabulce kombinování výsledků dotazu pomocí operátoru UNION .

Relační databáze a jazyk SQL