SQLite Dotaz: Select, Where, LIMIT, OFFSET, Count, Group By

โšก Chytrรฉ shrnutรญ

SQLite Dotazy naฤรญtajรญ a filtrujรญ data pomocรญ klauzulรญ SELECT, FROM, WHERE, GROUP BY, ORDER BY a LIMIT. Kombinace tฤ›chto klauzulรญ s operรกtory, agregacemi, poddotazy a operacemi mnoลพin umoลพลˆuje ฤรญst, upravovat a sumarizovat zรกznamy z libovolnรฉho SQLite databรกze.

  • ๐Ÿ” VYBRAT a Z: Klauzule SELECT vybรญrรก sloupce, literรกly nebo aliasy; klauzule FROM pojmenovรกvรก tabulky nebo poddotazy, kterรฉ poskytujรญ data.
  • ๐Ÿงฎ KDE a Operators: Klauzule WHERE filtruje ล™รกdky pomocรญ operรกtorลฏ zล™etฤ›zenรญ, CAST, aritmetiky, porovnรกnรญ, LIKE, GLOB, BETWEEN, IN a EXISTS.
  • ๐Ÿ“Š Kamenivo a ลกtฤ›pping: AVGFunkce , COUNT, GROUP_CONCAT, MAX, MIN, SUM a TOTAL se kombinujรญ s funkcemi GROUP BY a HAVING pro shrnutรญ seskupenรฝch ล™รกdkลฏ.
  • ๐Ÿ”— Poddotazy a mnoลพiny: Poddotazy, bฤ›ลพnรฉ tabulkovรฉ vรฝrazy a pล™รญkazy UNION, INTERSECT a EXCEPT kombinujรญ vรฝsledky z nฤ›kolika pล™รญkazลฏ SELECT.
  • ๐Ÿงฉ ล˜azenรญ a hodnoty NULL: Funkce ORDER BY, LIMIT, OFFSET, DISTINCT, CASE a IS NULL ล™รญdรญ poล™adรญ ล™รกdkลฏ, velikost vรฝstupu a chybฤ›jรญcรญ hodnoty.
  • ๐Ÿค– Asistence AI: Asistenti pro pล™evod textu do SQL s umฤ›lou inteligencรญ a GitHub Copilot generujรญ SQLite Dotazy SELECT, JOIN a GROUP BY z vรฝzev v jednoduchรฉ angliฤtinฤ›.

SQLite Dotaz

Nรกsledujรญcรญ ฤรกsti se vฤ›nujรญ ฤtenรญ dat pomocรญ operรกtorลฏ SELECT a FROM, filtrovรกnรญ ล™รกdkลฏ pomocรญ operรกtoru WHERE a jeho operรกtorลฏ, ล™azenรญ a omezovรกnรญ vรฝsledkลฏ, agregaฤnรญm funkcรญm, GROUP BY a HAVING, poddotazลฏm, operacรญm s mnoลพinami, zpracovรกnรญ NULL, vรฝrazลฏm CASE a bฤ›ลพnรฝm tabulkovรฝm vรฝrazลฏm.

Psรกt SQL dotazy v SQLite databรกze, musรญte vฤ›dฤ›t, jak fungujรญ klauzule SELECT, FROM, WHERE, GROUP BY, ORDER BY a LIMIT a jak je pouลพรญvat.

Bฤ›hem tohoto tutoriรกlu se nauฤรญte pouลพรญvat tyto klauzule a jak je psรกt SQLite doloลพky.

ฤŒtenรญ dat pomocรญ Select

Klauzule SELECT je hlavnรญ pล™รญkaz, kterรฝ pouลพรญvรกte k dotazovรกnรญ SQLite databรกze. V klauzuli SELECT uvedete, co vybrat. Ale pล™ed klauzulรญ select se podรญvejme, odkud mลฏลพeme vybrat data pomocรญ klauzule FROM.

Klauzule FROM se pouลพรญvรก k urฤenรญ, kde chcete vybrat data. V klauzuli from mลฏลพete zadat jednu nebo vรญce tabulek nebo poddotazลฏ, ze kterรฝch chcete vybrat data, jak uvidรญme pozdฤ›ji ve vรฝukovรฝch programech.

Vลกimnฤ›te si, ลพe pro vลกechny nรกsledujรญcรญ pล™รญklady musรญte spustit sqlite3.exe a otevล™รญt pล™ipojenรญ k ukรกzkovรฉ databรกzi jako plynulรฉ:

Krok 1) V tomto kroku,

Otevล™ete sloลพku Tento poฤรญtaฤ, pล™ejdฤ›te do adresรกล™e โ€žC:\sqliteโ€œ a potรฉ otevล™ete soubor โ€žsqlite3.exeโ€œ:

ฤŒtenรญ dat s funkcรญ Select in SQLite

Krok 2) Otevล™ete databรกzi โ€žTutorialsSampleDB.dbโ€œ pomocรญ nรกsledujรญcรญho pล™รญkazu:

ฤŒtenรญ dat s funkcรญ Select in SQLite

Nynรญ jste pล™ipraveni spustit jakรฝkoli typ dotazu na databรกzi.

V klauzuli SELECT mลฏลพete vybrat nejen nรกzev sloupce, ale mรกte spoustu dalลกรญch moลพnostรญ, jak urฤit, co vybrat. Takto:

SELECT *

Tento pล™รญkaz vybere vลกechny sloupce ze vลกech odkazovanรฝch tabulek (nebo poddotazลฏ) v klauzuli FROM. Napล™รญklad:

SELECT *
FROM Students
INNER JOIN Departments ON Students.DepartmentId = Departments.DepartmentId;

Tรญm vyberete vลกechny sloupce z tabulek studentลฏ i tabulek oddฤ›lenรญ:

ฤŒtenรญ dat s funkcรญ Select in SQLite

VYBERTE nรกzev tabulky.*

Tรญm vyberete vลกechny sloupce pouze z tabulky โ€žnรกzev_tabulkyโ€œ. Napล™รญklad:

SELECT Students.*
FROM Students
INNER JOIN Departments ON Students.DepartmentId = Departments.DepartmentId;

Tรญm vyberete pouze vลกechny sloupce z tabulky studentลฏ:

ฤŒtenรญ dat s funkcรญ Select in SQLite

Doslovnรก hodnota

Doslovnรก hodnota je konstantnรญ hodnota, kterou lze zadat v pล™รญkazu select. Doslovnรฉ hodnoty mลฏลพete normรกlnฤ› pouลพรญvat stejnรฝm zpลฏsobem, jako pouลพรญvรกte nรกzvy sloupcลฏ v klauzuli SELECT. Tyto doslovnรฉ hodnoty se zobrazรญ pro kaลพdรฝ ล™รกdek z ล™รกdkลฏ vrรกcenรฝch dotazem SQL.

Zde je nฤ›kolik pล™รญkladลฏ rลฏznรฝch doslovnรฝch hodnot, kterรฉ mลฏลพete vybrat:

  • Numerickรฝ literรกl โ€“ ฤรญsla v libovolnรฉm formรกtu jako 1, 2.55, โ€ฆ atd.
  • ล˜etฤ›zcovรฉ literรกly โ€“ Libovolnรฝ ล™etฤ›zec 'USA', 'toto je ukรกzkovรฝ text', โ€ฆ atd.
  • NULL โ€“ hodnota NULL.
  • Current_TIME โ€“ Ukรกลพe vรกm aktuรกlnรญ ฤas.
  • CURRENT_DATE โ€“ tรญm zรญskรกte aktuรกlnรญ datum.

To mลฏลพe bรฝt uลพiteฤnรฉ v nฤ›kterรฝch situacรญch, kdy musรญte vybrat konstantnรญ hodnotu pro vลกechny vrรกcenรฉ ล™รกdky. Pokud napล™รญklad chcete vybrat vลกechny studenty z tabulky Studenti s novรฝm sloupcem nazvanรฝm zemฤ›, kterรฝ obsahuje hodnotu โ€žUSAโ€œ, mลฏลพete to udฤ›lat takto:

SELECT *, 'USA' AS Country FROM Students;

Tรญm zรญskรกte vลกechny sloupce studentลฏ plus novรฝ sloupec โ€žZemฤ›โ€œ, jako je tento:

ฤŒtenรญ dat s funkcรญ Select in SQLite

Vลกimnฤ›te si, ลพe tento novรฝ sloupec Zemฤ› ve skuteฤnosti nenรญ novรฝm sloupcem pล™idanรฝm do tabulky. Je to virtuรกlnรญ sloupec, vytvoล™enรฝ v dotazu pro zobrazenรญ vรฝsledkลฏ a nebude se vytvรกล™et v tabulce.

Jmรฉna a alias

Alias โ€‹โ€‹je novรฝ nรกzev pro sloupec, kterรฝ umoลพลˆuje vybrat sloupec s novรฝm nรกzvem. Aliasy sloupcลฏ jsou specifikovรกny pomocรญ klรญฤovรฉho slova โ€žASโ€œ.

Napล™รญklad, pokud chcete vybrat sloupec StudentName, kterรฝ mรก bรฝt vrรกcen se โ€žStudent Nameโ€œ namรญsto โ€žStudentNameโ€œ, mลฏลพete mu pล™iล™adit alias takto:

SELECT StudentName AS 'Student Name' FROM Students;

Tรญm zรญskรกte jmรฉna studentลฏ se jmรฉnem โ€žStudent Nameโ€œ namรญsto โ€žStudentNameโ€œ takto:

SQLite Jmรฉna a alias

Vลกimnฤ›te si, ลพe nรกzev sloupce je stรกle โ€žStudentNameโ€œ; sloupec StudentName je stรกle stejnรฝ, alias se v nฤ›m nemฤ›nรญ.

