Prohledejte celou tabulku c. Fulltextové vyhledávání v Microsoft SQL Server

Začněme základními dotazy. Jaké by to bylo bez nich? Nejlakoničtější forma dotazu SQL se překládá jako „chci získat všechna data z této tabulky“. Výsledkem následujícího dotazu jsou všechny záznamy se všemi poli z tabulky D_STAFF.

VYBERTE * Z D_STAFF

Zadání SQL dotazu v tréninkovém programu.

Vyberte [Sekce SQL] v Průzkumníku vlevo, klikněte na [tlačítko SQL] nad seznamem vpravo, zadejte dotaz a znovu klikněte na [tlačítko SQL]. Po potvrzení požadavku bude seznam vpravo vypadat takto. V tomto případě je vše jednodušší: stačí zadat SQL dotaz do příslušného pole a kliknout na [Spustit].


Výsledek provedení jednoduchého SQL dotazu.

Použití (*) za příkazem SELECT je jistě pohodlné, zvláště pokud nevíte, jaká pole v tabulce jsou, ale je to také drahé - struktury, které ukládají výsledek dotazu, spotřebují poměrně hodně paměti „navíc“, a to jen zvyšuje čas strávený prováděním samotného dotazu. Další možnost je mnohem vhodnější, pokud potřebujete pouze informace o svém celém jménu. zaměstnance a jeho odpracovaných let. Překlad zní asi takto: „Chci o každém v tabulce vědět jen to a to...“

VYBERTE S_NAME, S_EXPERIENCE FROM D_STAFF

Výsledek posledního SQL dotazu zabírá na šířku znatelně méně místa.


Výběr hodnot pro konkrétní pole tabulky.

Krok 2. SQL dotaz s jednoduchým kritériem výběru

Nejjednodušší dotazy jsou v praxi prakticky nepoužitelné, protože ze zadané tabulky „vytáhnou“ absolutně všechny záznamy a mohou jich být stovky tisíc. DBMS může jednoduše odmítnout splnit takový požadavek a na klientském počítači nemusí být dostatek paměti RAM. Co dělat s výsledky takových dotazů, i když jsou správně provedeny, není vždy jasné, i když u některých to bude fungovat. Aby bylo možné uložit omezení na výběr záznamů, které potřebujete, používá SQL klíčové slovo WHERE. Dotaz níže vybírá pouze zaměstnance s praxí kratší než 5 let.

VYBERTE S_NAME, S_EXPERIENCE FROM D_STAFF WHERE S_EXPERIENCE


Používání jednoduché kritérium výběr záznamů.

Krok 3. SQL dotaz se složenými výběrovými kritérii

k čemu jsou? složená výběrová kritéria záznamy, myslím, že není třeba vysvětlovat. Ke stejnému účelu jako dotazy s jednoduchými kritérii. Podmínky jsou kombinovány pomocí logických operátorů spojky A disjunkce(operátory AND a OR) a jsou seskupeny pomocí závorek. Následující dotaz vrátí záznamy zaměstnanců s praxí kratší než 5 let a s dodatečným omezením pozice, kterou zastávají.

VYBERTE S_NAME, S_EXPERIENCE, S_POSITION OD D_STAFF WHERE (D_STAFF.S_POSITION 20) A D_STAFF.S_EXPERIENCE


Používání komplexní kritérium výběr záznamů.

Krok 4. MEZI Operátorem

Operátor BETWEEN zjednodušuje syntaxi pro popis kritérií, která definují rozsah přijatelných hodnot. Místo BETWEEN 3 AND 7 níže můžete napsat D_STAFF.S_EXPERIENCE >=3 AND D_STAFF.S_EXPERIENCE<=7 . Первый вариант способствует наглядности запроса – это раз, поиск на стороне СУБД может выполняться по отдельному алгоритму, специально оптимизированному для подобного вида ограничений – это два.

VYBERTE S_NAME, S_EXPERIENCE, S_POSITION OD D_STAFF WHERE (D_STAFF.S_POSITION 20) A D_STAFF.S_EXPERIENCE BETWEEN 3 AND 7


Pomocí operátoru BETWEEN.

Krok 5: LIKE operátorovi

