Operátor výberu jazyka sql je určený pre. SQL – príkazy

Domov / Pevné disky

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

© 2024 ermake.ru -- O oprave PC - Informačný portál