Alias โ€‹โ€‹nezmฤ›nรญ nรกzev sloupce; pouze zmฤ›nรญ zobrazovanรฝ nรกzev v klauzuli SELECT.

Vลกimnฤ›te si takรฉ, ลพe klรญฤovรฉ slovo โ€žASโ€œ je volitelnรฉ, nรกzev aliasu mลฏลพete zadat i bez nฤ›j, nฤ›co takovรฉho:

SELECT StudentName 'Student Name' FROM Students;

A dรก vรกm pล™esnฤ› stejnรฝ vรฝstup jako pล™edchozรญ dotaz:

SQLite Jmรฉna a alias

Tabulkรกm mลฏลพete takรฉ pล™idฤ›lit aliasy, nejen sloupce. Se stejnรฝm klรญฤovรฝm slovem โ€žASโ€œ. Mลฏลพete napล™รญklad provรฉst toto:

SELECT s.* FROM Students AS s;

Tรญm zรญskรกte vลกechny sloupce v tabulce Studenti:

SQLite Jmรฉna a alias

To mลฏลพe bรฝt velmi uลพiteฤnรฉ, pokud se pล™ipojujete k vรญce neลพ jednomu stolu; mรญsto opakovรกnรญ celรฉho nรกzvu tabulky v dotazu mลฏลพete kaลพdรฉ tabulce pล™iล™adit krรกtkรฝ alias. Napล™รญklad v nรกsledujรญcรญm dotazu:

SELECT Students.StudentName, Departments.DepartmentName
FROM Students
INNER JOIN Departments ON Students.DepartmentId = Departments.DepartmentId;

Tento dotaz vybere jmรฉno kaลพdรฉho studenta z tabulky โ€žStudentiโ€œ a jeho nรกzev oddฤ›lenรญ z tabulky โ€žOddฤ›lenรญโ€œ:

SQLite Jmรฉna a alias

Stejnรฝ dotaz vลกak lze napsat takto:

SELECT s.StudentName, d.DepartmentName
FROM Students AS s
INNER JOIN Departments AS d ON s.DepartmentId = d.DepartmentId;

Tabulce Students jsme dali alias โ€žsโ€œ a tabulce departments alias โ€ždโ€œ. Pak jsme mรญsto pouลพitรญ celรฉho nรกzvu tabulky pouลพili jejich aliasy k odkazovรกnรญ na nฤ›. INNER JOIN spojuje dvฤ› nebo vรญce tabulek pomocรญ podmรญnky. V naลกem pล™รญkladu jsme spojili tabulku Students s tabulkou Departments se sloupcem DepartmentId. Podrobnรฉ vysvฤ›tlenรญ INNER JOIN je takรฉ uvedeno v โ€žSQLite Pล™ipojujeโ€žtutoriรกlโ€œ.

Tรญm zรญskรกte pล™esnรฝ vรฝstup jako pล™edchozรญ dotaz:

SQLite Jmรฉna a alias

KDE

Zรกpis SQL dotazลฏ pomocรญ samotnรฉ klauzule SELECT s klauzulรญ FROM, jak jsme vidฤ›li v pล™edchozรญ ฤรกsti, vรกm poskytne vลกechny ล™รกdky z tabulek. Pokud vลกak chcete filtrovat vrรกcenรก data, musรญte pล™idat klauzuli โ€žWHEREโ€œ.

Klauzule WHERE se pouลพรญvรก k filtrovรกnรญ vรฝslednรฉ sady vrรกcenรฉ dotazem SQL. Klauzule WHERE funguje takto:

  • V klauzuli WHERE mลฏลพete zadat โ€žvรฝrazโ€œ.
  • Tento vรฝraz bude vyhodnocen pro kaลพdรฝ ล™รกdek vrรกcenรฝ z tabulek zadanรฝch v klauzuli FROM.
  • Vรฝraz bude vyhodnocen jako booleovskรฝ vรฝraz s vรฝsledkem buฤ true, false, nebo null.
  • Potom budou vrรกceny pouze ล™รกdky, pro kterรฉ byl vรฝraz vyhodnocen s hodnotou true, a ty s nepravdivรฝmi nebo nulovรฝmi vรฝsledky budou ignorovรกny a nebudou zahrnuty do sady vรฝsledkลฏ.

Chcete-li filtrovat sadu vรฝsledkลฏ pomocรญ klauzule WHERE, musรญte pouลพรญt vรฝrazy a operรกtory.

Seznam operรกtorลฏ v SQLite a jak je pouลพรญvat

V nรกsledujรญcรญ ฤรกsti vysvฤ›tlรญme, jak mลฏลพete filtrovat pomocรญ vรฝrazลฏ a operรกtorลฏ.

Vรฝraz je jedna nebo vรญce doslovnรฝch hodnot nebo sloupcลฏ vzรกjemnฤ› kombinovanรฝch pomocรญ operรกtoru.

Vลกimnฤ›te si, ลพe vรฝrazy mลฏลพete pouลพรญt jak v klauzuli SELECT, tak v klauzuli WHERE.

V nรกsledujรญcรญch pล™รญkladech si vyzkouลกรญme vรฝrazy a operรกtory v klauzuli select i v klauzuli WHERE. Abychom vรกm ukรกzali, jak fungujรญ.

Existujรญ rลฏznรฉ typy vรฝrazลฏ a operรกtorลฏ, kterรฉ mลฏลพete zadat nรกsledovnฤ›:

SQLite operรกtor zล™etฤ›zenรญ โ€ž||โ€œ

Tento operรกtor se pouลพรญvรก ke zล™etฤ›zenรญ jednรฉ nebo vรญce literรกlovรฝch hodnot nebo sloupcลฏ. Vytvoล™รญ jeden ล™etฤ›zec vรฝsledkลฏ ze vลกech zล™etฤ›zenรฝch literรกlovรฝch hodnot nebo sloupcลฏ. Napล™รญklad:

SELECT 'Id with Name: '|| StudentId || StudentName AS StudentIdWithName
FROM Students;

Toto se zล™etฤ›zรญ do novรฉho aliasu โ€žStudentIdWithNameโ€œ:

  • Doslovnรก ล™etฤ›zcovรก hodnota โ€žId s nรกzvem:โ€œ
  • s hodnotou sloupce โ€žStudentIdโ€œ a
  • s hodnotou ze sloupce โ€žJmรฉno studentaโ€œ

SQLite Klauzule a operรกtory WHERE

SQLite Operรกtor CAST:

Operรกtor CAST se pouลพรญvรก k pล™evodu hodnoty z datovรฝ typ na jinรฝ datovรฝ typ.

Napล™รญklad pokud mรกte ฤรญselnou hodnotu uloลพenou jako ล™etฤ›zec, napล™รญklad โ€ž'12.5'โ€œ a chcete ji pล™evรฉst na ฤรญselnou hodnotu, mลฏลพete k tomu pouลพรญt operรกtor CAST, napล™รญklad โ€žCAST('12.5' AS REAL)โ€œ. Nebo pokud mรกte desetinnou hodnotu, napล™รญklad 12.5, a potล™ebujete zรญskat pouze celoฤรญselnou ฤรกst, mลฏลพete ji pล™evรฉst na celรฉ ฤรญslo, napล™รญklad โ€žCAST(12.5 AS INTEGER)โ€œ.

Pล™รญklad

V nรกsledujรญcรญm pล™รญkazu se pokusรญme pล™evรฉst rลฏznรฉ hodnoty na jinรฉ datovรฉ typy:

SELECT CAST('12.5' AS REAL) ToReal, CAST(12.5 AS INTEGER) AS ToInteger;

To vรกm dรก:

SQLite Klauzule a operรกtory WHERE

Vรฝsledek je nรกsledujรญcรญ:

  • CAST('12.5' โ€‹โ€‹AS REAL) โ€“ hodnota '12.5' โ€‹โ€‹je ล™etฤ›zcovรก hodnota, bude pล™evedena na hodnotu REAL.
  • CAST(12.5 AS INTEGER) โ€“ hodnota 12.5 je dekadickรก hodnota, bude pล™evedena na celoฤรญselnou hodnotu. Desetinnรก ฤรกst bude zkrรกcena a bude z nรญ 12.

SQLite Aritmetickรฝ Operators:

Vezmฤ›te dvฤ› nebo vรญce ฤรญselnรฝch literรกlovรฝch hodnot nebo ฤรญselnรฝch sloupcลฏ a vraลฅte jednu ฤรญselnou hodnotu. Podporovanรฉ aritmetickรฉ operรกtory v SQLite jsou:

  • Sฤรญtรกnรญ โ€ž+โ€œ โ€“ udรกvรก souฤet dvou operandลฏ.
  • Vtracce โ€žโ€“โ€œ โ€“ podล™รญzenรฝtracts dva operandy a vรฝsledkem je rozdรญl.
  • Nรกsobenรญ โ€ž*โ€œ โ€“ souฤin dvou operandลฏ.
  • Pล™ipomรญnka (modulo) โ€ž%โ€œ โ€“ udรกvรก zbytek, kterรฝ vznikne dฤ›lenรญm jednoho operandu druhรฝm operandem.
  • Dฤ›lenรญ โ€ž/โ€œ โ€“ vracรญ podรญl, kterรฝ vznikne dฤ›lenรญm levรฉho operandu pravรฝm operandem.

Pล™รญklad:

V nรกsledujรญcรญm pล™รญkladu si vyzkouลกรญme pฤ›t aritmetickรฝch operรกtorลฏ s doslovnรฝmi ฤรญselnรฝmi hodnotami ve stejnรฉ klauzuli select:

SELECT 25+6, 25-6, 25*6, 25%6, 25/6;

To vรกm dรก:

SQLite Klauzule a operรกtory WHERE

Vลกimnฤ›te si, jak jsme zde pouลพili pล™รญkaz SELECT bez klauzule FROM. A toto je povoleno SQLite pokud vybรญrรกme doslovnรฉ hodnoty.

SQLite Porovnรกvacรญ operรกtoล™i

Porovnejte dva operandy mezi sebou a vraลฅte hodnotu true nebo false nรกsledovnฤ›:

  • โ€ž<โ€œ โ€“ vracรญ hodnotu true, pokud je levรฝ operand menลกรญ neลพ pravรฝ operand.
  • โ€ž<=โ€œ โ€“ vracรญ hodnotu true, pokud je levรฝ operand menลกรญ nebo roven pravรฉmu operandu.
  • โ€ž>โ€œ โ€“ vracรญ hodnotu true, pokud je levรฝ operand vฤ›tลกรญ neลพ pravรฝ operand.
  • โ€ž>=" โ€“ vracรญ hodnotu true, pokud je levรฝ operand vฤ›tลกรญ nebo roven pravรฉmu operandu.
  • โ€ž=โ€œ a โ€ž==โ€œ โ€“ vracรญ hodnotu true, pokud jsou oba operandy stejnรฉ. Vลกimnฤ›te si, ลพe oba operรกtory jsou stejnรฉ a nenรญ mezi nimi ลพรกdnรฝ rozdรญl.
  • โ€ž!=" a โ€ž<>" โ€“ vrรกtรญ hodnotu true, pokud se dva operandy neshodujรญ. Vลกimnฤ›te si, ลพe oba operรกtory jsou stejnรฉ a nenรญ mezi nimi ลพรกdnรฝ rozdรญl.

Vลกimnฤ›te si, ลพe, SQLite vyjadล™uje skuteฤnou hodnotu s 1 a nepravdivou hodnotu s 0.

Pล™รญklad:

SELECT
  10<6 AS '<', 10<=6 AS '<=',
  10>6 AS '>', 10>=6 AS '>=',
  10=6 AS '=', 10==6 AS '==',
  10!=6 AS '!=', 10<>6 AS '<>';

To dรก nฤ›co takovรฉho:

SQLite Klauzule a operรกtory WHERE

SQLite Operรกtory shody vzorลฏ

โ€žLIKEโ€œ โ€“ pouลพรญvรก se pro porovnรกvรกnรญ vzorลฏ. Pomocรญ โ€žLIKEโ€œ mลฏลพete vyhledรกvat hodnoty, kterรฉ odpovรญdajรญ vzoru zadanรฉmu pomocรญ zรกstupnรฉho znaku.

Operand nalevo mลฏลพe bรฝt buฤ hodnota ล™etฤ›zcovรฉho literรกlu, nebo sloupec ล™etฤ›zce. Vzor lze specifikovat nรกsledovnฤ›:

  • Obsahuje vzor. Napล™รญklad StudentName LIKE '%a%' โ€“ tato funkce vyhledรก jmรฉna studentลฏ, kterรก obsahujรญ pรญsmeno โ€žaโ€œ na libovolnรฉ pozici ve sloupci StudentName.
  • Zaฤรญnรก vzorem. Napล™รญklad โ€žJmรฉnoStudenta LIKE 'a%'โ€œ โ€“ vyhledรก jmรฉna studentลฏ, kterรก zaฤรญnajรญ pรญsmenem โ€žaโ€œ.
  • Konฤรญ danรฝm vzorem. Napล™รญklad โ€žJmรฉnoStudenta LIKE '%a'โ€œ โ€“ Vyhledรก jmรฉna studentลฏ, kterรก konฤรญ pรญsmenem โ€žaโ€œ.
  • Hledรกnรญ libovolnรฉho jednotlivรฉho znaku v ล™etฤ›zci pomocรญ podtrลพรญtka โ€ž_โ€œ. Napล™รญklad โ€žStudentName LIKE 'J___'โ€œ โ€“ Vyhledรกvรกnรญ jmen studentลฏ, kterรก majรญ dรฉlku 4 znaky. Musรญ zaฤรญnat pรญsmenem โ€žJโ€œ a za tรญmto pรญsmenem mลฏลพe bรฝt libovolnรฝch tล™i dalลกรญ znaky.

Pล™รญklady shody vzorลฏ:

Zรญskejte jmรฉna studentลฏ zaฤรญnajรญcรญ pรญsmenem โ€žjโ€œ:

SELECT StudentName FROM Students WHERE StudentName LIKE 'j%';

Vรฝsledek:

SQLite Klauzule a operรกtory WHERE

Zรญskejte, aby jmรฉna studentลฏ konฤila pรญsmenem โ€žyโ€œ:

SELECT StudentName FROM Students WHERE StudentName LIKE '%y';

Vรฝsledek:

SQLite Klauzule a operรกtory WHERE

Zรญskejte jmรฉna studentลฏ, kterรก obsahujรญ pรญsmeno โ€žnโ€œ:

SELECT StudentName FROM Students WHERE StudentName LIKE '%n%';

Vรฝsledek:

SQLite Klauzule a operรกtory WHERE

โ€žGLOBโ€œ โ€“ je ekvivalentem operรกtoru LIKE, ale GLOB rozliลกuje velkรก a malรก pรญsmena, na rozdรญl od operรกtoru LIKE. Napล™รญklad nรกsledujรญcรญ dva pล™รญkazy vrรกtรญ rลฏznรฉ vรฝsledky:

SELECT 'Jack' GLOB 'j%';
SELECT 'Jack' LIKE 'j%';

To vรกm dรก:

SQLite Klauzule a operรกtory WHERE

Prvnรญ pล™รญkaz vrรกtรญ 0 (nepravda), protoลพe operรกtor GLOB rozliลกuje velkรก a malรก pรญsmena, takลพe 'j' se nerovnรก 'J'. Druhรฝ pล™รญkaz vลกak vrรกtรญ 1 (pravda), protoลพe operรกtor LIKE nerozliลกuje malรก a velkรก pรญsmena, takลพe 'j' se rovnรก 'J'.

Dalลกรญ operรกtoล™i:

SQLite A AUTOMATIZACI

Logickรฝ operรกtor, kterรฝ kombinuje jeden nebo vรญce vรฝrazลฏ. Vrรกtรญ hodnotu true, pouze pokud vลกechny vรฝrazy poskytnou hodnotu โ€žtrueโ€œ. Vrรกtรญ vลกak hodnotu false, pouze pokud vลกechny vรฝrazy poskytnou hodnotu โ€žfalseโ€œ.

Pล™รญklad:

Nรกsledujรญcรญ dotaz vyhledรก studenty, kteล™รญ majรญ StudentId > 5 a StudentName zaฤรญnรก pรญsmenem N, vrรกcenรญ studenti musรญ splลˆovat dvฤ› podmรญnky:

SELECT *
FROM Students
WHERE (StudentId > 5) AND (StudentName LIKE 'N%');

Jako vรฝstup na vรฝลกe uvedenรฉm snรญmku obrazovky zรญskรกte pouze โ€žNancyโ€œ. Nancy je jedinou studentkou, kterรก splลˆuje obฤ› podmรญnky.

SQLite Klauzule a operรกtory WHERE

SQLite OR

Logickรฝ operรกtor, kterรฝ kombinuje jeden nebo vรญce vรฝrazลฏ, takลพe pokud jeden z kombinovanรฝch operรกtorลฏ dรก hodnotu true, vrรกtรญ hodnotu true. Pokud vลกak vลกechny vรฝrazy dรกvajรญ hodnotu false, vrรกtรญ hodnotu false.

Pล™รญklad:

Nรกsledujรญcรญ dotaz vyhledรก studenty, kteล™รญ majรญ StudentId > 5 nebo StudentName zaฤรญnรก pรญsmenem N, vrรกcenรญ studenti musรญ splลˆovat alespoลˆ jednu z podmรญnek:

SELECT *
FROM Students
WHERE (StudentId > 5) OR (StudentName LIKE 'N%');

To vรกm dรก:

SQLite Klauzule a operรกtory WHERE

Jako vรฝstup na vรฝลกe uvedenรฉm snรญmku obrazovky zรญskรกte jmรฉno studenta s pรญsmenem โ€žnโ€œ ve svรฉm jmรฉnฤ› plus ID studenta s hodnotou > 5.

Jak vidรญte, vรฝsledek je jinรฝ neลพ dotaz s operรกtorem AND.

SQLite MEZI

Funkce BETWEEN se pouลพรญvรก k vรฝbฤ›ru hodnot, kterรฉ jsou v rozsahu dvou hodnot. Napล™รญklad โ€žX BETWEEN Y AND Zโ€œ vrรกtรญ hodnotu true (1), pokud se hodnota X nachรกzรญ mezi hodnotami Y a Z. V opaฤnรฉm pล™รญpadฤ› vrรกtรญ hodnotu false (0). โ€žX BETWEEN Y AND Zโ€œ je ekvivalentnรญ funkci โ€žX >= Y AND X <= Zโ€œ, X musรญ bรฝt vฤ›tลกรญ nebo rovno Y a X je menลกรญ nebo rovno Z.

Pล™รญklad:

V nรกsledujรญcรญm pล™รญkladu dotazu napรญลกeme dotaz, abychom zรญskali studenty s hodnotou Id mezi 5 a 8:

SELECT *
FROM Students
WHERE StudentId BETWEEN 5 AND 8;

To dรก pouze studentลฏm s ID 5, 6, 7 a 8:

SQLite Klauzule a operรกtory WHERE

SQLite IN

Vezme jeden operand a seznam operandลฏ. Vrรกtรญ hodnotu true, pokud je hodnota prvnรญho operandu rovna jednรฉ z hodnot operandลฏ ze seznamu. Operรกtor IN vrรกtรญ hodnotu true (1), pokud seznam operandลฏ obsahuje hodnotu prvnรญho operandu v rรกmci svรฝch hodnot. V opaฤnรฉm pล™รญpadฤ› vrรกtรญ hodnotu false (0).

Takto: โ€žcol IN(x, y, z)โ€œ. To je ekvivalentnรญ k โ€ž(col=x) nebo (col=y) nebo (col=z)โ€œ.

Pล™รญklad:

Nรกsledujรญcรญ dotaz vybere pouze studenty s ID 2, 4, 6, 8:

SELECT *
FROM Students
WHERE StudentId IN(2, 4, 6, 8);

Stejnฤ› jako tento:

SQLite Klauzule a operรกtory WHERE

Pล™edchozรญ dotaz poskytne pล™esnรฝ vรฝsledek jako nรกsledujรญcรญ dotaz, protoลพe jsou ekvivalentnรญ:

SELECT *
FROM Students
WHERE (StudentId = 2) OR (StudentId =  4) OR (StudentId =  6) OR (StudentId = 8);

Oba dotazy poskytujรญ pล™esnรฝ vรฝstup. Rozdรญl mezi tฤ›mito dvฤ›ma dotazy je vลกak ten, ลพe u prvnรญho dotazu jsme pouลพili operรกtor โ€žINโ€œ. Ve druhรฉm dotazu jsme pouลพili vรญce operรกtorลฏ โ€žORโ€œ.

Operรกtor IN je ekvivalentnรญ pouลพitรญ vรญce operรกtorลฏ OR. Operรกtor โ€žWHERE StudentId IN(2, 4, 6, 8)โ€œ je ekvivalentnรญ operรกtoru โ€žWHERE (StudentId = 2) OR (StudentId = 4) OR (StudentId = 6) OR (StudentId = 8);โ€œ.

Stejnฤ› jako tento:

SQLite Klauzule a operรกtory WHERE

SQLite NE V

Operand โ€žNOT INโ€œ je opakem operรกtoru IN. Mรก vลกak stejnou syntaxi; bere jeden operand a seznam operandลฏ. Vrรกtรญ hodnotu true, pokud hodnota prvnรญho operandu nenรญ rovna hodnotฤ› jednoho z operandลฏ ze seznamu, tj. vrรกtรญ hodnotu true (0), pokud seznam operandลฏ neobsahuje prvnรญ operand. Napล™รญklad: โ€žcol NOT IN(x, y, z)โ€œ. Toto je ekvivalentnรญ operaci โ€ž(col<>x) AND (col<>y) AND (col<>z)โ€œ.

Pล™รญklad:

Nรกsledujรญcรญ dotaz vybere studenty s ID, kterรก se nerovna jednomu z tฤ›chto ID 2, 4, 6, 8:

SELECT *
FROM Students
WHERE StudentId NOT IN(2, 4, 6, 8);

Takhle

SQLite Klauzule a operรกtory WHERE

Pล™edchozรญ dotaz dรกvรกme pล™esnรฝ vรฝsledek jako nรกsledujรญcรญ dotaz, protoลพe jsou ekvivalentnรญ:

SELECT *
FROM Students
WHERE (StudentId <> 2) AND (StudentId <> 4) AND (StudentId <> 6) AND (StudentId <> 8);

Stejnฤ› jako tento:

SQLite Klauzule a operรกtory WHERE

Na vรฝลกe uvedenรฉm snรญmku obrazovky

Pouลพili jsme nฤ›kolik rลฏznรฝch operรกtorลฏ โ€ž<>โ€œ, abychom zรญskali seznam studentลฏ, kteล™รญ se nerovnajรญ ลพรกdnรฉmu z nรกsledujรญcรญch ID 2, 4, 6 ani 8. Tento dotaz vrรกtรญ vลกechny ostatnรญ studenty kromฤ› tฤ›chto seznamลฏ ID.

SQLite EXISTUJE

Operรกtory EXISTS neberou ลพรกdnรฉ operandy; po nฤ›m trvรก pouze klauzule SELECT. Operรกtor EXISTS vrรกtรญ hodnotu true (1), pokud jsou vrรกceny nฤ›jakรฉ ล™รกdky z klauzule SELECT, a vrรกtรญ hodnotu false (0), pokud z klauzule SELECT nejsou vrรกceny ลพรกdnรฉ ล™รกdky.

Pล™รญklad:

V nรกsledujรญcรญm pล™รญkladu vybereme nรกzev oddฤ›lenรญ, pokud ID oddฤ›lenรญ existuje v tabulce studentลฏ:

SELECT DepartmentName
FROM Departments AS d
WHERE EXISTS (SELECT DepartmentId FROM Students AS s WHERE d.DepartmentId = s.DepartmentId);

To vรกm dรก:

SQLite Klauzule a operรกtory WHERE

Vrรกtรญ se pouze tล™i katedry: โ€žIT, Fyzika a Umฤ›nรญโ€œ. Nรกzev katedry โ€žMatematikaโ€œ se nevrรกtรญ, protoลพe na tรฉto katedล™e nenรญ ลพรกdnรฝ student, takลพe ID katedry v tabulce studentลฏ neexistuje. Proto operรกtor EXISTS katedru โ€žMatematikaโ€œ ignoroval.

SQLite NENร

Reverseje vรฝsledek pล™edchozรญho operรกtoru, kterรฝ nรกsleduje za nรญm. Napล™รญklad:

  • NOT BETWEEN โ€“ Vrรกtรญ true, pokud BETWEEN vrรกtรญ false a naopak.
  • NOT LIKE โ€“ Vrรกtรญ true, pokud LIKE vrรกtรญ false a naopak.
  • NOT GLOB โ€“ Vrรกtรญ true, pokud GLOB vrรกtรญ false a naopak.
  • NOT EXISTS โ€“ Vrรกtรญ true, pokud EXISTS vrรกtรญ false a naopak.

Pล™รญklad:

V nรกsledujรญcรญm pล™รญkladu pouลพijeme operรกtor NOT s operรกtorem EXISTS k zรญskรกnรญ nรกzvลฏ kateder, kterรฉ neexistujรญ v tabulce Studenti, coลพ je opaฤnรฝ vรฝsledek operรกtoru EXISTS. Hledรกnรญ tedy bude provedeno pomocรญ DepartmentId, kterรฉ v tabulce oddฤ›lenรญ neexistuje.

SELECT DepartmentName
FROM Departments AS d
WHERE NOT EXISTS (SELECT DepartmentId
                  FROM Students AS s
                  WHERE d.DepartmentId = s.DepartmentId);

Vรฝstup:

SQLite Klauzule a operรกtory WHERE

Vrรกtรญ se pouze oddฤ›lenรญ โ€žMatematikaโ€œ. Protoลพe oddฤ›lenรญ โ€žMatematikaโ€œ je jedinรฉ oddฤ›lenรญ, kterรฉ v tabulce studentลฏ neexistuje.

Omezenรญ a objednรกnรญ

SQLite Objednรกvka

SQLite Poล™adรญ znamenรก seล™adit vรฝsledek podle jednoho nebo vรญce vรฝrazลฏ. Chcete-li seล™adit sadu vรฝsledkลฏ, musรญte pouลพรญt klauzuli ORDER BY takto:

  • Nejprve musรญte zadat klauzuli ORDER BY.
  • Na konci dotazu musรญ bรฝt uvedena klauzule ORDER BY; za nรญm lze uvรฉst pouze klauzuli LIMIT.
  • Zadejte vรฝraz, pomocรญ kterรฉho se majรญ data seล™adit, tento vรฝraz mลฏลพe bรฝt nรกzev sloupce nebo vรฝraz.
  • Za vรฝrazem mลฏลพete zadat volitelnรฝ smฤ›r ล™azenรญ. Buฤ DESC, chcete-li data seล™adit sestupnฤ›, nebo ASC, abyste data seล™adili vzestupnฤ›. Pokud byste ลพรกdnรฝ z nich nezadali, data by seล™adila vzestupnฤ›.
  • Mลฏลพete zadat vรญce vรฝrazลฏ pomocรญ โ€ž,โ€œ mezi sebou.

Pล™รญklad

V nรกsledujรญcรญm pล™รญkladu vybereme vลกechny studenty seล™azenรฉ podle jejich jmen, ale v sestupnรฉm poล™adรญ, a potรฉ podle nรกzvu katedry ve vzestupnรฉm poล™adรญ:

SELECT s.StudentName, d.DepartmentName
FROM Students AS s
INNER JOIN Departments AS d ON s.DepartmentId = d.DepartmentId
ORDER BY d.DepartmentName ASC , s.StudentName DESC;

To vรกm dรก:

SQLite Omezenรญ a objednรกnรญ

  • SQLite nejprve seล™adรญ vลกechny studenty podle nรกzvu katedry ve vzestupnรฉm poล™adรญ
  • Potรฉ se pro kaลพdรฝ nรกzev oddฤ›lenรญ zobrazรญ vลกichni studenti pod tรญmto nรกzvem oddฤ›lenรญ v sestupnรฉm poล™adรญ podle jejich jmen

SQLite Omezit:

Pomocรญ klauzule LIMIT mลฏลพete omezit poฤet ล™รกdkลฏ vrรกcenรฝch vaลกรญm dotazem SQL. Napล™รญklad LIMIT 10 vรกm poskytne pouze 10 ล™รกdkลฏ a vลกechny ostatnรญ ล™รกdky ignoruje.