Tento úžasný operátor vám umožňuje omezit hodnoty textových polí pomocí zástupných znaků. Syntaxi nebudu vysvětlovat, myslím, že z příkladu je vše jasné. Hledáme zaměstnance s celým jménem. počínaje "S", by se měl setkat uprostřed "hřídel" a všechno musí skončit "ich". V některých DBMS lze klíčové slovo LIKE použít také s hodnotami data a času.

VYBERTE S_NAME OD D_STAFF, KDE S_NAME MÁ RÁD "C%" A S_NAME JAKO "%Val%" A S_NAME JAKO "%ich"

VYBERTE S_NAME Z D_STAFF, KDE SE S_NAME LÍBÍ "S%Val%ich"


Pomocí operátoru LIKE.

Krok 6: Aliasy tabulek a polí

Lze určit názvy tabulek a polí použité v dotazu pseudonymy. Jak se to dělá, je ukázáno níže. Proč se tak děje, bude ukázáno v následujících krocích, včetně kroku 7, a tento příklad ilustruje to nejzřejmější pomocí aliasů v SQL– registrace výsledku požadavku v souladu s požadavky na pohodlí jeho vnímání osobou. K definování aliasu pro tabulku nebo pole v SQL se používá klíčové slovo AS. Výsledek dotazu (záhlaví tabulky) v této verzi vypadá vhodněji pro vytvoření sestavy na jeho základě.

SELECT S_NAME AS Zaměstnanec, S_EXPERIENCE AS [Pracovní zkušenost], S_POSITION AS Pozice FROM D_STAFF AS STAFF


Použití aliasů tabulek a polí.

Krok 7. Vztah „Šéf - podřízený“

Tento příklad dokončuje „první kroky“ učení SQL dotazů nejsložitějšími z nich. Zde „naprogramujeme“ výstup seznamu zaměstnanců spolu s jejich bezprostředním vedením. Potíž je v tom, že záznamy o obou jsou uloženy ve stejné tabulce a zde se bez aliasů neobejdete. DBMS bude během zpracování dotazu přistupovat k tabulce D_STAFF, jako by to byly dvě různé tabulky (pod aliasy STAFF a CHIEF), aby spojil záznamy do jediné kolona na základě vztahu „nadřízený-podřízený“. Vztah je modelován následovně: hodnota pole S_CHIEF_ID podřízeného odpovídá hodnotě pole XD_IID jeho nadřízeného.

VYBERTE STAFF.S_NAME JAKO Podřízeného, ​​STAFF.S_POSITION JAKO [Podřízená pozice], CHIEF.S_NAME JAKO náčelníka, CHIEF.S_POSITION JAKO [Pozice nadřízeného] OD D_STAFF JAKO ZAMĚSTNANCE, D_STAFF JAKO CHIEF WHERE STAFF.S_CHIEF_ID_IDICHIEFID=


Získání hierarchie "nadřízený - podřízený" pomocí aliasu tabulky v dotazu SQL.

Každý webový vývojář potřebuje znát SQL, aby mohl psát databázové dotazy. A přestože phpMyAdmin nebyl zrušen, je často nutné si ušpinit ruce, abyste mohli psát nízkoúrovňové SQL.

Proto jsme připravili krátkou prohlídku základů SQL. Začněme!

1. Vytvořte tabulku

Příkaz CREATE TABLE se používá k vytváření tabulek. Argumenty musí být názvy sloupců a také jejich datové typy.

Vytvořme jednoduchou tabulku s názvem měsíc. Skládá se ze 3 sloupců:

  • id– Číslo měsíce v kalendářním roce (celé číslo).
  • jméno– Název měsíce (řetězec, maximálně 10 znaků).
  • dní– Počet dní v tomto měsíci (celé číslo).

Takto by vypadal odpovídající SQL dotaz:

CREATE TABLE měsíce (id int, název varchar(10), dny int);

Při vytváření tabulek je také vhodné přidat primární klíč pro jeden ze sloupců. Záznamy tak zůstanou jedinečné a zrychlí se požadavky na načítání. V našem případě nechť je název měsíce jedinečný (sloupec jméno)

