13 Nejdůležitější příkazy SQL, které by měl vědět každý programátor

13 Nejdůležitější příkazy SQL, které by měl vědět každý programátor

Databáze pohání moderní web. Každý velký nebo dynamický web nějakým způsobem využívá databázi a v kombinaci s Structured Query Language (SQL) „Možnosti manipulace s daty jsou opravdu nekonečné. Pokud již znáte SQL, nezapomeňte si vyzkoušet tyto programovací dovednosti, které by měli znát všichni vývojáři webových stránek.





Dnes vám ukážu některé z nich základní příkazy SQL musíte to vědět jako programátor.





Existuje mnoho jmen pro data vrácená z databázové tabulky. Data se běžně označují jako Řádky , Evidence , nebo N -tice . V tomto článku budu tyto termíny zaměnitelně používat.





Předmluva

Všechny dnešní příklady budou založeny na čtyřech fiktivních tabulkách. The zákazník tabulka obsahuje jméno a věk zákazníků:

The výšek tabulka obsahuje jméno a výšku jakékoli osoby:



The personál tabulka obsahuje jméno a věk zaměstnanců - přesně stejné jako tabulka zákazníků:

Finálový stůl zavolal lidé obsahuje jméno a věk lidí, stejně jako tabulky zákazníků a zaměstnanců:





1. Vyberte

The vybrat příkaz je nejjednodušší a je důležité mu porozumět, protože podporuje téměř všechny ostatní příkazy. Je doporučeno psát vyhrazená slova SQL velkými písmeny, protože usnadňuje čtení a porozumění příkazu.

Jak naznačuje jeho název, select je zvyklý na vybrat data z databáze. Zde je nejjednodušší použití:





SELECT * FROM table;

Má to dvě části. První část ( VYBRAT * ) určuje, které sloupce chcete vybrat. Hvězdička označuje, že chcete vybrat všechny sloupce v tabulce. Druhá část ( OD stolu ) řekne vašemu databázovému stroji, odkud chcete tato data načíst. Nahraďte 'tabulka' názvem vaší databázové tabulky.

Tento výběr je známý jako „vybrat hvězdu“. Použití hvězdičky je dobrý způsob, jak zjistit, jaká data jsou v tabulce, ale nedoporučuji je používat pro žádný produkční kód. Při použití výběrové hvězdy je na databázovém stroji, aby vám předložil požadovaná data. Nemáte žádnou kontrolu nad pořadí, v jakém jsou data vrácena, takže pokud někdo do tabulky přidá nový sloupec, může se stát, že vaše proměnné ve vašem programovacím jazyce již nebudou představovat správná data. Naštěstí existuje řešení.

Sloupce, které chcete načíst, můžete explicitně uvést takto:

SELECT age, name FROM people;

Tento dotaz načte sloupce „věk“ a „název“ z tabulky „lidé“. Být tak explicitní může být trochu únavné, pokud máte hodně dat, ale tím se v budoucnu sníží problémy a vaše budoucí programátory budou srozumitelnější pro váš SQL.

Pokud chcete vybrat další kus dat, ale není uložen v žádné z vašich tabulek, můžete to provést takto:

SELECT age, '1234' FROM people;

Jakýkoli řetězec v jednoduchých uvozovkách bude vrácen místo shody názvu sloupce.

2. Kde

Příkaz select je vynikající pro načítání dat, ale co když chcete výsledky filtrovat trochu víc? A co získávání pouze lidí, kteří mají modré oči? A co lidé narození v lednu, kteří pracují jako mechanici? Tady je kde přijde příkaz. To vám umožní použít podmínky na výběr a jednoduše jej připojíte na konec příkazu:

SELECT age, name FROM people WHERE age > 10;

Tento dotaz je nyní omezen na lidi starší než 10 let. Můžete kombinovat více podmínek pomocí A operátor:

SELECT age, name FROM people WHERE age > 10 AND age <20;

The A příkaz funguje stejně jako v angličtině: na příkaz aplikuje další podmínku. V tomto případě by vrácenými daty byly jakékoli záznamy s věkem mezi 10 a 20. Protože neexistují žádné odpovídající výsledky, nebudou vrácena žádná data.

rozdíl mezi ubuntu desktopem a serverem