V klauzuli LIMIT mลฏลพete pomocรญ klauzule OFFSET vybrat urฤitรฝ poฤet ล™รกdkลฏ poฤรญnaje od urฤitรฉ pozice. Napล™รญklad โ€žLIMIT 4 OFFSET 4โ€œ bude ignorovat prvnรญ 4 ล™รกdky a vrรกtรญ 4 ล™รกdky poฤรญnaje pรกtรฝm ล™รกdkem, takลพe zรญskรกte ล™รกdky 5, 6, 7 a 8.

Klauzule OFFSET je volitelnรก, mลฏลพete ji napsat napล™รญklad jako โ€žLIMIT 4, 4โ€œ a dostanete pล™esnรฉ vรฝsledky.

Pล™รญklad:

V nรกsledujรญcรญm pล™รญkladu vrรกtรญme pomocรญ dotazu pouze 3 studenty poฤรญnaje studentskรฝm ID 5:

SELECT * FROM Students LIMIT 4,3;

Tรญm zรญskรกte pouze tล™i studenty od ล™รกdku 5. Zรญskรกte tedy ล™รกdky se StudentId 5, 6 a 7:

SQLite Omezenรญ a objednรกnรญ

Odstraลˆovรกnรญ duplikรกtลฏ

Pokud vรกลก SQL dotaz vracรญ duplicitnรญ hodnoty, mลฏลพete pouลพรญt klรญฤovรฉ slovo โ€žDISTINCTโ€œ k odstranฤ›nรญ tฤ›chto duplicit a vrรกcenรญ odliลกnรฝch hodnot. Po pouลพitรญ klรญฤe DISTINCT mลฏลพete zadat vรญce neลพ jeden sloupec.

Pล™รญklad:

Nรกsledujรญcรญ dotaz vrรกtรญ duplicitnรญ โ€žhodnoty nรกzvu oddฤ›lenรญโ€œ: Zde mรกme duplicitnรญ hodnoty s nรกzvy IT, Physics a Arts.

SELECT d.DepartmentName
FROM Students AS s
INNER JOIN Departments AS d ON s.DepartmentId = d.DepartmentId;

Tรญm zรญskรกte duplicitnรญ hodnoty pro nรกzev oddฤ›lenรญ:

Odstranฤ›nรญ duplikรกtลฏ v SQLite

Vลกimnฤ›te si, ลพe existujรญ duplicitnรญ hodnoty pro nรกzev oddฤ›lenรญ. Nynรญ pouลพijeme klรญฤovรฉ slovo DISTINCT se stejnรฝm dotazem k odstranฤ›nรญ tฤ›chto duplikรกtลฏ a zรญskรกnรญ pouze jedineฤnรฝch hodnot. Takhle:

SELECT DISTINCT d.DepartmentName
FROM Students AS s
INNER JOIN Departments AS d ON s.DepartmentId = d.DepartmentId;

Tรญm zรญskรกte pouze tล™i jedineฤnรฉ hodnoty pro sloupec nรกzvu oddฤ›lenรญ:

Odstranฤ›nรญ duplikรกtลฏ v SQLite

Agregรกt

SQLite Agregรกty jsou vestavฤ›nรฉ funkce definovanรฉ v SQLite kterรฝ seskupรญ vรญce hodnot z vรญce ล™รกdkลฏ do jednรฉ hodnoty.

Zde jsou podporovanรฉ agregรกty SQLite:

SQLite AVG()

Vrรกtรญ prลฏmฤ›r pro vลกechny hodnoty x.

Pล™รญklad:

V nรกsledujรญcรญm pล™รญkladu zรญskรกme prลฏmฤ›rnou znรกmku, kterou studenti zรญskajรญ ze vลกech zkouลกek:

SELECT AVG(Mark) FROM Marks;

To vรกm dรก hodnotu โ€ž18.375โ€œ:

SQLite Agregaฤnรญ funkce

Tyto vรฝsledky pochรกzejรญ ze souฤtu vลกech hodnot znรกmek dฤ›leno jejich poฤtem.

COUNT() โ€“ COUNT(X) nebo COUNT(*)

Vrรกtรญ celkovรฝ poฤet, kolikrรกt se objevila hodnota x. A zde jsou nฤ›kterรฉ moลพnosti, kterรฉ mลฏลพete pouลพรญt s COUNT:

  • COUNT(x): Poฤรญtรก pouze x hodnot, kde x je nรกzev sloupce. Bude ignorovat hodnoty NULL.
  • COUNT(*): Spoฤรญtรก vลกechny ล™รกdky ze vลกech sloupcลฏ.
  • COUNT (DISTINCT x): Pล™ed x mลฏลพete zadat klรญฤovรฉ slovo DISTINCT, kterรฉ zรญskรก poฤet rลฏznรฝch hodnot x.

Pล™รญklad

V nรกsledujรญcรญm pล™รญkladu zรญskรกme celkovรฝ poฤet oddฤ›lenรญ s COUNT(DepartmentId), COUNT(*) a COUNT(DISTINCT DepartmentId) a jak se liลกรญ:

SELECT COUNT(DepartmentId), COUNT(DISTINCT DepartmentId), COUNT(*) FROM Students;

To vรกm dรก:

SQLite Agregaฤnรญ funkce

Takto:

  • COUNT(DepartmentId) vรกm poskytne poฤet vลกech ID oddฤ›lenรญ a bude ignorovat hodnoty null.
  • COUNT(DISTINCT DepartmentId) vรกm dรกvรก odliลกnรฉ hodnoty DepartmentId, kterรฉ jsou pouze 3. Coลพ jsou tล™i rลฏznรฉ hodnoty nรกzvu oddฤ›lenรญ. Vลกimnฤ›te si, ลพe ve jmรฉnu studenta je 8 hodnot nรกzvu oddฤ›lenรญ. Ale pouze tล™i rลฏznรฉ hodnoty, kterรฝmi jsou matematika, IT a fyzika.
  • COUNT(*) poฤรญtรก poฤet ล™รกdkลฏ v tabulce studentลฏ, coลพ je 10 ล™รกdkลฏ pro 10 studentลฏ.

GROUP_CONCAT() โ€“ GROUP_CONCAT(X) nebo GROUP_CONCAT(X,Y)

Agregaฤnรญ funkce GROUP_CONCAT zล™etฤ›zรญ nรกsobky hodnot do jednรฉ hodnoty a oddฤ›lรญ je ฤรกrkou. Mรก nรกsledujรญcรญ moลพnosti:

  • GROUP_CONCAT(X): Toto zล™etฤ›zรญ vลกechny hodnoty x do jednoho ล™etฤ›zce s ฤรกrkou โ€ž,โ€œ pouลพรญvanou jako oddฤ›lovaฤ mezi hodnotami. Hodnoty NULL budou ignorovรกny.
  • GROUP_CONCAT(X, Y): Toto zล™etฤ›zรญ hodnoty x do jednoho ล™etฤ›zce, pล™iฤemลพ hodnota y se pouลพije jako oddฤ›lovaฤ mezi kaลพdou hodnotou namรญsto vรฝchozรญho oddฤ›lovaฤe ','. Hodnoty NULL budou takรฉ ignorovรกny.
  • GROUP_CONCAT(DISTINCT X): Toto zล™etฤ›zรญ vลกechny odliลกnรฉ hodnoty x do jednoho ล™etฤ›zce s ฤรกrkou โ€ž,โ€œ pouลพรญvanou jako oddฤ›lovaฤ mezi hodnotami. Hodnoty NULL budou ignorovรกny.

GROUP_CONCAT(nรกzev oddฤ›lenรญ) Pล™รญklad

Nรกsledujรญcรญ dotaz zล™etฤ›zรญ vลกechny hodnoty nรกzvu oddฤ›lenรญ z tabulky studentลฏ a oddฤ›lenรญ do jednoho ล™etฤ›zce oddฤ›lenรฉho ฤรกrkou. Takลพe mรญsto vracenรญ seznamu hodnot jedna hodnota na kaลพdรฉm ล™รกdku. Vrรกtรญ pouze jednu hodnotu na jednom ล™รกdku se vลกemi hodnotami oddฤ›lenรฝmi ฤรกrkou:

SELECT GROUP_CONCAT(d.DepartmentName)
FROM Students AS s
INNER JOIN Departments AS d ON s.DepartmentId = d.DepartmentId;

To vรกm dรก:

SQLite Agregaฤnรญ funkce

Zรญskรกte tak seznam hodnot nรกzvลฏ 8 oddฤ›lenรญ spojenรฝch do jednoho ล™etฤ›zce oddฤ›lenรฉho ฤรกrkou.

GROUP_CONCAT(DISTINCT nรกzev oddฤ›lenรญ) Pล™รญklad

Nรกsledujรญcรญ dotaz zล™etฤ›zรญ odliลกnรฉ hodnoty nรกzvu oddฤ›lenรญ z tabulky studentลฏ a oddฤ›lenรญ do jednoho ล™etฤ›zce oddฤ›lenรฉho ฤรกrkou:

SELECT GROUP_CONCAT(DISTINCT d.DepartmentName)
FROM Students AS s
INNER JOIN Departments AS d ON s.DepartmentId = d.DepartmentId;

To vรกm dรก:

SQLite Agregaฤnรญ funkce

Vลกimnฤ›te si, jak se vรฝsledek liลกรญ od pล™edchozรญho vรฝsledku; vrรกtily se pouze tล™i hodnoty, coลพ jsou odliลกnรก jmรฉna oddฤ›lenรญ, a duplicitnรญ hodnoty byly odstranฤ›ny.