CREATE TABLE měsíce (id int, jméno varchar(10), dny int, PRIMARY KEY (název));

Datum a čas
Typ datPopis
DATUMHodnoty data
DATETIMEHodnoty data a času s přesností na minutu
ČASČasové hodnoty

2. Vkládání řádků

Nyní vyplníme naši tabulku měsíce užitečné informace. Přidávání záznamů do tabulky se provádí pomocí příkazu INSERT. Tento pokyn lze napsat dvěma způsoby.

První metodou není zadat názvy sloupců, do kterých budou data vložena, ale zadat pouze hodnoty.

Tato metoda záznamu je jednoduchá, ale nebezpečná, protože neexistuje žádná záruka, že při rozšiřování projektu a úpravách tabulky budou sloupce ve stejném pořadí jako dříve. Bezpečný (a zároveň těžkopádnější) způsob zápisu příkazu INSERT vyžaduje zadání hodnot i pořadí sloupců:

Zde je první hodnota v seznamu HODNOTY odpovídá prvnímu zadanému názvu sloupce atd.

3. Extrahování dat z tabulek

Příkaz SELECT je náš nejlepší přítel, když chceme získat data z databáze. Používá se velmi často, proto této sekci věnujte velkou pozornost.

Nejjednodušším použitím příkazu SELECT je dotaz, který vrací všechny sloupce a řádky z tabulky (například tabulky podle názvu postavy):

VYBERTE * Z "znaků"

Symbol hvězdičky (*) znamená, že chceme získat data ze všech sloupců. Vzhledem k tomu, že databáze SQL se obvykle skládají z více než jedné tabulky, je nutné zadat klíčové slovo FROM a za ním název tabulky oddělený mezerou.

Někdy nechceme získat data z ne všech sloupců v tabulce. K tomu musíme místo hvězdičky (*) zapsat názvy požadovaných sloupců oddělené čárkami.

SELECT id, jméno FROM měsíc

Navíc v mnoha případech chceme, aby byly výsledné výsledky seřazeny v určitém pořadí. V SQL to děláme pomocí ORDER BY. Může přijmout volitelný modifikátor - ASC (výchozí) řazení ve vzestupném pořadí nebo DESC, řazení v sestupném pořadí:

SELECT id, jméno FROM měsíc ORDER BY name DESC

Při použití příkazu ORDER BY se ujistěte, že je v příkazu SELECT uveden jako poslední. V opačném případě se zobrazí chybová zpráva.

4. Filtrování dat

Naučili jste se, jak vybrat konkrétní sloupce z databáze pomocí SQL dotazu, ale co když potřebujeme také načíst konkrétní řádky? Zde přichází na pomoc klauzule WHERE, která nám umožňuje filtrovat data v závislosti na stavu.

V tomto dotazu vybíráme z tabulky pouze ty měsíce měsíc, ve kterých je více než 30 dní pomocí operátoru větší než (>).

VYBERTE ID, jméno FROM měsíc WHERE dní > 30

5. Pokročilé filtrování dat. Operátory AND a OR

Dříve jsme používali filtrování dat pomocí jediného kritéria. Pro složitější filtrování dat můžete použít operátory AND a OR a operátory porovnání (=,<,>,<=,>=,<>).

Zde máme tabulku obsahující čtyři nejprodávanější alba všech dob. Vyberme ty, které se řadí mezi rockové a prodalo se jich necelých 50 milionů kopií. To lze snadno provést umístěním operátoru AND mezi tyto dvě podmínky.


VYBERTE * Z alb WHERE žánr = "rock" A tržby_v_milionech<= 50 ORDER BY released

6. Mezi/Mezi/To se mi líbí

WHERE také podporuje několik speciálních příkazů, které vám umožní rychle zkontrolovat nejčastěji používané dotazy. Tady jsou:

  • IN – slouží k označení rozsahu podmínek, z nichž každá může být splněna
  • BETWEEN – kontroluje, zda je hodnota v zadaném rozsahu
  • LIKE – vyhledává konkrétní vzory

Například pokud chceme vybrat alba pomocí pop A duše music, můžeme použít IN("value1","value2") .

SELECT * FROM alb WHERE žánr IN ("pop","soul");