Další příkaz, který lze použít ve spojení s tím, je NEBO . Zde je příklad:

SELECT age, name FROM people WHERE age > 10 OR name = 'Joe';

Tento dotaz vrací záznamy, kde je věk vyšší než 10 nebo se jméno rovná „Joe“. Všimli jste si, že existuje pouze jeden znak rovnosti? Většina programovacích jazyků používá ke kontrole ekvivalence double equals (==). To není nutné pro drtivou většinu databázových strojů (ale může to být velmi pro každé prostředí, proto nejprve zkontrolujte).

3. Objednávka

The objednat příkaz slouží k třídění vrácených výsledků. Je to další snadné použití. Jednoduše jej připojte na konec prohlášení:

SELECT name, age FROM people ORDER BY age DESC;

Musíte zadat sloupec a pořadí, které může být ASC pro vzestupně nebo DESC pro sestup. Objednávat můžete ve více sloupcích takto:

SELECT name, age FROM people ORDER BY name ASC, age DESC

SEŘADIT PODLE je možná nejužitečnější v kombinaci s jinými příkazy. Ne všechny dotazy budou vracet data logickým nebo uspořádaným způsobem - tento příkaz vám to umožňuje změnit.

4. Připojte se

The připojit příkaz slouží k připojit související data uložená v jedné nebo více tabulkách. Vy připojit druhou tabulku do první tabulky a určete, jak jsou data připojena. Zde je základní příklad:

životnost baterie nezobrazuje Windows 10
SELECT age, name, height FROM people LEFT JOIN heights USING (name);

Děje se tu pár věcí. Musíte začít syntaxí 'LEFT JOIN', která určuje, že se chcete připojit k tabulce pomocí spojení typu left. Dále určete tabulku, ke které se chcete připojit (výšky). The USING (jméno) syntax uvádí, že sloupec 'name' lze nalézt v obou tabulkách a že by měl být použit jako klíč ke spojení tabulek dohromady.

Pokud mají vaše sloupce v každé tabulce různé názvy, nedělejte si starosti. Místo „POUŽITÍ“ můžete použít „ZAPNUTO“:

SELECT age, name, height FROM people LEFT JOIN heights ON (namea = nameb);

