Operátor výberu jazyka sql je určený pre. SQL – príkazy
SQL (Structured Query Language) je univerzálny počítačový jazyk používaný na vytváranie, úpravu a správu údajov v relačných databázach. Jazyk SQL je založený na relačnej algebre a je zbierkou operátorov.
Existujú 4 skupiny operátorov. Zoberme si skupinu operátorov manipulácie s údajmi (Data Manipulation Language, DML, SQL DML)
Výber údajov
Výber údajov je najbežnejšou operáciou vykonávanou pomocou SQL. Príkaz SELECT je jedným z najdôležitejších príkazov v tomto jazyku, ktorý sa používa na výber údajov. Syntax tohto operátora je nasledovná:
SELECT stĺpec FROM tabuľky
Príkazy SELECT musia obsahovať slová SELECT a FROM; ostatné kľúčové slová sú voliteľné.
Po kľúčovom slove SELECT nasleduje informácia o tom, ktoré polia sa majú zahrnúť do výslednej množiny údajov. Hviezdička (*) označuje všetky polia tabuľky, napríklad:
Ak chcete vybrať jeden stĺpec, použite nasledujúcu syntax:
SELECT Spoločnosť
Príklad výberu viacerých stĺpcov vyzerá takto:
SELECT Spoločnosť,Telefón,Mail
Ak chcete zadať názvy tabuliek, z ktorých sa vyberajú záznamy, použite kľúčové slovo FROM, napríklad:
SELECT * OD zákazníkov
Tento dotaz vráti všetky polia z tabuľky Zákazníci.
Na filtrovanie výsledkov vrátených príkazom SELECT môžete použiť klauzulu WHERE (voliteľná).
VYBERTE * FROM Products WHERE Kategória = 4
V klauzule WHERE môžete použiť rôzne výrazy,
WHERE výraz1 [(AND | ALEBO) výraz2 ...]
Napríklad:
VYBERTE * Z produktov, kde kategória = 2 A Postavshik > 10
VYBERTE Meno, Cena FROM Produkty WHERE Kategória= 3 ALEBO Cena< 50
Môžete použiť nasledujúce operátory:
< Меньше
<= Меньше или равно
<>Nie rovné
> Viac
>= Väčšie alebo rovné
Klauzula ORDER BY (voliteľná) sa používa na zoradenie výslednej množiny údajov podľa jedného alebo viacerých stĺpcov. Na určenie poradia zoradenia sa používajú kľúčové slová ASC (vzostupne) alebo DESC (zostupne). V predvolenom nastavení sú údaje zoradené vo vzostupnom poradí.
Úprava údajov
Okrem získavania údajov možno SQL použiť na aktualizáciu a odstraňovanie údajov, kopírovanie záznamov do iných tabuliek a vykonávanie ďalších operácií. Nižšie sa pozrieme na príkazy UPDATE, DELETE a INSERT používané na vyriešenie niektorých z týchto problémov.
AKTUALIZOVAŤ vyhlásenie
Ak chcete zmeniť hodnoty v jednom alebo viacerých stĺpcoch tabuľky, použite príkaz UPDATE. Syntax tohto operátora je:
UPDATE table SET stĺpec1 = výraz1 kritériá WHERE
Výraz v klauzule SET môže byť konštanta alebo výsledok výpočtu. Ak chcete napríklad zvýšiť ceny všetkých produktov, ktoré stoja menej ako 10 USD, môžete spustiť nasledujúci dotaz:
AKTUALIZÁCIA SADA produktov Cena = Cena * 1.1 KDE Cena< 10
príkaz DELETE
Ak chcete odstrániť riadky z tabuliek, mali by ste použiť operátor DELETE, ktorého syntax je:
Kritériá DELETE FROM tabuľky WHERE
Odstrániť všetky produkty, ktorých cena je nižšia ako 100:
VYMAZAŤ Z produktov KDE Cena< 100
OperátorVLOŽIŤ
Ak chcete pridať záznamy do tabuliek, mali by ste použiť príkaz INSERT, ktorého syntax je:
INSERT INTO tabuľka ( VALUES (výraz [, ...])
Ak chcete napríklad pridať nového zákazníka do tabuľky Zákazníci, môžete použiť nasledujúci dotaz:
INSERT INTO Customers (CustomerID, CompanyName) VALUES ('XYZ', 'XYZ Deli')
V dopytovacom jazyku SQL zaujíma významné miesto príkaz SELECT, keďže ho používame na výber v databáze. V tomto článku sa pozrieme na základy tohto veľmi dôležitého SQL príkazu.
Na internete je veľa rôznych článkov, kníh a tutoriálov o SQL, ale všetky sú pre človeka, ktorý o SQL, alebo možno dokonca o programovaní všeobecne, ťažké, a preto sa mu všetky tieto zdroje ťažko študujú. . Tu sa snažím vysvetliť základy jedného operátora bez toho, aby som išiel do hĺbky ( To je to, čo sťažuje učenie, že prechádzajú priamo od základov ku komplexným dopytom), takže najprv sa musíte naučiť základy a potom prejsť na zložitejšie, čo uľahčuje učenie sa jazyka SQL. Tento článok je ideálny pre začiatočníkov, ktorí sa chcú naučiť písať jednoducho SQL dotazy pre vzorkovanie údajov.
Čo je jazyk SQL a príkaz SELECT
SQL je dotazovací jazyk, ktorý sa používa na manipuláciu (správu) údajov v relačných databázach. Je veľmi populárny, a preto by základy tohto jazyka mal poznať každý sebaúctyhodný IT človek, keďže databázy má takmer každá spoločnosť.
SELECT– operátor jazyka SQL, patrí do skupiny operátorov manipulácie s údajmi ( Jazyk manipulácie s údajmi, DML) a slúži na získanie údajov z databázy.
Poznámka! Aby ste sa naučili jazyk SQL a databázy, existujú špeciálne bezplatné vydania veľkých DBMS, napríklad v SQL Server Microsoft má edíciu Express. Ako nainštalovať túto DBMS si môžete prečítať v materiáli - Popis inštalácie Microsoft SQL Server 2016 Express.
Tu je najjednoduchší príklad použitia príkazu SELECT.
VYBERTE * Z tabuľky
- * — zobraziť všetky údaje;
- FROM - zo zdroja;
- Tabuľka – názov zdroja ( v našom prípade tabuľka).
V praxi však často nepotrebujeme všetky údaje z tabuľky, ale niekedy len niektoré stĺpce, namiesto * () jednoducho uvedieme názov požadovaného stĺpca; alebo reproduktory), Napríklad:
VYBERTE CENU Z tabuľky
kde Cena je názov stĺpca.
Poznámka! Ako príklad použijeme jednoduchú tabuľku so zoznamom modelov počítačov, ich cien a názvov.
Ak potrebujete zadať niekoľko stĺpcov, jednoducho ich uveďte oddelené čiarkami, napríklad za príkazom SELECT
VYBERTE cenu, názov, model FROM Tabuľka
kde cena, názov, model sú stĺpce z tabuľky.
Podmienka výberu – doložka WHERE
Počas procesu vzorkovania pomerne často potrebujeme filtrovať dáta podľa určitej podmienky, t.j. nie všetky údaje, ale iba tie, ktoré spĺňajú podmienku v konštrukte SELECT, môžete na to použiť operátor KDE.
VYBERTE cenu Z tabuľky WHERE cena > 100
kde, KDE je podmienka, t.j. zobrazujeme len riadky, ktoré zodpovedajú našej podmienke ( cena nad 100).
Porovnávacie operátory v SQL
- „>“ – viac ako niečo;
- «<» – меньше чего-нибудь;
- „=“ – rovná sa;
- «<>» – nerovná sa;
- „>=“ – väčšie alebo rovné;
- «<=» – меньше или равно.
V podmienke môžete zadať aj kľúčové slovo MEDZI, t.j. či hodnota spadá alebo nespadá do určitého rozmedzia, napr
VYBERTE CENU Z tabuľky, KDE CENA 400 AŽ 600
kde uvádzame, že cena by mala byť v rozmedzí od 400 do 600.
Ak chcete skontrolovať, či je hodnota testovaného výrazu zahrnutá v špecifickej množine hodnôt, môžete použiť predikát IN.
VYBERTE cenu Z tabuľky WHERE cena V (400, 600)
IN v tomto prípade chceme sa dostať len na cenu s nákladom 400 a 600.
Ak potrebujeme získať iba jedinečné zdrojové reťazce, môžeme zadať kľúčové slovo ROZDIEĽNÝ, Napríklad
VYBERTE ODDIELNU cenu Z tabuľky WHERE cena > 100
Poznámka! Jazyk SQL nerozlišuje veľké a malé písmená. Dotazy môžu byť napísané buď v jednom riadku alebo rozdelené do niekoľkých. Napríklad nasledujúce dva dotazy sú úplne rovnaké.
VYBERTE cenu Z tabuľky
Vyberte cenu z tabuľky
Triedenie OBJEDNAŤ PODĽA
Veľmi často je potrebné triediť výsledok dotazu podľa konkrétneho poľa ( stĺpec). Za týmto účelom po žiadosti uvedieme konštrukciu OBJEDNAŤ PODĽA a tie polia ( možno niekoľko oddelených čiarkami), podľa ktorých chcete zoradiť.
VYBERTE SI cenu Z tabuľky OBJEDNAŤ PODĽA ceny POPIS
Toto je príklad triedenia v zostupnom poradí, ale môžete triediť aj vo vzostupnom poradí namiesto DESC píšeme ASC, ale zvyčajne to tak nepíšeme, pretože vzostupné triedenie je predvolené.
Agregačné funkcie v SQL
SQL má veľmi užitočné takzvané agregačné funkcie, konkrétne:
- COUNT— počet hodnôt v určenom stĺpci;
- SUM— súčet hodnôt v určenom stĺpci;
- AVG— priemerná hodnota v špecifikovanom stĺpci;
- MIN— minimálna hodnota v špecifikovanom stĺpci;
- MAX— maximálna hodnota v špecifikovanom stĺpci.
Napríklad, potrebujeme získať priemernú cenu počítača, maximálnu a minimálnu, na to môžeme napísať nasledujúci dotaz
VYBERTE AVG(cena), MAX(cena), MIN(cena) Z tabuľky
GROUP BY
Hodnoty môžete zoskupiť podľa stĺpcov, napríklad musíme zistiť priemernú cenu pre každý model počítača, v tomto prípade bude požiadavka vyzerať takto
VYBERTE model, AVG (cena) AKO AVGPcena FROM tabuľky GROUP BY modelu
Ak ste si všimli, použil som zadanie tu " pseudonym» pre pohodlnejšie vnímanie výsledkov tejto požiadavky, t.j. za stĺpec napíšte AS a meno, ktoré chcete, aby sa zobrazovalo vo výsledkoch.
Rovnako ako pri použití podmienok v jednotlivých stĺpcoch, môžete pomocou funkcie zadať aj podmienku pre celú skupinu MAJÚCI. Potrebujeme napríklad určiť maximálnu cenu počítača zoskupenú podľa modelov týchto počítačov, ktorých maximálna cena je však nižšia ako 500.
VYBERTE model, MAX (cena) FROM tabuľky GROUP BY model HAVING MAX (cena)< 500
V tomto prípade nám naša požiadavka poskytne počítače zoskupené podľa modelu, ktorých maximálna cena je nižšia ako 500.
Poznámka! Viac o zoskupovaní v SQL si môžete prečítať v tomto materiáli.
Hodnota NULL v SQL
V SQL existuje taká hodnota ako NULL. V skutočnosti NULL znamená absenciu hodnoty ( tie. prázdny). Ak chcete zobraziť všetky riadky, ktoré obsahujú takúto hodnotu ( napríklad za niektorý počítač ešte nemáme stanovenú cenu) môžete použiť nasledujúcu podmienku.
VYBERTE * Z tabuľky, kde je cena NULL
Čo bude znamenať vyhľadávanie všetkých riadkov, ktoré nemajú hodnotu pre pole ceny.
Zjednodušená syntax príkazu SELECT
SELECT<Список полей>alebo * , ...] , ...]Poznámka! Ak máte záujem o jazyk T-SQL, odporúčam prečítať si moju knihu „The T-SQL Programmer’s Way“, v ktorej podrobne, s mnohými príkladmi, hovorím o základoch jazyka Transact-SQL najmä pre začiatočníkov.
To je na dnes všetko, pozreli sme sa na malú časť jazyka SQL, konkrétne na príkaz SELECT. Veľa šťastia!
Disciplína: Databázy
Jazykové operátorySQL
Jazyk SQL obsahuje operátory rôznych kategórií. Akýkoľvek príkaz SQL pozostáva z rezervovaných slov a slov definovaných používateľom v súlade so stanovenými pravidlami syntaxe. Rovnako ako u mnohých programovacích jazykov, väčšina komponentov operátora jazyka nerozlišuje veľké a malé písmená. Výnimkou z tohto pravidla sú ako obvykle znakové údaje, pri ktorých špecifikácii je potrebné pamätať na veľkosť písmen a použiť ten, ktorý je potrebný na reprezentáciu údajov.
Na písanie operátorov v jazyku bol prijatý voľný formát, ktorý umožňuje prostredníctvom odsadenia a zarovnania dodať programu SQL čitateľnejší vzhľad.
každá fráza vo vyhlásení musí začínať na novom riadku;
začiatok každej frázy musí byť zarovnaný so začiatkom ostatných fráz operátora;
každá časť frázy by mala začínať na novom riadku s určitým odsadením vzhľadom na začiatok celej frázy, čo umožní zvýrazniť podradené časti;
Na písanie operátorov sa vzťahujú niektoré konvencie:
veľké písmená sa používajú na písanie vyhradených slov;
Malé písmená sa používajú na písanie slov definovaných používateľom;
zvislý pruh "|"" označuje potrebu vybrať jednu z niekoľkých hodnôt;
kučeravé zátvorky definujú požadovaný prvok;
hranaté zátvorky definujú voliteľný prvok;
Elipsa „...“ sa používa na označenie voliteľnej možnosti zopakovania štruktúry, od nuly po niekoľkokrát.
Operátory definície údajov (tabuľka 1) sa používajú na opis štruktúr použitých údajov. Táto kategória zahŕňa nasledujúce operátory: vytvoriť tabuľku, zrušiť tabuľku, zmeniť tabuľku, vytvoriť zobrazenie, ALTER VIEW, DROP VIEW.
Tabuľka 1 . Operátori definície údajov
Operátor Vysvetlenie
vytvoriť tabuľku Vytvorte tabuľku
DROP table Odstrániť tabuľku
zmeniť tabuľku Zmeniť tabuľku
VYTVORIŤ ZOBRAZENIE Vytvorte zobrazenie
zmeniť pohľad Zmeniť pohľad
drop view Odstrániť zobrazenie
Operátory manipulácie s údajmi, ktoré tvoria ďalšiu kategóriu operátorov, sú určené na naplnenie tabuliek údajmi a aktualizáciu informácií, ktoré sú do nich načítané. Do tejto kategórie patria tieto operátory: delete, insert, update (Tabuľka 2).
Tabuľka 2 . Operátori manipulácie s údajmi
OperátorVysvetlenie
Odstrániť Odstráni jeden alebo viac riadkov, ktoré zodpovedajú podmienkam
filtrovanie zo základnej tabuľky
INSERT Vloží jeden riadok do základnej tabuľky
update Aktualizuje hodnoty jedného alebo viacerých stĺpcov v jednom resp
niekoľko riadkov, ktoré zodpovedajú podmienkam filtrovania
Na získanie informácií z databázy sa používa dopytovací jazyk, ktorý je v SQL reprezentovaný jedným príkazom select (tabuľka 3).
Tabuľka 3. Jazyk dopytu
Operátor Vysvetlenie
vyberte Vyberie riadky; operátor, ktorý vám umožní vygenerovať výsledný výsledok
tabuľky zodpovedajúcej dopytu
Okrem naznačených kategórií operátorov, ktorých účel si po prečítaní vysvetliviek v tabuľkách nie je ťažké predstaviť, je potrebné vyzdvihnúť ešte dve: operátorov riadenia transakcií (tabuľka 4) a nástroje na správu údajov (tabuľka 5).
Tabuľka 4. Správa transakcií
Vysvetlenie operátora
commit Dokončenie transakcie - kompletné spracovanie informácií,
spojené do transakcie
rollback Vrátiť späť transakciu – vrátiť späť zmeny vykonané počas vykonávania
stav databázy, označte ju, aby ste sa k nej mohli neskôr vrátiť
Tabuľka 5 . Správa údajov
Vysvetlenie operátora
ALTER DATABASE Zmena množiny základných objektov v databáze, obmedzenia týkajúce sa
celú databázu
ALTER DBAREA Zmena predtým vytvorenej úložnej oblasti
ALTER PASSWORD Zmena hesla pre celú databázu
CREATE DATABASE Vytvorte novú databázu
VYTVORIŤ DBAREA Vytvorte nový úložný priestor a sprístupnite ho na umiestnenie
DROP DATABASE Zrušte existujúcu databázu
DROP DBAREA Vymažte existujúcu pamäťovú oblasť (ak momentálne neobsahuje
aktívne údaje sa nachádzajú)
GRANT Udelenie prístupových práv k množstvu akcií na určitom databázovom objekte
REVOKE Zakázať prístupové práva k niektorému objektu alebo niektorým akciám
objekt
V komerčných DBMS sa rozšírila množina základných operátorov. Väčšina DBMS obsahuje operátory na definovanie a vymazanie indexu spustenia uloženej procedúry a operátory na definovanie spúšťačov.
Je zvykom začať sa zoznamovať s týmto jazykom zvážením možností dopytovacieho jazyka, ktorý je v jazyku SQL reprezentovaný jedným príkazom select, pretože tento výkonný operátor je, prirodzene, aj najkomplexnejší. Okrem toho bude v budúcnosti zaujímavé sledovať, ako sa dá využiť v spojení s operátormi manipulácie s dátami.
Operátor výberuSELECT . Generovanie dotazov do databázy
Účelom príkazu select je vybrať a zobraziť údaje z jednej alebo viacerých databázových tabuliek. Tento extrémne výkonný, najčastejšie používaný operátor implementuje všetky operácie relačnej algebry. Tá istá požiadavka môže byť realizovaná niekoľkými spôsobmi, ktoré sa môžu výrazne líšiť v čase vykonania.
Vyberte formát výpisu:
VYBERTE *|<список полей>OD<список таблиц>
Zadané poradie fráz v príkaze select sa nedá zmeniť, ale nie sú potrebné všetky jeho časti. Povinné sú len frázy typu select a from. Všetky ostatné časti výpisu môžu byť použité podľa uváženia programátora. Vysvetlenie:
□ Fráza vyberte:
Prítomnosť kľúčového slova všetky(predvolené) znamená, že výsledná tabuľka obsahuje všetky riadky, ktoré spĺňajú podmienky dopytu, čo môže viesť k tomu, že sa vo výslednej tabuľke objavia duplicitné riadky;
Kľúčové slovo zreteľný je určený na uvedenie tabuľky do súladu s princípmi teórie vzťahov, kde sa predpokladá absencia duplicitných riadkov;
symbol " * “ definuje veľmi bežnú situáciu, keď množina výsledkov obsahuje všetky stĺpce zo zdrojovej tabuľky dotazu.
□ Vo fráze od je zadaný zoznam tabuliek zdrojových dotazov.
□ Vo fráze kde sú určené podmienky výberu riadkov výsledkov alebo podmienky spájania riadkov zdrojových tabuliek podobne ako pri operácii podmieneného spojenia v relačnej algebre. Ako podmienky výberu možno použiť tieto predikáty:
Porovnania "=,<>, >, <, >=, <=" - для сравнения результатов вычисления двух выражений; более сложные выражения строятся с помощью логических операторов AND, OR, NOT; значения выражений вычисляются в порядке, который определяется приоритетом используемых операторов и наличием скобок в выражении;
medziAaIN- predikát je pravdivý, keď vypočítaná hodnota výrazu spadá do určeného rozsahu (predikát niemedziaaIN true, keď porovnávaná hodnota nespadá do určeného intervalu);
v- predikát je pravdivý, keď je porovnávaná hodnota zahrnutá v množine daných hodnôt; v tomto prípade môže byť množina hodnôt špecifikovaná jednoduchým enumeráciou alebo vstavaným poddotazom (predikát nie je pravdivý, keď porovnávaná hodnota nie je zahrnutá v danej množine);
ako A nieako- predikáty s opačným významom vyžadujú špecifikáciu šablóny, s ktorou sa daná hodnota porovnáva; podobný predikát je pravdivý, ak sa porovnávaná hodnota zhoduje so vzorom, a v opačnom prípade je nepravdivý;
ISnull- predikát používaný na identifikáciu rovnosti hodnoty nejakého atribútu s nedefinovanou hodnotou:
<имя атрибута> ISnull- má hodnotu true, ak má špecifikovaný atribút v tomto riadku nedefinovanú hodnotu a hodnotu false, inak;
<имя атрибута> ISNIEnull- všetko sa deje naopak.
existujú A nieexistujú, ktorý sa používa v riadkových poddotazoch.
□ Vo fráze skupinapodľa je zadaný zoznam zoskupovacích polí.
□ Vo fráze mať sú špecifikované predikáty-podmienky, ktoré sú kladené na každú skupinu.
□ Vo fráze poriadkupodľa je zadaný zoznam polí zoradenia výsledkov, teda zoznam polí, ktorý určuje poradie zoradenia vo výslednej tabuľke.
Štandard SQL definuje koncept hodnoty NULL, čo si vyžiadalo použitie trojhodnotovej logiky, kde sa všetky logické operácie vykonávajú v súlade s pravdivostnou tabuľkou nižšie (tabuľka 6).
Tabuľka 6 . Tabuľka pravdy
A A B | ||||
TRUE | ||||
1.1. Jednoduché otázky
Žiadosť 1
Zobrazenie informácií o univerzitných katedrách.
Táto úloha spočíva v výbere a zobrazení informácií z jednej tabuľky a všetky jej riadky a všetky jej stĺpce sú predmetom výstupu:
VYBERTE * Z oddelenia
Výsledkom vykonania takéhoto dotazu bude tabuľka obsahujúca informácie o všetkých katedrách univerzity:
Kod kaf |
Meno kaf |
Nom_telef |
Nom_Auditoria |
Col_sotr | |
Ivanov T.M. |
|||||
Všeobecná matematika |
Machov K L. |
||||
Ross L.T. |
|||||
Firsov S.S. |
|||||
Aplikovaná matematika |
Lyakhova I.T. |
Žiadosť 2
Zobrazte telefónne čísla katedier univerzity.
Výsledok takéhoto dotazu by mal obsahovať iba dva stĺpce: Meno_ kaf A Nom_ telef, takže samotná žiadosť by mala vyzerať takto:
SELECT Name_kaf, Nom_telef FROM kafedra
Výsledná tabuľka:
Menokaf Nomjelef
Fyzici 23-34-24
Všeobecná matematika 23-65-43
Príbehy 23-78-72
Grafy 23-99-77
Aplikovaná matematika 23-66-62
Vo vyššie vygenerovaných dotazoch bolo potrebné zobraziť všetky riadky tabuľky špecifikované v klauzule from. Ak pri výbere potrebujete obmedziť počet zobrazených riadkov v súlade s nejakou podmienkou, potom to možno dosiahnuť použitím klauzuly where v dotaze. Do klauzuly where môžete zahrnúť jednu alebo viac podmienok výberu riadkov.
Žiadosť 3
Zobrazenie informácií o Katedre grafiky.
SELECT * FROM kafedra WHERE Name_kaf = "Grafy"
Odpoveď na takúto požiadavku bude obsahovať iba jeden riadok:
Kod.kaf Name_kaf NomjelefNom_Auditoria Col_sotr Zav_kaf
004 Grafy 23-99-77 385 18 Firsov S.S.
Žiadosť 4
Zobrazte informácie o univerzitných katedrách umiestnených na prvom poschodí s prihliadnutím na skutočnosť, že počty učební na prvom poschodí sa pohybujú od 1 do 99.
Žiadosť bude vyzerať takto:
SELECT * FROM kafedra WHERE Nom_Auditoria BETWEEN 1 A 99
Výsledok dotazu:
KodjcafMeno_kafNorn lelef Norn Audit oria Coi_sotr Zavkaf
002 Všeobecná matematika 23-65-43 003 22 Machov K.L.
matematikov
Vo všeobecnosti sú riadky vo výslednej tabuľke nejakým spôsobom zobrazené v neusporiadanom stave. Prezeranie a analýza takéhoto materiálu nie je vždy pohodlné. Ak chcete zoradiť riadky podľa stĺpca, použite poradie podľa klauzuly. Obsahuje zoznam názvov stĺpcov oddelených čiarkami, podľa ktorých chcete usporiadať výstupné informácie. Táto fráza by sa mala v príkaze select vždy vyskytovať ako posledná a ak je prítomná, bude možné zoradiť riadky podľa vzostupných (asc) alebo zostupných (desc) hodnôt zadaného stĺpca alebo kombinácie zadaných stĺpcov, bez ohľadu na to, či tieto stĺpce sú alebo nie sú prítomné vo výslednej tabuľke.
Žiadosť 5
Zobrazenie informácií o univerzitných odboroch v zoradenom stĺpciMeno_ kafvo vzostupnom poradí.
Žiadosť bude vyzerať takto:
VYBERTE * Z cafedra OBJEDNAŤ PODĽA Name_caf ASC
Výsledok tohto dotazu:
Kod_kaf Name_kaf Nomjelef Nom_Auditoria Col_sotr Zav kaf
004 Grafika 23-E9-77 385 18 Firsov S.S.
003 Stories 23-78-72 465 16 Ross L.T.
002 General ma- 23-65-43 003 22 Machov K.L.
témy
005 Podané 23-66-62 028 24 Lyakhova I.T.
matematikov
001 Fyzici 23-34-24 132 25 Ivanov T.M.
Pre lepšiu prehľadnosť je často užitočné zoradiť zobrazované informácie do viacerých stĺpcov. Na tento účel musia byť názvy triediacich stĺpcov uvedené oddelené čiarkami v poradí podľa vety. V tomto prípade bude výstupná tabuľka obsahovať riadky zoradené podľa prvého stĺpca špecifikovaného v poradí podľa klauzuly a riadky, ktoré majú rovnaké hodnoty v tomto stĺpci, budú zoradené podľa hodnôt druhého stĺpca atď. zľava doprava.
Základ jazyka SQL tvoria operátory, podmienene rozdelené do niekoľkých skupín podľa funkcií, ktoré plnia.
Je možné rozlíšiť nasledujúce skupiny príkazov (nie sú uvedené všetky príkazy SQL):
Príkazy DDL (Data Definition Language) - príkazy na definovanie databázových objektov
· CREATE SCHEMA - vytvorenie schémy databázy
· DROP SHEMA - odstránenie schémy databázy
· CREATE TABLE - vytvorte tabuľku
ALTER TABLE - zmena tabuľky
· DROP TABLE - odstránenie tabuľky
· VYTVORIŤ DOMÉNU - vytvorte doménu
ALTER DOMAIN - zmena domény
· DROP DOMAIN - odstránenie domény
· CREATE COLLATION - vytvorte sekvenciu
· DROP COLLATION - odstránenie sekvencie
· VYTVORIŤ ZOBRAZENIE - vytvorenie zobrazenia
· DROP VIEW - odstránenie zobrazenia
DML (Data Manipulation Language) operátory - operátory manipulácie s dátami
· SELECT - výber riadkov z tabuliek
· INSERT - pridanie riadkov do tabuľky
· AKTUALIZÁCIA - zmena riadkov v tabuľke
· DELETE - odstránenie riadkov v tabuľke
· COMMIT - potvrdenie vykonaných zmien
· ROLLBACK - vrátenie vykonaných zmien
Operátori ochrany a správy údajov
· CREATE ASSERTION – vytvorte obmedzenie
· DROP ASSERTION – odstránenie obmedzenia
· GRANT – udeliť privilégiá používateľovi alebo aplikácii na manipuláciu s objektmi
REVOKE - zrušenie privilégií používateľa alebo aplikácie
Okrem toho existujú skupiny operátorov pre nastavenie parametrov relácie, získavanie informácií o databáze, statické SQL operátory a dynamické SQL operátory.
Pre používateľa sú najdôležitejšie príkazy na manipuláciu s údajmi (DML).
Príklady použitia operátorov manipulácie s údajmi
INSERT - vkladanie riadkov do tabuľky
Príklad 1. Vloženie jedného riadku do tabuľky:
VALUES(4; "Ivanov");
UPDATE - aktualizácia riadkov v tabuľke
Príklad 3. Aktualizácia viacerých riadkov v tabuľke:
SET PNAME = "Pushnikov"
WHERE P.PNUM = 1;
DELETE - vymazanie riadkov v tabuľke
Príklad 4. Odstránenie viacerých riadkov v tabuľke:
WHERE P.PNUM = 1;
Príklady použitia príkazu SELECT
Príkaz SELECT je v skutočnosti pre používateľa najkritickejší a najkomplexnejší príkaz SQL. Je určený na získavanie údajov z tabuliek, t.j. v skutočnosti implementuje jeden z hlavných účelov databázy – poskytovanie informácií používateľovi.
Príkaz SELECT sa vždy vykoná na niektorých tabuľkách, ktoré sú súčasťou databázy.
Komentujte. V skutočnosti databázy môžu obsahovať nielen trvalo uložené tabuľky, ale aj dočasné tabuľky a takzvané pohľady. Pohľady sú jednoducho SELECT výrazy uložené v databáze. Z pohľadu používateľa je pohľad tabuľka, ktorá nie je trvalo uložená v databáze, ale „objaví sa“ pri prístupe k nej. Z pohľadu príkazu SELECT vyzerajú perzistentné tabuľky aj dočasné tabuľky a pohľady úplne rovnako. Samozrejme, keď systém skutočne vykoná príkaz SELECT, rozdiely medzi uloženými tabuľkami a zobrazeniami sa berú do úvahy, ale tieto rozdiely skryté od používateľa.
Výsledkom príkazu SELECT je vždy tabuľka. Výsledky príkazu SELECT sú teda podobné ako operátory relačnej algebry. Akýkoľvek operátor relačnej algebry môže byť vyjadrený vhodne formulovaným príkazom SELECT. Zložitosť príkazu SELECT je určená skutočnosťou, že obsahuje všetky možnosti relačnej algebry, ako aj ďalšie možnosti, ktoré sa v relačnej algebre nenachádzajú.
VYBERTE príkaz na vykonanie výpisu
Aby ste pochopili, ako sa získa výsledok vykonania príkazu SELECT, zvážte konceptuálny diagram jeho vykonania. Táto schéma je čisto koncepčná, pretože je zaručené, že výsledok bude rovnaký, ako keby bol vykonaný krok za krokom podľa tejto schémy. Skutočný výsledok je v skutočnosti získaný pomocou sofistikovanejších algoritmov, ktoré konkrétny DBMS „vlastní“.
Fáza 1: Vykonanie jednoduchého príkazu SELECT
Ak operátor obsahuje kľúčové slová UNION, EXCEPT a INTERSECT, potom sa dotaz rozdelí na niekoľko nezávislých dotazov, z ktorých každý sa vykoná samostatne:
Krok 1 (FROM). Vypočíta sa priamy kartézsky súčin všetkých tabuliek špecifikovaných v požadovanom odseku FROM. Ako výsledok kroku 1 dostaneme tabuľku A.
Krok 2 (KDE). Ak je v príkaze SELECT klauzula WHERE, potom sa prehľadá tabuľka A získaná v kroku 1. Podmienený výraz uvedený v klauzule WHERE sa vyhodnotí pre každý riadok z tabuľky A. Vo výsledku sú zahrnuté iba tie riadky, pre ktoré podmienený výraz vráti hodnotu TRUE. Ak je klauzula WHERE vynechaná, prejdite priamo na krok 3. Ak podmienený výraz zahŕňa vnorené poddotazy, vyhodnotia sa podľa tejto koncepčnej schémy. Ako výsledok kroku 2 dostaneme tabuľku B.
Krok 3 (GROUP BY). Ak sa v príkaze SELECT nachádza klauzula GROUP BY, potom sú riadky tabuľky B získané v druhom kroku zoskupené podľa zoznamu zoskupení poskytnutého v klauzule GROUP BY. Ak je klauzula GROUP BY vynechaná, potom prejdite priamo na krok 4. V dôsledku kroku 3 dostaneme tabuľku C.
Krok 4 (HAVING). Ak príkaz SELECT obsahuje klauzulu HAVING, skupiny, ktoré nespĺňajú podmienený výraz uvedený v klauzule HAVING, sú vylúčené. Ak časť HAVING vynecháte, prejdite priamo na krok 5. V dôsledku kroku 4 dostaneme tabuľku D.
Krok 5 (VYBRAŤ). Každá skupina získaná v kroku 4 vygeneruje jeden riadok výsledkov nasledovne. Vyhodnotia sa všetky skalárne výrazy špecifikované v klauzule SELECT. Podľa pravidiel používania klauzuly GROUP BY musia byť takéto skalárne výrazy rovnaké pre všetky riadky v rámci každej skupiny. Pre každú skupinu sa vypočítajú hodnoty agregovaných funkcií uvedených v časti SELECT. Ak neexistuje klauzula GROUP BY, ale v klauzule SELECT sú agregačné funkcie, potom existuje iba jedna skupina. Ak neexistuje ani klauzula GROUP BY, ani agregované funkcie, potom sa predpokladá, že existuje toľko skupín, koľko je doteraz vybratých riadkov. Ako výsledok kroku 5 získame tabuľku E, ktorá obsahuje toľko stĺpcov, koľko je prvkov uvedených v sekcii SELECT, a toľko riadkov, koľko je vybratých skupín.
Fáza 2. Vykonávanie operácií UNION, EXCEPT, INTERSECT
Ak príkaz SELECT obsahoval kľúčové slová UNION, EXCEPT a INTERSECT, potom sa tabuľky vyplývajúce z 1. fázy zlúčia, odčítajú alebo pretínajú.
Etapa 3. Objednávanie výsledku
Ak príkaz SELECT obsahuje klauzulu ORDER BY, potom sú riadky tabuľky získané v predchádzajúcich krokoch zoradené podľa poradia uvedeného v klauzule ORDER BY.
Príkaz SQL SELECT je určený pre dotazy na výber údajov z databázy. Dá sa použiť buď bez podmienok (výber všetkých riadkov vo všetkých stĺpcoch alebo všetkých riadkov v určitých stĺpcoch), alebo s viacerými podmienkami (výber konkrétnych riadkov), ktoré sú špecifikované v klauzule WHERE. Zoznámime sa s nástrojmi SQL, pomocou ktorých je možné nastaviť tieto podmienky pre výber údajov a tiež sa naučíme používať príkaz SELECT v poddotazoch.
SELECT na výber stĺpcov tabuľky
Dotaz s príkazom SELECT na výber všetkých stĺpcov tabuľky má nasledujúcu syntax:
SELECT * FROM TABLE_NAME
To znamená, že ak chcete vybrať všetky stĺpce tabuľky, musíte za slovo SELECT vložiť hviezdičku.
Príklad 1 Existuje firemná databáza – Firma. Obsahuje tabuľku Org (Štruktúra spoločnosti) a Zamestnanci (Zamestnanci). Musíte vybrať všetky stĺpce z tabuliek. Zodpovedajúci dotaz na výber všetkých stĺpcov z tabuľky organizácie je nasledujúci:
VYBERTE si * Z ORG
Tento dotaz vráti nasledovné (ak chcete obrázok zväčšiť, kliknite naň ľavým tlačidlom myši):
Dotaz na výber všetkých stĺpcov z tabuľky Zamestnanci vyzerá takto:
VYBERTE SI * Z PERSONÁLU
Tento dotaz vráti nasledovné:
Ak chcete vybrať konkrétne stĺpce tabuľky, namiesto hviezdičky musíme uviesť názvy všetkých stĺpcov, ktoré je potrebné vybrať, oddelené čiarkami:
VYBERTE SELECTABLE_COLUMNS Z TABUĽKY_NAME
Príklad 2 Predpokladajme, že chcete vybrať stĺpce Depnumb a Deptname z tabuľky Org, ktoré obsahujú údaje o číslach oddelení spoločnosti a ich názvoch. Dotaz na získanie takejto vzorky by bol nasledujúci:
VYBERTE DEPNUMB, DEPTNAME Z ORG
A z tabuľky Zamestnanci musíte vybrať stĺpce DEPT, NAME, JOB, ktoré obsahujú údaje o čísle oddelenia, v ktorom zamestnanec pracuje, jeho mene a pozícii:
VYBERTE ODBOR, MENO, PRÁCU Z PERSONÁLU
Na výber určitých riadkov tabuľky spolu s príkazom SELECT už budete potrebovať kľúčové slovo WHERE označujúce určitú hodnotu alebo niekoľko hodnôt obsiahnutých v riadkoch, ktoré nás zaujímajú. Najjednoduchšie podmienky sú špecifikované pomocou operátorov porovnania a rovnosti (, =), ako aj kľúčového slova IS. Môže existovať niekoľko podmienok, potom sú uvedené pomocou kľúčového slova AND. Dotazy na výber riadkov majú nasledujúcu syntax:
Príklad 4. V predchádzajúcom príklade sme z tabuľky vyberali riadky len podľa hodnoty jedného stĺpca - DEPT. Predpokladajme, že teraz potrebujete vybrať údaje o zamestnancoch, ktorí pracujú na 38. oddelení a majú pozíciu Referent. Aby ste to dosiahli, v sekcii WHERE musia byť príslušné hodnoty uvedené pomocou slova AND:
Príklad 5. Predpokladajme, že potrebujete vybrať z tabuľky Zamestnanci identifikátory a mená tých zamestnancov, ktorých výška provízie je neurčitá. Ak to chcete urobiť, v časti WHERE musíte pred zadaním hodnoty stĺpca COMM - NULL zadať nie znamienko rovnosti, ale slovo JE:
Tento dotaz vráti nasledujúce údaje:
Porovnávacie znaky sa tiež používajú na označenie hodnôt v riadkoch, ktoré chcete vybrať.
Pomocou predikátov SELECT a IN, OR, BETWEEN, LIKE
Predikáty - slová IN, OR, BETWEEN, LIKE v sekcii WHERE - vám tiež umožňujú vybrať určité rozsahy hodnôt (IN, OR, BETWEEN) alebo hodnoty v riadkoch (LIKE), ktoré chcete vybrať z tabuľky. Dotazy s predikátmi IN, OR, BETWEEN majú nasledujúcu syntax:
Dotazy s predikátom LIKE majú nasledujúcu syntax:
Príklad 7. Predpokladajme, že chcete vybrať z tabuľky Zamestnanci mená, pozície a počet odpracovaných rokov zamestnancov pracujúcich v oddeleniach s číslom 20 alebo 84. Môžete to urobiť nasledujúcim dotazom:
Výsledok žiadosti:
Príklad 8. Predpokladajme, že teraz chcete vybrať rovnaké údaje z tabuľky Zamestnanci ako v predchádzajúcom príklade. Dotaz so slovom OR je podobný dotazu so slovom IN a so zoznamom hodnôt, ktoré vás zaujímajú, v zátvorkách. Žiadosť bude takáto:
Príklad 9. Vyberme z tej istej tabuľky mená, funkcie a počet odpracovaných rokov zamestnancov, ktorých mzda sa pohybuje od 15 000 do 17 000 vrátane:
Výsledok žiadosti:
Predikát LIKE sa používa na výber tých reťazcov, ktorých hodnoty obsahujú znaky uvedené za predikátom medzi apostrofmi (").
Príklad 10. Vyberme z tej istej tabuľky mená, funkcie a počet odpracovaných rokov zamestnancov, ktorých mená začínajú na písmeno S a pozostávajú zo 7 znakov:
Podčiarkovník (_) označuje ľubovoľný znak. Výsledok žiadosti:
Príklad 11. Vyberme z tej istej tabuľky mená, funkcie a počet odpracovaných rokov zamestnancov, ktorých mená začínajú na písmeno S a obsahujú akékoľvek iné písmená v akomkoľvek množstve:
Symbol percenta (%) znamená ľubovoľný počet znakov. Výsledok žiadosti:
Hodnoty špecifikované pomocou predikátov IN, OR, BETWEEN, LIKE je možné invertovať pomocou slova NOT. Potom budú mať požadované údaje opačný význam. Ak použijeme NOT IN (20, 84), tak sa zobrazia údaje zamestnancov, ktorí pracujú vo všetkých oddeleniach okrem tých s číslami 20 a 84 Pomocou NOT BETWEEN 15000 AND 17000 môžeme získať údaje zamestnancov, ktorých mzda nie je zahrnutá. v intervale od 15 000 do 17 000. Dotaz s NEPÁČI sa mi vráti údaje o zamestnancoch, ktorých mená nezačínajú alebo neobsahujú znaky zadané s NEPÁČI SA.
Napíšte SQL dotazy s predikátmi SELECT a IN, NOT IN, BETWEEN a potom sa pozrite na riešenia
Existuje databáza "Theater". Tabuľka Play obsahuje údaje o produkciách. Tímová tabuľka - o úlohách hercov. Tabuľka Actor je o hercoch. Riaditeľská tabuľka - o režiséroch. Polia tabuľky, primárne a cudzie kľúče je možné vidieť na obrázku nižšie (kliknutím ľavým tlačidlom myši zväčšíte).
Príklad 12. Zobrazte zoznam hercov, ktorí nikdy neboli obsadení do hlavnej úlohy. V tabuľke tímov sú údaje o hlavných úlohách obsiahnuté v stĺpci hlavného tímu. Ak je rola hlavná, potom je v príslušnom riadku označené „Y“.
SELECT a ORDER BY - triedenie (poradie) riadkov
Doposiaľ diskutované dotazy SQL SELECT vracali riadky, ktoré mohli byť v ľubovoľnom poradí. Často však potrebujete zoradiť riadky podľa číselného poradia, abecedy a iných kritérií. To sa vykonáva pomocou kľúčového slova ORDER BY. Takéto požiadavky majú nasledujúcu syntax:
Príklad 15. Nech je požiadavka vybrať z tabuľky Zamestnanci zamestnancov pracujúcich na oddelení číslo 84 a zoradiť (zoradiť) záznamy podľa počtu odpracovaných rokov vzostupne:
Slovo ASC označuje, že poradie zoradenia je vzostupné. Toto slovo je voliteľné, pretože vzostupné zoradenie je predvolené. Výsledok žiadosti:
Príklad 16. Nech je požiadavka vybrať rovnaké údaje ako v predchádzajúcom príklade, ale zoradiť (usporiadať) záznamy podľa počtu odpracovaných rokov v zostupnom poradí:
Slovo DESC označuje, že poradie zoradenia je zostupné. Výsledok žiadosti:
SELECT a DISTINCT - odstránenie duplicitných riadkov
Ak hodnoty riadkov tabuľky nie sú nastavené na jedinečné, vo výsledkoch dotazu sa môžu zobraziť duplicitné riadky. Často potrebujete na výstup iba jedinečné reťazce. To sa dosiahne použitím výrazu DISTINCT za príkazom SELECT.
Príklad 17. Predpokladajme, že chcete zistiť, aké oddelenia existujú a aké pozície patria medzi oddelenia, ktorých počet je nižší ako 30. Môžete to urobiť pomocou nasledujúceho dotazu:
Výsledok žiadosti:
SELECT v poddotazoch SQL
Doteraz sme skúmali SQL konštrukty s príkazom SELECT, v ktorom sú podmienky, podľa ktorých sa dáta vyberajú, a samotné vybrané dáta obsiahnuté v tej istej databázovej tabuľke. V praxi sa často stáva, že údaje, ktoré je potrebné vybrať, sú obsiahnuté v jednej tabuľke a podmienky sú obsiahnuté v inej. Tu prichádzajú na pomoc poddotazy: hodnoty podmienky výberu sú vrátené z iného dotazu (vnorený dotaz), ktorý tiež začína SELECT. Dotazy s poddotazmi môžu vrátiť jeden alebo viac riadkov.
Príklad 18. Všetky rovnaké tabuľky ORG a STAFF. Predpokladajme, že chcete zistiť, na ktorom oddelení pracuje zamestnanec s identifikačným číslom 280 a kde sa toto oddelenie nachádza. Ale informácie o oddeleniach sú uložené v tabuľke ORG a informácie o zamestnancoch sú uložené v tabuľke STAFF. Dá sa to urobiť pomocou nasledujúceho dotazu s poddotazom, v ktorom vonkajší SELECT pristupuje k tabuľke ORG a vnútorný SELECT pristupuje k tabuľke STAFF:
Výsledok žiadosti:
Príklad 19. Predpokladajme, že teraz potrebujete zistiť, v ktorých oddeleniach (bez duplicity) pracujú zamestnanci s platom nižším ako 13 000, aby ste to urobili v časti WHERE vonkajšieho SELECT (dotaz na tabuľku ORG), ktorá trvá. rozsah hodnôt (IN) a vnútorný SELECT (do tabuľky STAFF) len vráti požadovaný rozsah hodnôt:
Relačné databázy a jazyk SQL