Pokud chceme získat všechna alba vydaná v letech 1975 až 1985, musíme napsat:

SELECT * FROM alb WHERE vydaná BETWEEN 1975 AND 1985;

7. Funkce

SQL je nabitý funkcemi, které dělají nejrůznější užitečné věci. Zde jsou některé z nejčastěji používaných:

  • COUNT() – vrací počet řádků
  • SUM() - vrátí celkový součet číselného sloupce
  • AVG() - vrací průměr sady hodnot
  • MIN() / MAX() – Získá minimální/maximální hodnotu ze sloupce

Abychom získali poslední rok v naší tabulce, musíme napsat následující SQL dotaz:

SELECT MAX (vydáno) FROM alb;

8. Dílčí dotazy

V předchozím odstavci jsme se naučili provádět jednoduché výpočty s daty. Pokud chceme použít výsledek z těchto výpočtů, neobejdeme se bez vnořených dotazů. Řekněme, že chceme výstup umělec, album A rok vydání pro nejstarší album v tabulce.

Víme, jak získat tyto konkrétní sloupce:

SELECT interpret, album, vydané FROM alb;

Víme také, jak získat nejstarší rok:

SELECT MIN(uvolněno) FROM alba;

Vše, co je nyní potřeba, je spojit dva dotazy pomocí WHERE:

SELECT interpret,album,vydáno FROM alb WHERE vydané = (SELECT MIN(vydáno) FROM alb);

9. Spojování stolů

Ve složitějších databázích existuje více vzájemně souvisejících tabulek. Níže jsou například dvě tabulky o videohrách ( video_hry) a vývojáři videoher ( game_developers).


V tabulce video_hry existuje sloupec pro vývojáře ( developer_id), ale obsahuje celé číslo, nikoli jméno vývojáře. Toto číslo představuje identifikátor ( id) odpovídajícího vývojáře z tabulky vývojářů her ( game_developers), logicky spojující dva seznamy, což nám umožňuje používat informace uložené v obou seznamech současně.

Pokud chceme vytvořit dotaz, který vrátí vše, co potřebujeme vědět o hrách, můžeme použít INNER JOIN k propojení sloupců z obou tabulek.

SELECT video_games.name, video_games.genre, game_developers.name, game_developers.country FROM video_games INNER JOIN game_developers ON video_games.developer_id = game_developers.id;

Toto je nejjednodušší a nejběžnější typ JOIN. Existuje několik dalších možností, ale ty se týkají méně běžných případů.

10. Přezdívky

Pokud se podíváte na předchozí příklad, všimnete si, že existují dva sloupce tzv jméno. To je matoucí, takže nastavme alias na jeden z opakujících se sloupců, jako je tento jméno od stolu game_developers bude voláno vývojář.

Dotaz můžeme také zkrátit aliasem názvů tabulek: video_hry zavolejme hry, game_developers - vývojáři:

SELECT games.name, games.genre, devs.name AS developer, devs.country FROM video_games AS games INNER JOIN game_developers AS devs ON games.developer_id = devs.id;

11. Aktualizace dat

Často potřebujeme změnit data v některých řádcích. V SQL se to provádí pomocí příkazu UPDATE. Příkaz UPDATE se skládá z:

  • Tabulka, ve které se nachází náhradní hodnota;
  • Názvy sloupců a jejich nové hodnoty;
  • Řádky vybrané pomocí WHERE, které chceme aktualizovat. Pokud tak neučiníte, všechny řádky v tabulce se změní.

Níže je tabulka tv_series s televizními seriály a jejich hodnocením. Do tabulky se však vloudila malá chybička: ačkoliv série Hra o trůny a je popisován jako komedie, to opravdu není. Pojďme to napravit!

Data tabulky tv_series AKTUALIZACE tv_series SET žánr = "drama" WHERE id = 2;

12. Mazání dat

Odstranění řádku tabulky pomocí SQL je velmi jednoduchý proces. Vše, co musíte udělat, je vybrat tabulku a řádek, které chcete odstranit. Z předchozího příkladu smažeme poslední řádek v tabulce tv_series. To se provádí pomocí instrukce >DELETE.

DELETE FROM tv_series WHERE id = 4