Příkaz on výslovně uvádí, které sloupce je třeba zapnout. Existuje mnoho typů spojení a každému by trvalo dlouho se rozepisovat, takže zde je rychlý souhrn jejich použití:

  • (VNITŘNÍ SPOJENÍ - Vrací řádky se shodou v obou tabulkách.
  • VLEVO (VNĚJŠÍ) PŘIPOJTE SE - Vrátí všechny řádky z levé tabulky, všechny shody z pravé tabulky. Pokud neexistují žádné shody, záznamy levé tabulky jsou stále vráceny.
  • PRAVÉ (VNĚJŠÍ) PŘIPOJTE SE - Toto je opak levého spojení: všechny řádky z pravé tabulky jsou vráceny spolu se všemi shodami v levé tabulce.
  • PLNÉ (VNĚJŠÍ) PŘIPOJENÍ - Vrátí všechny záznamy se shodou v kterékoli tabulce.

Syntaxe „VNITŘNÍ“ nebo „VNĚJŠÍ“ je volitelná. Může to věci snáze pochopit, ale po většinu času to nemusíte specifikovat.

5. Aliasy

Nyní znáte základy, podívejme se na alias příkaz. Slouží k dočasnému přejmenování tabulky - spíše přezdívka než cokoli jiného, ​​protože tento nový název existuje pouze v rámci jednotlivé transakce, kterou provádíte. Postup použití:

SELECT A.age FROM people A;

Můžete použít libovolné platné jméno, které se vám líbí, ale já rád používám písmena abecedy. Před každým názvem sloupce je předpona aliasu. Tento alias je tabulce přiřazen bezprostředně po její deklaraci. To je úplně stejné jako toto:

SELECT people.age FROM people;

Spíše než psát dlouhý název tabulky můžete napsat jednoduché a snadno zapamatovatelné písmeno - ale jaký to má smysl? Pokud vybíráte z více než jedné tabulky, snadno se zamotáte, které sloupce do které tabulky patří. Pokud obě tabulky obsahují sloupce se stejným názvem, může se stát, že se databázový dotaz ani nespustí, aniž by výslovně odkazoval na název tabulky nebo alias. Zde je příklad se dvěma tabulkami:

SELECT staff.age, staff.name, customers.age, customers.name FROM staff, customers;

A tady je stejný dotaz s aliasy:

SELECT A.age, A.name, B.age, B.name FROM staff A, customers B;

Tabulka zaměstnanců má alias 'A' a tabulka zákazníků 'alias' B '. Aliasingové tabulky opravdu pomáhají usnadnit pochopení kódu a snižují množství psaní, které musíte udělat.

Sloupec můžete také přejmenovat pomocí aliasu pomocí příkazu 'AS':

SELECT age AS person_age FROM people;

Po spuštění tohoto dotazu bude sloupec nyní nazýván „person_age“ místo „age“.

6. Unie

svaz je skvělý příkaz. Umožňuje vám připojit řádky k sobě navzájem. Na rozdíl od spojení, která připojují odpovídající sloupce, může sjednocení spojovat nesouvisející řádky za předpokladu, že mají stejný počet a název sloupců. Postup použití:

SELECT age, name FROM customers
UNION
SELECT age, name FROM staff;

Spojení můžete považovat za způsob kombinace výsledků dvou dotazů. Sjednocení vrátí výsledky pouze tam, kde je mezi dvěma dotazy jedinečný řádek. K vrácení všech dat bez ohledu na duplikáty můžete použít syntaxi 'UNION ALL':

SELECT age, name FROM customers
UNION ALL
SELECT age, name FROM staff;

Všimněte si, jak se mění pořadí řádků? Union funguje nejefektivnějším způsobem, takže vrácená data se mohou lišit v pořadí.

Možným případem použití pro sjednocení je mezisoučet: můžete spojit dotaz součtu na dotaz jednotlivých součtů pro konkrétní scénář.

7. Vložte

Nyní víte vše o načítání dat z databáze, ale co o jejich vložení? Tady je vložit přijde příkaz. Zde je příklad:

INSERT INTO people(name, age) VALUES('Joe', 102);

Musíte zadat název tabulky (lidé) a sloupce, které chcete použít (jméno a věk). K zadání hodnot, které je třeba vložit, se poté použije syntaxe 'HODNOTY'. Ty musí být ve stejném pořadí jako sloupce, které byly dříve specifikovány.

Nelze určit klauzuli where pro vložky a musíte zajistit, abyste dodržovali všechna nezbytná omezení tabulky, která jsou přítomna.

8. Aktualizace

Po vložení některých dat je jen přirozené, že je potřeba změnit konkrétní řádky. Tady je Aktualizace syntaxe příkazu:

UPDATE people SET name = 'Joe', age = 101;

Musíte zadat tabulku, kterou chcete změnit, a poté pomocí syntaxe 'SET' zadat sloupce a jejich nové hodnoty. Tento příklad je dobrý, ale bude aktualizovat každý záznam - něco, co není vždy žádoucí!

Abychom byli konkrétnější, můžete použít klauzule „WHERE“ stejně jako při výběru:

UPDATE people SET name = 'Joe', age = 101 WHERE name = 'James';

Můžete dokonce zadat více podmínek pomocí 'A' a 'NEBO':

UPDATE people SET name = 'Joe', age = 101 WHERE (name = 'James' AND age = 100) OR name = 'Ryan';

Všimněte si, jak jsou závorky použity k omezení podmínek.

jak používat flash disk

9. Upsert

Jejda je podivně znějící slovo, ale je to neuvěřitelně užitečný příkaz. Řekněme, že máte v tabulce omezení, a zadali jste, že chcete pouze záznamy s jedinečnými názvy - například nechcete ukládat dva řádky se stejným názvem. Pokud byste se pokusili vložit více hodnot „Joe“, váš databázový stroj by vyvolal chybu a odmítl to udělat (zcela správně). UPSERT vám umožňuje aktualizovat záznam, pokud již existuje. To je neuvěřitelně užitečné! Bez tohoto příkazu byste museli napsat spoustu logiky, abyste nejprve zkontrolovali, zda záznam existuje, vložili jej, pokud neexistují, jinak získali správný primární klíč a poté aktualizovali.

Upserts jsou bohužel v různých databázových strojích implementovány odlišně. PostgreSQL tuto schopnost získal teprve nedávno, zatímco MySQL ji má už nějakou dobu. Zde je syntaxe MySQL pro referenci:

INSERT INTO people(name, age)
VALUES('Joe', 101)
ON DUPLICATE KEY UPDATE age = 101;

Všimněte si, že se v zásadě jedná o aktualizaci a příkaz vložení, který lze shrnout jako „aktualizace, pokud se vložení nezdařilo“.

10. Odstranit

Vymazat slouží k úplnému odstranění záznamů - pokud je zneužíván, může být docela škodlivý! Základní syntaxe se velmi snadno používá:

DELETE FROM people;

Stejně jako většina ostatních příkazů se i toto odstraní všechno ! Musíte použít kde omezit na trochu rozumnější počet řádků - ideálně jeden:

DELETE FROM people WHERE name = 'Joe';

Pokud vyvíjíte systém, je často rozumné implementovat „soft delete“. Nikdy ve skutečnosti nespouštíte příkaz delete, spíše vytvoříte odstraněný sloupec a poté tento sloupec zaškrtnete ve svých výběrech - může se vyhnout spoustě potenciálních rozpaků, pokud dokážete rychle a snadno načíst údajně smazané záznamy. Toto však nenahrazuje správné zálohy.

11. Vytvořit tabulku

The vytvořit tabulku příkaz slouží k vytváření tabulek. Je to další velmi jednoduché:

CREATE TABLE people (
name TEXT,
age, INTEGER,
PRIMARY KEY(name)
);

Všimněte si, jak jsou názvy sloupců a omezení v závorkách a sloupcům je přiřazen příslušný datový typ. Je zadán primární klíč, jak je vyžadováno v každém dobrém návrhu databáze.

12. Změnit tabulku

The změnit stůl příkaz slouží k úpravě struktury tabulky. Toto je mírně omezené, protože vaše databáze vám nedovolí změnit tabulku, pokud by existující data způsobila konflikt - například změnu řetězce na celé číslo. V těchto případech nejprve opravte data a poté upravte tabulku. Zde je příklad:

ALTER TABLE people ADD height integer;

Tento příklad přidá do tabulky lidí sloupec s názvem 'výška' celočíselného typu. Ve skutečnosti neexistuje žádný limit na to, co můžete změnit.

13. Drop Table

Poslední příkaz je odkládací stůl . Berte to jako smazání, ale místo vymazání jednoho záznamu odstraní každý záznam společně s tabulkou! Postup použití:

DROP TABLE people;

Je to docela drastický příkaz a není důvod, proč by měl být programován do vašeho systému. Mělo by být prováděno pouze ručně v naprosté většině případů a může to být velmi destruktivní.

To je pro dnešek vše. Doufám, že jste se naučili pár užitečných triků! Mohl by ses naučit, jak na to vytvořit web , a poté použijte své nově nalezené dovednosti, aby byla dynamická - jen se ujistěte, že neděláte tyto chyby nebo ji necháte zranitelnou vůči injekci SQL. Pokud si nejste jisti, že se potřebujete naučit SQL, uvažovali jste o generátoru statických webů?

Proč nezanecháte komentář níže se svými oblíbenými tipy a triky pro SQL?

Kredity obrázku: HYS_NP/Shutterstock

Podíl Podíl tweet E-mailem Vyplatí se upgradovat na Windows 11?

Windows byl přepracován. Ale stačí to k tomu, abyste vás přesvědčili o přechodu z Windows 10 na Windows 11?

Číst dále
Související témata
  • Programování
  • Programování
  • SQL
O autorovi Joe Coburn(136 publikovaných článků)

Joe je absolventem informatiky na University of Lincoln, UK. Je profesionálním vývojářem softwaru, a když zrovna neletí drony nebo nepíše hudbu, často ho lze zastihnout při fotografování nebo produkci videí.

Více od Joe Coburn

Přihlaste se k odběru našeho zpravodaje

Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné elektronické knihy a exkluzivní nabídky!

Kliknutím sem se přihlásíte k odběru