GROUP_CONCAT(Nรกzev oddฤ›lenรญ ,'&') Pล™รญklad

Nรกsledujรญcรญ dotaz zล™etฤ›zรญ vลกechny hodnoty sloupce nรกzvu oddฤ›lenรญ z tabulky studentลฏ a oddฤ›lenรญ do jednoho ล™etฤ›zce, ale se znakem '&' namรญsto ฤรกrky jako oddฤ›lovaฤe:

SELECT GROUP_CONCAT(d.DepartmentName, '&')
FROM Students AS s
INNER JOIN Departments AS d ON s.DepartmentId = d.DepartmentId;

To vรกm dรก:

SQLite Agregaฤnรญ funkce

Vลกimnฤ›te si, jak je k oddฤ›lenรญ hodnot pouลพit znak โ€ž&โ€œ mรญsto vรฝchozรญho znaku โ€ž,โ€œ.

SQLite MAX() & MIN()

MAX(X) vรกm vrรกtรญ nejvyลกลกรญ hodnotu z hodnot X. MAX vrรกtรญ hodnotu NULL, pokud jsou vลกechny hodnoty x nulovรฉ. Zatรญmco MIN(X) vรกm vrรกtรญ nejmenลกรญ hodnotu z hodnot X. MIN vrรกtรญ hodnotu NULL, pokud jsou vลกechny hodnoty X nulovรฉ.

Pล™รญklad

V nรกsledujรญcรญm dotazu pouลพijeme funkce MIN a MAX k zรญskรกnรญ nejvyลกลกรญ a nejniลพลกรญ znรกmky z tabulky โ€žZnรกmkyโ€œ:

SELECT MAX(Mark), MIN(Mark) FROM Marks;

To vรกm dรก:

SQLite Agregaฤnรญ funkce

SQLite SUM(x), Celkem (x)

Oba vrรกtรญ souฤet vลกech hodnot x. Liลกรญ se ale v nรกsledujรญcรญm:

  • Pokud jsou vลกechny hodnoty null, SUM vrรกtรญ null, ale Total vrรกtรญ 0.
  • TOTAL vลพdy vracรญ hodnoty s plovoucรญ desetinnou ฤรกrkou. SUM vrรกtรญ celoฤรญselnou hodnotu, pokud jsou vลกechny hodnoty x celรฉ ฤรญslo. Pokud vลกak hodnoty nejsou celรฉ ฤรญslo, vrรกtรญ hodnotu s plovoucรญ desetinnou ฤรกrkou.

Pล™รญklad

V nรกsledujรญcรญm dotazu pouลพijeme funkce SUM a total k zรญskรกnรญ souฤtu vลกech znรกmek v tabulkรกch โ€žZnรกmkyโ€œ:

SELECT SUM(Mark), TOTAL(Mark) FROM Marks;

To vรกm dรก:

SQLite Agregaฤnรญ funkce

Jak vidรญte, TOTAL vลพdy vracรญ plovoucรญ desetinnou ฤรกrku. Ale SUM vrรกtรญ celoฤรญselnou hodnotu, protoลพe hodnoty ve sloupci โ€žMarkโ€œ mohou bรฝt v celรฝch ฤรญslech.

Rozdรญl mezi pล™รญkladem SUM a TOTAL:

V nรกsledujรญcรญm dotazu ukรกลพeme rozdรญl mezi SUM a TOTAL, kdyลพ zรญskajรญ SUM hodnot NULL:

SELECT SUM(Mark), TOTAL(Mark) FROM Marks WHERE TestId = 4;

To vรกm dรก:

SQLite Agregaฤnรญ funkce

Vลกimnฤ›te si, ลพe pro TestId = 4 nejsou ลพรกdnรฉ znaฤky, takลพe pro tento test existujรญ hodnoty null. SUM vrรกtรญ nulovou hodnotu jako prรกzdnou, zatรญmco TOTAL vrรกtรญ 0.

Skupina vytvoล™enรก

Klauzule GROUP BY se pouลพรญvรก k urฤenรญ jednoho nebo vรญce sloupcลฏ, kterรฉ budou pouลพity k seskupenรญ ล™รกdkลฏ do skupin. ล˜รกdky se stejnรฝmi hodnotami budou shromรกลพdฤ›ny (uspoล™รกdรกny) do skupin.

Pro jakรฝkoli jinรฝ sloupec, kterรฝ nenรญ zahrnut ve skupinฤ› podle sloupcลฏ, mลฏลพete pouลพรญt agregaฤnรญ funkci.

Pล™รญklad:

Nรกsledujรญcรญ dotaz vรกm poskytne celkovรฝ poฤet studentลฏ pล™รญtomnรฝch v jednotlivรฝch oddฤ›lenรญch.

SELECT d.DepartmentName, COUNT(s.StudentId) AS StudentsCount
FROM Students AS s
INNER JOIN Departments AS d ON s.DepartmentId = d.DepartmentId
GROUP BY d. DepartmentName;

To vรกm dรก:

SQLite Seskupit podle a MรNร

Klauzule GROUPBY DepartmentName seskupรญ vลกechny studenty do skupin po jednรฉ pro kaลพdรฝ nรกzev oddฤ›lenรญ. Pro kaลพdou skupinu โ€žoddฤ›lenรญโ€œ bude poฤรญtat studenty na nรญ.

klauzule HAVING

Pokud chcete filtrovat skupiny vrรกcenรฉ klauzulรญ GROUP BY, mลฏลพete zadat klauzuli โ€žHAVINGโ€œ s vรฝrazem za klauzuli GROUP BY. Vรฝraz bude pouลพit k filtrovรกnรญ tฤ›chto skupin.

Pล™รญklad

V nรกsledujรญcรญm dotazu vybereme ty katedry, na kterรฝch jsou pouze dva studenti:

SELECT d.DepartmentName, COUNT(s.StudentId) AS StudentsCount
FROM Students AS s
INNER JOIN Departments AS d ON s.DepartmentId = d.DepartmentId
GROUP BY d. DepartmentName
HAVING COUNT(s.StudentId) = 2;

To vรกm dรก:

SQLite Seskupit podle a MรNร

Klauzule HAVING COUNT(S.StudentId) = 2 vyfiltruje vrรกcenรฉ skupiny a vrรกtรญ pouze ty skupiny, kterรฉ obsahujรญ prรกvฤ› dva studenty. V naลกem pล™รญpadฤ› mรก katedra umฤ›nรญ 2 studenty, takลพe je zobrazena ve vรฝstupu.

SQLite Dotaz a poddotaz

Uvnitล™ jakรฉhokoli dotazu mลฏลพete pouลพรญt jinรฝ dotaz buฤ v SELECT, INSERT, DELETE, UPDATE nebo uvnitล™ jinรฉho poddotazu.

Tento vnoล™enรฝ dotaz se nazรฝvรก poddotaz. Nynรญ uvidรญme nฤ›kolik pล™รญkladลฏ pouลพitรญ poddotazลฏ v klauzuli SELECT. V tutoriรกlu Modifying Data vลกak uvidรญme, jak mลฏลพeme pouลพรญt poddotazy s pล™รญkazy INSERT, DELETE a UPDATE.

Pouลพitรญ poddotazu v pล™รญkladu klauzule FROM

V nรกsledujรญcรญm dotazu zahrneme poddotaz do klauzule FROM:

SELECT
  s.StudentName, t.Mark
FROM Students AS s
INNER JOIN
(
   SELECT StudentId, Mark
   FROM Tests AS t
   INNER JOIN Marks AS m ON t.TestId = m.TestId
)  ON s.StudentId = t.StudentId;

dotaz:

   SELECT StudentId, Mark
   FROM Tests AS t
   INNER JOIN Marks AS m ON t.TestId = m.TestId

Vรฝลกe uvedenรฝ dotaz se zde nazรฝvรก poddotaz, protoลพe je vnoล™en do klauzule FROM. Vลกimnฤ›te si, ลพe jsme mu dali alias โ€žtโ€œ, abychom mohli odkazovat na sloupce vrรกcenรฉ z nฤ›j v dotazu.

Tento dotaz vรกm poskytne:

SQLite Dotaz a poddotaz

Takลพe v naลกem pล™รญpadฤ›,

  • s.StudentName je vybrรกno z hlavnรญho dotazu, kterรฝ udรกvรก jmรฉna studentลฏ a
  • t.Mark je vybrรกn z dรญlฤรญho dotazu; to dรกvรก znรกmky zรญskanรฉ kaลพdรฝm z tฤ›chto studentลฏ

Pouลพitรญ poddotazu v pล™รญkladu klauzule WHERE

V nรกsledujรญcรญm dotazu zahrneme poddotaz do klauzule WHERE:

SELECT DepartmentName
FROM Departments AS d
WHERE NOT EXISTS (SELECT DepartmentId
                  FROM Students AS s
                  WHERE d.DepartmentId = s.DepartmentId);

dotaz:

SELECT DepartmentId
FROM Students AS s
WHERE d.DepartmentId = s.DepartmentId

Vรฝลกe uvedenรฝ dotaz se zde nazรฝvรก poddotaz, protoลพe je vnoล™en do klauzule WHERE. Poddotaz vrรกtรญ hodnoty DepartmentId, kterรฉ pouลพije operรกtor NOT EXISTS.

Tento dotaz vรกm poskytne:

SQLite Dotaz a poddotaz

Ve vรฝลกe uvedenรฉm dotazu jsme vybrali katedru, na kterรฉ nenรญ zapsรกn ลพรกdnรฝ student. Coลพ je tady "matematickรฉ" oddฤ›lenรญ.

sada Operations โ€“ UNION,Intersect