Buďte opatrní při psaní příkazu DELETE a ujistěte se, že je přítomna klauzule WHERE, jinak budou všechny řádky v tabulce odstraněny!

13. Smažte tabulku

Pokud chceme smazat všechny řádky, ale ponechat samotnou tabulku, použijeme příkaz TRUNCATE:

TRUNCATE TABLE název_tabulky;

V případě, že skutečně chceme smazat data i samotnou tabulku, bude se nám hodit příkaz DROP:

DROP TABLE název_tabulky;

Buďte velmi opatrní s těmito příkazy. Nelze je zrušit!/p>

Tímto končí náš SQL tutoriál! Je toho hodně, co jsme neprobrali, ale to, co už víte, by vám mělo stačit k tomu, abyste získali praktické dovednosti pro vaši webovou kariéru.

Dotazy jsou psány bez uvozovek, protože MySQL, MS SQL A PostGree jsou různé.

SQL dotaz: získání zadaných (nezbytných) polí z tabulky

SELECT id, country_title, count_people FROM table_name

Získáme seznam záznamů: VŠECHNY země a jejich populace. Názvy povinných polí jsou označeny oddělenými čárkami.

SELECT * FROM název_tabulky

* označuje všechna pole. To znamená, že budou představení ÚPLNĚ VŠECHNO datová pole.

SQL dotaz: výstup záznamů z tabulky s výjimkou duplikátů

SELECT DISTINCT country_title FROM table_name

Získáme seznam záznamů: země, kde se nacházejí naši uživatelé. Může být mnoho uživatelů z jedné země. V tomto případě je to váš požadavek.

SQL dotaz: zobrazení záznamů z tabulky na základě dané podmínky

SELECT id, country_title, city_title FROM table_name WHERE count_people>100000000

Získáme seznam rekordů: země, kde je počet lidí vyšší než 100 000 000.

SQL dotaz: zobrazení záznamů z tabulky s řazením

SELECT id, název_města FROM název_tabulky ORDER BY název_města

Získáme seznam záznamů: města v abecedním pořadí. Na začátku A, na konci Z.

SELECT id, název_města FROM název_tabulky ORDER BY název_města DESC

Získáme seznam záznamů: města obráceně ( DESC) v pořádku. Na začátku já, na konci A.

SQL dotaz: počítání počtu záznamů

SELECT COUNT(*) FROM název_tabulky

Dostaneme počet (počet) záznamů v tabulce. V tomto případě NEEXISTUJE ŽÁDNÝ seznam záznamů.

SQL dotaz: výstup požadovaného rozsahu záznamů

SELECT * FROM název_tabulky LIMIT 2, 3

Z tabulky získáme 2 (druhý) a 3 (třetí) záznam. Dotaz je užitečný při vytváření navigace na WEB stránkách.

SQL dotazy s podmínkami

Zobrazení záznamů z tabulky na základě dané podmínky pomocí logických operátorů.

SQL dotaz: konstrukce AND

SELECT id, city_title FROM table_name WHERE country="Russia" AND oil=1

Dostáváme seznam rekordů: města z Ruska A mít přístup k ropě. Kdy použít operátora A, pak se musí obě podmínky shodovat.

SQL dotaz: konstrukce NEBO

SELECT id, city_title FROM table_name WHERE country="Russia" OR country="USA"

Získáme seznam záznamů: všechna města z Ruska NEBO USA. Kdy použít operátora NEBO, pak musí odpovídat ALESPOŇ jedna podmínka.

SQL dotaz: AND NOT konstrukce

SELECT id, user_login FROM table_name WHERE country="Russia" AND NOT count_comments<7

Získáme seznam záznamů: všichni uživatelé z Ruska A kdo udělal NE MÉNĚ 7 komentářů.

SQL dotaz: IN konstrukce (B)

SELECT id, user_login FROM table_name WHERE country IN ("Rusko", "Bulharsko", "Čína")

Získáme seznam záznamů: všichni uživatelé, kteří žijí v ( V) (Rusko nebo Bulharsko nebo Čína)

SQL dotaz: NOT IN construction

SELECT id, user_login FROM table_name WHERE country NOT IN ("Rusko","Čína")

Získáme seznam záznamů: všichni uživatelé, kteří nežijí v ( NENÍ IN) (Rusko nebo Čína).

SQL dotaz: konstrukce IS NULL (prázdné nebo NE prázdné hodnoty)

SELECT id, user_login FROM table_name WHERE status IS NULL

Získáme seznam záznamů: všichni uživatelé, kde není definován stav. NULL je samostatný problém, a proto se kontroluje samostatně.

SELECT id, user_login FROM table_name WHERE state IS NOT NULL

Získáme seznam záznamů: všichni uživatelé, kde je definován stav (NOT NULL).

SQL dotaz: konstrukce LIKE

SELECT id, user_login FROM table_name WHERE příjmení LIKE "Ivan%"

Získáme seznam záznamů: uživatelé, jejichž příjmení začíná kombinací „Ivan“. Znak % znamená JAKÝKOLI počet LIBOVOLNÝCH znaků. Chcete-li najít znak %, musíte použít escape „Ivan\%“.

SQL dotaz: BETWEEN konstrukce

SELECT id, user_login FROM table_name WHERE plat MEZI 25000 A 50000

Získáme seznam záznamů: uživatelé, kteří dostávají mzdu od 25 000 do 50 000 včetně.

Logických operátorů je HODNĚ, proto si podrobně prostudujte dokumentaci k SQL serveru.

Složité SQL dotazy

SQL dotaz: kombinace více dotazů

(SELECT id, user_login FROM table_name1) UNION (SELECT id, user_login FROM table_name2)

Získáme seznam záznamů: uživatelé, kteří jsou registrováni v systému, a také uživatelé, kteří jsou registrováni samostatně na fóru. Operátor UNION může kombinovat více dotazů. UNION se chová jako SELECT DISTINCT, to znamená, že zahodí duplicitní hodnoty. Chcete-li získat absolutně všechny záznamy, musíte použít operátor UNION ALL.

SQL dotaz: hodnota pole počítá MAX, MIN, SUM, AVG, COUNT

Zobrazení jedné, maximální hodnoty počítadla v tabulce:

SELECT MAX(počítadlo) FROM název_tabulky

Výstup jedné, minimální hodnoty čítače v tabulce:

SELECT MIN(počítadlo) FROM název_tabulky

Zobrazení součtu všech hodnot čítače v tabulce:

SELECT SUM(počítadlo) FROM název_tabulky

Zobrazení průměrné hodnoty počítadla v tabulce:

SELECT AVG(počítadlo) FROM název_tabulky

Zobrazení počtu počítadel v tabulce:

SELECT COUNT(počítadlo) FROM název_tabulky

Zobrazení počtu metrů v dílně č. 1 v tabulce:

SELECT COUNT(counter) FROM table_name WHERE office="Workshop č. 1"

Toto jsou nejoblíbenější týmy. Tam, kde je to možné, je doporučeno používat pro výpočty SQL dotazy tohoto druhu, protože žádné programovací prostředí se nemůže srovnávat v rychlosti zpracování dat než samotný SQL server při zpracování vlastních dat.

SQL dotaz: seskupování záznamů

SELECT kontinent, SUM(country_area) FROM země GROUP BY kontinentu

Získáme seznam záznamů: s názvem kontinentu a součtem oblastí všech jejich zemí. To znamená, že pokud existuje adresář zemí, kde má každá země zaznamenanou svou oblast, pak pomocí konstrukce GROUP BY můžete zjistit velikost každého kontinentu (na základě seskupení podle kontinentů).

SQL dotaz: pomocí více tabulek přes alias

SELECT o.order_no, o.amount_paid, c.company FROM orders AS o, customer AS with WHERE o.custno=c.custno AND c.city="Tyumen"

Dostáváme seznam záznamů: objednávky od zákazníků, kteří žijí pouze v Ťumenu.

Ve skutečnosti u správně navržené databáze tohoto typu je dotaz nejčastější, proto byl do MySQL zaveden speciální operátor, který pracuje mnohonásobně rychleji než výše psaný kód.

SELECT o.order_no, o.amount_paid, z.company FROM orders AS o LEFT JOIN customer AS z ON (z.custno=o.custno)

Vnořené poddotazy

SELECT * FROM název_tabulky WHERE plat=(SELECT MAX(plat) FROM zaměstnance)

Získáme jeden záznam: informace o uživateli s maximální mzdou.

Pozor! Vnořené poddotazy jsou jednou z největších překážek na serverech SQL. Spolu se svou flexibilitou a výkonem také výrazně zvyšují zátěž serveru. Což vede ke katastrofálnímu zpomalení pro ostatní uživatele. Případy rekurzivních volání ve vnořených dotazech jsou velmi časté. Proto důrazně doporučuji NEPOUŽÍVAT vnořené dotazy, ale rozdělit je na menší. Nebo použijte kombinaci LEFT JOIN popsanou výše. Tento typ požadavku je navíc zvýšeným zdrojem narušení bezpečnosti. Pokud se rozhodnete použít vnořené poddotazy, musíte je navrhnout velmi pečlivě a provést počáteční spuštění na kopiích databází (testovacích databázích).

SQL dotazy mění data

SQL dotaz: INSERT

Instrukce VLOŽIT umožňují vkládat záznamy do tabulky. Jednoduše řečeno, vytvořte řádek s daty v tabulce.

Možnost #1. Instrukce, která se často používá, je:

INSERT INTO table_name (id, user_login) VALUES (1, "ivanov"), (2, "petrov")

Ke stolu" název_tabulky» Budou vloženi 2 (dva) uživatelé najednou.

Možnost #2. Je pohodlnější použít styl:

INSERT název_tabulky SET id=1, user_login="ivanov"; INSERT název_tabulky SET id=2, user_login="petrov";

To má své výhody i nevýhody.

Hlavní nevýhody:

  • Mnoho malých SQL dotazů se bude provádět o něco pomaleji než jeden velký SQL dotaz, ale ostatní dotazy budou řadit do fronty na službu. To znamená, že pokud provedení velkého SQL dotazu trvá 30 minut, pak po celou tuto dobu budou zbývající dotazy kouřit bambus a čekat, až na ně přijde řada.
  • Požadavek se ukazuje být masivnější než předchozí verze.

Hlavní výhody:

  • Během malých SQL dotazů nejsou ostatní SQL dotazy blokovány.
  • Snadnost čtení.
  • Flexibilita. V této možnosti se nemusíte řídit strukturou, ale přidávat pouze nezbytná data.
  • Při vytváření archivů tímto způsobem můžete snadno zkopírovat jeden řádek a spustit jej přes příkazový řádek (konzole), čímž neobnovíte celý ARCHIV.
  • Styl psaní je podobný příkazu UPDATE, což usnadňuje zapamatování.

SQL dotaz: AKTUALIZACE

AKTUALIZACE SET table_name user_login="ivanov", user_surname="Ivanov" WHERE id=1

V tabulce" název_tabulky"v záznamu s číslem id=1 se hodnoty polí user_login a user_surname změní na zadané hodnoty.

SQL dotaz: DELETE

DELETE FROM název_tabulky WHERE id=3

V tabulce název_tabulky bude smazán záznam s ID číslem 3.

  1. Pro zajištění kompatibility s různými programovacími jazyky, jako jsou Delphi, Perl, Python a Ruby, se doporučuje psát všechny názvy polí malými písmeny a v případě potřeby je oddělit vynucenou mezerou „_“.
  2. Kvůli čitelnosti pište příkazy SQL VELKÝMI písmeny. Vždy si pamatujte, že kód po vás mohou přečíst jiní lidé a s největší pravděpodobností vy sami po N množství času.
  3. Pole pojmenujte nejprve podstatným jménem a poté akcí. Například: city_status, user_login, user_name.
  4. Snažte se vyhnout rezervovaným slovům v různých jazycích, která mohou způsobit problémy v SQL, PHP nebo Perl, jako je (název, počet, odkaz). Například: odkaz lze použít v MS SQL, ale je rezervován v MySQL.

Tento materiál je krátkou referencí pro každodenní práci a nepředstírá, že je super mega autoritativní zdroj, který je původním zdrojem SQL dotazů konkrétní databáze.