SQLite podporuje nรกsledujรญcรญ operace SET:

UNION & UNION Vล ECHNY

Kombinuje jednu nebo vรญce sad vรฝsledkลฏ (skupina ล™รกdkลฏ) vrรกcenรฝch z vรญce pล™รญkazลฏ SELECT do jednรฉ sady vรฝsledkลฏ.

UNION vrรกtรญ odliลกnรฉ hodnoty. UNION ALL vลกak nebude a bude obsahovat duplikรกty.

Vลกimnฤ›te si, ลพe nรกzev sloupce bude nรกzev sloupce zadanรฝ v prvnรญm pล™รญkazu SELECT.

Pล™รญklad UNION

V nรกsledujรญcรญm pล™รญkladu zรญskรกme seznam DepartmentId z tabulky studentลฏ a seznam DepartmentId z tabulky departments ve stejnรฉm sloupci:

SELECT DepartmentId AS DepartmentIdUnioned FROM Students
UNION
SELECT DepartmentId FROM Departments;

To vรกm dรก:

SQLite sada Operace

Dotaz vrรกtรญ pouze 5 ล™รกdkลฏ, coลพ jsou odliลกnรฉ hodnoty ID oddฤ›lenรญ. Vลกimnฤ›te si prvnรญ hodnoty, kterรก je nulovou hodnotou.

SQLite UNION ALL Pล™รญklad

V nรกsledujรญcรญm pล™รญkladu zรญskรกme seznam DepartmentId z tabulky studentลฏ a seznam DepartmentId z tabulky departments ve stejnรฉm sloupci:

SELECT DepartmentId AS DepartmentIdUnioned FROM Students
UNION ALL
SELECT DepartmentId FROM Departments;

To vรกm dรก:

SQLite sada Operace

Dotaz vrรกtรญ 14 ล™รกdkลฏ, 10 ล™รกdkลฏ z tabulky studentลฏ a 4 z tabulky oddฤ›lenรญ. Vลกimnฤ›te si, ลพe vrรกcenรฉ hodnoty jsou duplikรกty. Vลกimnฤ›te si takรฉ, ลพe nรกzev sloupce byl ten, kterรฝ byl zadรกn v prvnรญm pล™รญkazu SELECT.

Nynรญ se podรญvejme, jak UNION all poskytne rลฏznรฉ vรฝsledky, pokud nahradรญme UNION ALL za UNION:

SQLite PROSรT

Vrรกtรญ hodnoty, kterรฉ existujรญ v obou kombinovanรฝch sadฤ› vรฝsledkลฏ. Hodnoty, kterรฉ existujรญ v jednรฉ z kombinovanรฉ sady vรฝsledkลฏ, budou ignorovรกny.

Pล™รญklad

V nรกsledujรญcรญm dotazu vybereme hodnoty DepartmentId, kterรฉ existujรญ v tabulkรกch Students a Departments ve sloupci DepartmentId:

SELECT DepartmentId FROM Students
Intersect
SELECT DepartmentId FROM Departments;

To vรกm dรก:

SQLite sada Operace

Dotaz vracรญ pouze tล™i hodnoty 1, 2 a 3. Coลพ jsou hodnoty, kterรฉ existujรญ v obou tabulkรกch.

Hodnoty null a 4 vลกak nebyly zahrnuty, protoลพe hodnota null existuje pouze v tabulce studentลฏ a nikoli v tabulce oddฤ›lenรญ. A hodnota 4 existuje v tabulce oddฤ›lenรญ a ne v tabulce studentลฏ.

To je dลฏvod, proฤ byly hodnoty NULL i 4 ignorovรกny a nebyly zahrnuty do vrรกcenรฝch hodnot.

Aลฝ NA

Pล™edpoklรกdejme, ลพe pokud mรกte dva seznamy ล™รกdkลฏ, seznam1 a seznam2, a chcete ล™รกdky pouze ze seznamu1, kterรฝ v seznamu2 neexistuje, mลฏลพete pouลพรญt klauzuli โ€žEXCEPTโ€œ. Klauzule EXCEPT porovnรก dva seznamy a vrรกtรญ ty ล™รกdky, kterรฉ existujรญ v seznamu1 a neexistujรญ v seznamu2.

Pล™รญklad

V nรกsledujรญcรญm dotazu vybereme hodnoty DepartmentId, kterรฉ existujรญ v tabulce oddฤ›lenรญ a neexistujรญ v tabulce studentลฏ:

SELECT DepartmentId FROM Departments
EXCEPT
SELECT DepartmentId FROM Students;

To vรกm dรก:

SQLite sada Operace

Dotaz vrรกtรญ pouze hodnotu 4. Coลพ je jedinรก hodnota, kterรก existuje v tabulce oddฤ›lenรญ a neexistuje v tabulce studentลฏ.

Zpracovรกnรญ NULL

Hodnota โ€žNULLโ€œ je speciรกlnรญ hodnota v SQLitePouลพรญvรก se k reprezentaci neznรกmรฉ nebo chybฤ›jรญcรญ hodnoty. Vลกimnฤ›te si, ลพe hodnota null je zcela odliลกnรก od hodnoty โ€ž0โ€œ nebo prรกzdnรฉ hodnoty โ€žโ€œ. Protoลพe 0 a prรกzdnรก hodnota jsou znรกmรฉ hodnoty, je hodnota null neznรกmรก.

Hodnoty NULL vyลพadujรญ speciรกlnรญ zpracovรกnรญ SQLite, nynรญ uvidรญme, jak zachรกzet s hodnotami NULL.

Hledejte hodnoty NULL

K vyhledรกnรญ hodnot null nemลฏลพete pouลพรญt normรกlnรญ operรกtor rovnosti (=). Napล™รญklad nรกsledujรญcรญ dotaz hledรก studenty, kteล™รญ majรญ nulovou hodnotu DepartmentId:

SELECT * FROM Students WHERE DepartmentId = NULL;

Tento dotaz nepล™inese ลพรกdnรฝ vรฝsledek:

SQLite Zpracovรกnรญ NULL

Protoลพe hodnota NULL se nerovnรก ลพรกdnรฉ jinรฉ hodnotฤ› vฤetnฤ› samotnรฉ hodnoty null, proto nevrรกtila ลพรกdnรฝ vรฝsledek.

Aby vลกak dotaz fungoval, musรญte k vyhledรกvรกnรญ hodnot NULL pouลพรญt operรกtor โ€žIS NULLโ€œ takto:

SELECT * FROM Students WHERE DepartmentId IS NULL;

To vรกm dรก:

SQLite Zpracovรกnรญ NULL

Dotaz vrรกtรญ ty studenty, kteล™รญ majรญ nulovou hodnotu DepartmentId.

Pokud chcete zรญskat hodnoty, kterรฉ nejsou null, musรญte pouลพรญt operรกtor โ€žIS NOT NULLโ€œ takto:

SELECT * FROM Students WHERE DepartmentId IS NOT NULL;

To vรกm dรก:

SQLite Zpracovรกnรญ NULL

Dotaz vrรกtรญ ty studenty, kteล™รญ nemajรญ hodnotu NULL DepartmentId.

Podmรญnฤ›nรฉ vรฝsledky

Pokud mรกte seznam hodnot a chcete vybrat kteroukoli z nich na zรกkladฤ› urฤitรฝch podmรญnek. Za tรญmto รบฤelem by podmรญnka pro tuto konkrรฉtnรญ hodnotu mฤ›la bรฝt pravdivรก, aby mohla bรฝt vybrรกna.

Vรฝraz CASE vyhodnotรญ tento seznam podmรญnek pro vลกechny hodnoty. Pokud je podmรญnka pravdivรก, vrรกtรญ tuto hodnotu.

Mรกte-li napล™รญklad sloupec Znรกmka a chcete vybrat textovou hodnotu na zรกkladฤ› hodnoty stupnฤ› takto:

โ€“ โ€žVรฝbornฤ›โ€œ, pokud je znรกmka vyลกลกรญ neลพ 85.

โ€“ โ€žVelmi dobล™eโ€œ, pokud je znรกmka mezi 70 a 85.

โ€“ โ€žDobrรฝโ€œ, pokud je znรกmka mezi 60 a 70.

Pak k tomu mลฏลพete pouลพรญt vรฝraz CASE.

To lze pouลพรญt k definovรกnรญ urฤitรฉ logiky v klauzuli SELECT, abyste mohli vybrat urฤitรฉ vรฝsledky v zรกvislosti na urฤitรฝch podmรญnkรกch, jako je napล™รญklad pล™รญkaz if.

Operรกtor CASE lze definovat s rลฏznรฝmi syntaxemi takto:

Mลฏลพete pouลพรญt rลฏznรฉ podmรญnky:

CASE
  WHEN condition1 THEN result1
  WHEN condition2 THEN result2
  WHEN condition3 THEN result3
  โ€ฆ
  ELSE resultn
END

Nebo mลฏลพete pouลพรญt pouze jeden vรฝraz a vloลพit rลฏznรฉ moลพnรฉ hodnoty na vรฝbฤ›r:

CASE expression
  WHEN value1 THEN result1
  WHEN value2 THEN result2
  WHEN value3 THEN result3
  โ€ฆ
  ELSE restuln
END

Vลกimnฤ›te si, ลพe klauzule ELSE je volitelnรก.

Pล™รญklad

V nรกsledujรญcรญm pล™รญkladu pouลพijeme vรฝraz CASE s hodnotou NULL ve sloupci ID oddฤ›lenรญ v tabulce Studenti k zobrazenรญ textu โ€žลฝรกdnรฉ oddฤ›lenรญโ€œ takto:

SELECT
  StudentName,
  CASE
    WHEN DepartmentId IS NULL THEN 'No Department'
    ELSE DepartmentId
  END AS DepartmentId
FROM Students;
  • Operรกtor CASE zkontroluje hodnotu DepartmentId, zda je nulovรก nebo ne.
  • Pokud se jednรก o hodnotu NULL, vybere doslovnou hodnotu 'No Department' namรญsto hodnoty DepartmentId.
  • Pokud hodnota nenรญ nulovรก, vybere se hodnota sloupce DepartmentId.

Tรญm zรญskรกte vรฝstup, jak je znรกzornฤ›no nรญลพe:

SQLite Podmรญnฤ›nรฉ vรฝsledky CASE

Bฤ›ลพnรฝ tabulkovรฝ vรฝraz

Bฤ›ลพnรฉ tabulkovรฉ vรฝrazy (CTE) jsou poddotazy, kterรฉ jsou definovรกny uvnitล™ pล™รญkazu SQL s danรฝm nรกzvem.

Oproti poddotazลฏm mรก vรฝhodu, protoลพe je definovรกna z pล™รญkazลฏ SQL a usnadลˆuje ฤtenรญ, รบdrลพbu a pochopenรญ dotazลฏ.

Spoleฤnรฝ tabulkovรฝ vรฝraz lze definovat umรญstฤ›nรญm klauzule WITH pล™ed pล™รญkazy SELECT takto:

WITH CTEname
AS
(
   SELECT statement
)
SELECT, UPDATE, INSERT, or update statement here FROM CTE

โ€žNรกzev CTEโ€œ je libovolnรฝ nรกzev, kterรฝ mลฏลพete CTE pล™iล™adit a kterรฝ mลฏลพete pouลพรญt k pozdฤ›jลกรญmu odkazovรกnรญ. Upozorลˆujeme, ลพe pro CTE mลฏลพete definovat pล™รญkazy SELECT, UPDATE, INSERT nebo DELETE.

Nynรญ se podรญvejme na pล™รญklad, jak pouลพรญt CTE v klauzuli SELECT.

Pล™รญklad

V nรกsledujรญcรญm pล™รญkladu definujeme CTE z pล™รญkazu SELECT a pozdฤ›ji jej pouลพijeme v jinรฉm dotazu:

WITH AllDepartments
AS
(
  SELECT DepartmentId, DepartmentName
  FROM Departments
)
SELECT
  s.StudentId,
  s.StudentName,
  a.DepartmentName
FROM Students AS s
INNER JOIN AllDepartments AS a ON s.DepartmentId = a.DepartmentId;

V tomto dotazu jsme definovali CTE a pojmenovali ho โ€žVลกechna oddฤ›lenรญโ€œ. Toto CTE bylo definovรกno z dotazu SELECT:

SELECT DepartmentId, DepartmentName
  FROM Departments

Potรฉ, co jsme definovali CTE, jsme jej pouลพili v dotazu SELECT, kterรฝ nรกsleduje po nฤ›m.

Vลกimnฤ›te si, ลพe bฤ›ลพnรฉ tabulkovรฉ vรฝrazy neovlivลˆujรญ vรฝstup dotazu. Je to zpลฏsob, jak definovat logickรฝ pohled nebo poddotaz, aby bylo moลพnรฉ je znovu pouลพรญt ve stejnรฉm dotazu. Bฤ›ลพnรฉ tabulkovรฉ vรฝrazy jsou jako promฤ›nnรก, kterou deklarujete a znovu ji pouลพijete jako poddotaz. Pouze pล™รญkaz SELECT ovlivลˆuje vรฝstup dotazu.

Tento dotaz vรกm poskytne:

SQLite Bฤ›ลพnรฝ tabulkovรฝ vรฝraz

Pokroฤilรฉ dotazy

Pokroฤilรฉ dotazy jsou ty dotazy, kterรฉ obsahujรญ komplexnรญ spojenรญ, poddotazy a nฤ›kterรฉ agregรกty. V nรกsledujรญcรญ ฤรกsti uvidรญme pล™รญklad pokroฤilรฉho dotazu:

Kde zรญskรกme,

  • Jmรฉna oddฤ›lenรญ se vลกemi studenty pro kaลพdรฉ oddฤ›lenรญ
  • Jmรฉno studentลฏ oddฤ›lenรฉ ฤรกrkou a
  • Ukazuje, ลพe oddฤ›lenรญ mรก alespoลˆ tล™i studenty
SELECT
  d.DepartmentName,
  COUNT(s.StudentId) StudentsCount,
  GROUP_CONCAT(StudentName) AS Students
FROM Departments AS d
INNER JOIN Students AS s ON s.DepartmentId = d.DepartmentId
GROUP BY d.DepartmentName
HAVING COUNT(s.StudentId) >= 3;

Pล™idali jsme klauzuli JOIN pro zรญskรกnรญ nรกzvu oddฤ›lenรญ (DepartmentName) z tabulky Departments. Potรฉ jsme pล™idali klauzuli GROUP BY se dvฤ›ma agregaฤnรญmi funkcemi:

  • โ€žPOฤŒETโ€œ pro sฤรญtรกnรญ studentลฏ pro kaลพdou skupinu oddฤ›lenรญ.
  • GROUP_CONCAT pro zล™etฤ›zenรญ studentลฏ pro kaลพdou skupinu s ฤรกrkami oddฤ›lenรฝmi v jednom ล™etฤ›zci.

Po GROUP BY jsme pomocรญ klauzule HAVING filtrovali katedry a vybrali pouze ta katedry, kterรก majรญ alespoลˆ 3 studenty.

Vรฝsledek bude nรกsledujรญcรญ:

SQLite Pokroฤilรฉ dotazy

Nejฤastฤ›jลกรญ dotazy

WHERE filtruje jednotlivรฉ ล™รกdky pล™ed jakoukoli skupinouping a nelze pouลพรญt agregaฤnรญ funkce. Funkce HAVING filtruje celรฉ skupiny po funkci GROUP BY a mลฏลพe testovat agregace, jako napล™รญklad COUNT nebo SUM. V dotazu se WHERE zapรญลกe pล™ed funkci GROUP BY a HAVING aลพ za ni.

Klรญฤovรก slova SQL, jako napล™รญklad SELECT a WHERE, nerozliลกujรญ velkรก a malรก pรญsmena. Operรกtor LIKE nerozliลกuje velkรก a malรก pรญsmena pro pรญsmena ASCII, zatรญmco GLOB rozliลกuje velkรก a malรก pรญsmena. Text uloลพenรฝ ve sloupcรญch si zachovรกvรก pลฏvodnรญ velkรก a malรก pรญsmena, takลพe porovnรกvรกnรญ hodnot pomocรญ operรกtoru equals respektuje pล™esnรฉ znaky.

Pล™idejte ORDER BY RANDOM() a LIMIT 1 do SELECT, napล™รญklad SELECT * FROM Students ORDER BY RANDOM() LIMIT 1. RANDOM() zamรญchรก ล™รกdky a LIMIT vrรกtรญ jednu. Zvyลกte ฤรญslo LIMIT pro naฤtenรญ nฤ›kolika nรกhodnรฝch ล™รกdkลฏ.

Pล™รญkaz JOIN kombinuje sloupce ze dvou tabulek vedle sebe pomocรญ shody a rozลกiล™uje kaลพdรฝ ล™รกdek. Pล™รญkaz UNION stohuje ล™รกdky dvou vรฝsledkลฏ pล™รญkazu SELECT na sebe do jednoho seznamu, takลพe oba dotazy musรญ vracet stejnรฝ poฤet sloupcลฏ.

Ne. Bez klauzule ORDER BY SQLite mลฏลพe vracet ล™รกdky v libovolnรฉm poล™adรญ, takลพe LIMIT by mohl pล™i kaลพdรฉm spuลกtฤ›nรญ vybrat jinรฉ ล™รกdky. Vลพdy pouลพijte LIMIT s ORDER BY, pokud potล™ebujete pล™edvรญdatelnรฉ vรฝsledky, napล™รญklad ORDER BY StudentId LIMIT 10.

Vytvoล™te index sloupcลฏ pouลพitรฝch v klauzulรญch WHERE, JOIN a ORDER BY tak, aby SQLite Mลฏลพete vyhledat ล™รกdky bez nutnosti prohledรกvรกnรญ celรฉ tabulky. Vรฝbฤ›r pouze potล™ebnรฝch sloupcลฏ a spuลกtฤ›nรญ pล™รญkazu ANALYZE pro aktualizaci statistik takรฉ zrychlรญ dotazy.

Ano. Asistenti pro pล™evod textu do SQL s umฤ›lou inteligencรญ pล™evรกdฤ›jรญ poลพadavky v prostรฉ angliฤtinฤ› na SQLite Pล™รญkazy SELECT, WHERE, JOIN a GROUP BY. Zadรกnรญ nรกzvลฏ tabulek a sloupcลฏ zvyลกuje pล™esnost a kaลพdรฝ vygenerovanรฝ dotaz by mฤ›l bรฝt pล™ed spuลกtฤ›nรญm na reรกlnรฝch datech zkontrolovรกn a otestovรกn.

Ano. GitHub Copilot navrhuje SQLite dotazy vloลพenรฉ do editorลฏ, jako napล™รญklad VS Code, dokonฤuje klauzule SELECT, JOIN, aggregate a GROUP BY. ฤŒte blรญzkรก schรฉmata a komentรกล™e, takลพe jeho nรกvrhy znovu pouลพรญvajรญ skuteฤnรฉ nรกzvy vaลกich tabulek a sloupcลฏ.

Shrลˆte tento pล™รญspฤ›vek takto: