Dotazy MySQL jsou obvykle zapsány jednou a poté zabaleny do funkcí třídy, aby se minimalizovalo opakování kódu. Tento článek uvádí 10 nejčastěji používaných dotazů v MySQL.
Dotaz je v podstatě požadavek na informace, které mají být načteny z databázové tabulky nebo kombinace tabulek. Existuje mnoho dotazovacích jazyků, které lze napsat pro provádění řady jednoduchých až složitých dotazů. Dotazy budou filtrovat určitá kritéria na základě konkrétních dat, která mají být nalezena. Může také automatizovat úlohy správy dat a zapojit se do výpočtů. Tato příručka popisuje 10 nejčastějších dotazů MySQL.
Využijme tyto ukázkové databáze, které nám pomohou dále porozumět tomu, jak jednotlivé dotazy fungují.
ID zaměstnance | Jméno | Název |
---|---|---|
1002 | Webster W. | Ředitel |
1003 | Lizzy S. | Správce |
1004 | Oliver T. | Softwarový inženýr |
ID zaměstnance | Oddělení | Věk |
---|---|---|
1002 | HR | 36 |
1003 | Prodej | 21 |
1004 | IT | 39 |
VYBRAT vše
K načtení a odeslání všech dat, která jsou z databáze, se používá jednoduchý dotaz SELECT. Jeho syntaxi lze zapsat jako takovou;
Kód:
SELECT * FROM Employees;
Výsledek:
1002 Webster W. Executive 1003 Lizzy S. Manager 1004 Oliver T. Software Engineer
Chcete-li vybrat všechny dostupné sloupce v tabulce, musíte použít „*“ k označení, že potřebujete vrátit všechny možné informace. Za druhé zadejte klíčové slovo FROM, abyste získali data z databázové tabulky. Nakonec vždy nezapomeňte ukončit své prohlášení středníkem „;“ správně dokončit požadavek.
VYBRAT sloupec
Chcete-li získat data z konkrétních sloupců a ne ze všech, stačí pouze uvést název pole namísto použití hvězdičky (*).
Kód:
SELECT Title FROM Employees;
Výsledek:
Title Executive Manager Software Engineer
Při výběru více sloupců z databáze by měly být odděleny čárkou. Asi tak;
SELECT Title, Name FROM Employees;
Klauzule WHERE
Při použití klauzule WHERE v dotazu SELECT budou datové záznamy filtrovány a poté extrahovány záznamy, které odpovídají podmínkám jako výsledek.
Kód:
SELECT * FROM Employees WHERE EmployeeID = 1004 ;
Výsledky:
1004 Oliver T. Software Engineer
Klauzule WHERE může mít více než jednu podmínku, kterou lze oddělit pomocí klíčového slova AND.
VYTVOŘIT tabulku
Tento dotaz lze použít ke generování nové tabulky s preferovaným výběrem sloupců. Při přidávání názvů sloupců nezapomeňte zadat jejich datový typ.
Kód:
CREATE TABLE EmployeeInfo ( EmployeeId INT, Department VARCHAR(25), Age NUMBER );
Očekávané výsledky tabulky:
EmployeeID | Department | Department |
NULL | NULL | NULL |
Jakmile spustíte příkaz CREATE TABLE a naplníte jej názvy sloupců, výše uvedený dotaz vytvoří v databázi tabulku „EmployeeInfo“. V podstatě každý sloupec vrátí NULL, protože jsme nevložili žádnou konkrétní hodnotu. To nás vede k našemu dalšímu dotazu INSERT INTO.
INSERT INTO Query
Toto je nejběžnější dotaz pro vložení hodnot do jednoho nebo více řádků nových záznamů v tabulce. Jsme schopni naplnit tabulku EmployeeInfo některými ukázkovými daty;
Kód:
INSERT INTO EmployeeInfo (EmployeeID,Department,Age) VALUES (1002, HR , 46), (1003, Finance , 28), (1004, IT , 39);
Výsledky tabulky:
Informace o zaměstnanci
EmployeeID | Department | Age |
1002 | HR | 46 |
1003 | Finance | 28 |
1004 | IT | 39 |
Při psaní dotazu INSERT INTO musí být příkaz VALUES součástí celého příkazu.
AKTUALIZOVAT dotaz
Toto klíčové slovo se používá ke změně jednoho nebo více existujících sloupců v tabulce. Použití tohoto dotazu aktualizuje záznamy tabulky novými daty na základě určité podmínky.
Informace o zaměstnanci
EmployeeID | Department | Age |
1002 | HR | 36 |
1003 | Sales | 21 |
1004 | IT | 39 |
Kód:
UPDATE EmployeeInfo SET Age = 22 WHERE EmployeeID = 1003;
Výsledky tabulky:
Informace o zaměstnanci
EmployeeID | Department | Age |
1002 | HR | 36 |
1003 | Sales | 22 |
1004 | IT | 39 |
Po příkazu UPDATE použijte klíčové slovo SET, abyste vždy určili, které sloupce se rozhodnete upravit, a poté přesně uveďte, KDE potřebujete aktualizovaná data použít.
SMAZAT Z dotazu
Chcete-li odstranit záznamy z tabulky na základě jedné nebo více podmínek, budete muset použít příkaz DELETE FROM. Při použití podmínek omezuje počet řádků ovlivněných dotazem.
Kód:
DELETE FROM Employees WHERE Name = ‘Lizzy’;
Výsledky tabulky:
Zaměstnanci
EmployeeID | Name | Title |
1002 | Webster W. | Executive |
1004 | Oliver T. | Software Engineer |
Jak již bylo uvedeno v článku; pomocí podmínky WHERE přesně určíte, kde požadujete data odfiltrovat a provést. Tento dotaz má odstranit každý záznam z tabulky Zaměstnanci, který odpovídá jménu „Lizzy“.
Pomocí klauzule GROUP BY, HAVING
Klauzule GROUP BY se většinou vždy používá s agregačními funkcemi. Pomocí tohoto klíčového slova seskupíte sadu výsledků podle jednoho nebo více sloupců.
Klíčové slovo HAVING se používá k filtrování této sady výsledků. V ideálním případě byste si mysleli, že místo toho bude zavedena klauzule WHERE, avšak klauzule HAVING zavádí podmínku agregací.
Informace o zaměstnanci
EmployeeID | Department | Age |
1002 | HR | 36 |
1003 | Sales | 21 |
1004 | IT | 39 |
Kód:
SELECT COUNT(Age), EmployeeID FROM EmployeeInfo GROUP BY EmployeeID HAVING COUNT(Age) > 21;
Výsledky:
COUNT(Age) EmployeeID 39 1004 36 1002
Agregační funkce (SUM, AVG &COUNT)
Existují tři extrémně běžné agregační funkce, které umožňují interpretovat data z tabulky nebo spouštět výpočty.
- POČET:Vrátí počet řádků, které odpovídají zadanému sloupci.
- AVG: vrací průměrnou hodnotu sloupce
- SUM:Vrátí součet všech hodnot ve vybraném sloupci.
Informace o zaměstnanci
ID zaměstnance | Oddělení | Věk |
1002 | HR | 36 |
1003 | Prodej | 21 |
1004 | IT | 39 |
Kód pro COUNT:
SELECT COUNT(Department) FROM EmployeeInfo;
Výsledky:
COUNT(Department): 3
Kód pro AVG:
SELECT AVG(Age) FROM EmployeeInfo;
Výsledky:
AVG(Age): 32
Kód pro SUM
SELECT SUM(Age) FROM EmployeeInfo;
Výsledky:
SUM(Age): 96
PŘIPOJÍ SE
Spojení se používají ke spojení řádků z alespoň dvou tabulek na základě souvisejícího sloupce mezi tabulkami. Nejběžnější cvičná spojení jsou INNER, FULL a LEFT.
- INNER Join – kombinuje řádky z různých tabulek, pokud je podmínka spojení pravdivá.
- FULL Join – vrátí všechny řádky, pokud je nalezena shoda v levém nebo pravém záznamu tabulky.
- LEFT Join – načte všechny řádky z levé tabulky a odpovídající záznamy z pravé tabulky.
Zaměstnanci – Tabulka č. 1 (vlevo)
ID zaměstnance | Jméno | Název |
1002 | Webster W. | Výkonný pracovník |
1003 | Lizzy S. | Manažer |
1004 | Oliver T. | Softwarový inženýr |
EmployeeInfo – Tabulka č. 2 (vpravo)
ID zaměstnance | Oddělení | Věk |
1002 | HR | 36 |
1003 | Prodej | 21 |
1004 | IT | 39 |
Kód INNER JOIN:
SELECT Employees.Title, EmployeeInfo.Department FROM Employees INNER JOIN EmployeeInfo ON Employees.EmployeeID = Employees.EmployeeID;
Výsledky:
Title Department Executive HR Manager Sales Software Engineer IT
FULL JOIN Code:
SELECT * FROM Employees FULL JOIN EmployeeInfo ON Employees.EmployeeID = Employees.EmployeeID;
Výsledky:
Vezme všechny řádky a sloupce z obou tabulek, včetně duplikátů, a spojí je do jedné celé tabulky.
LEFT JOIN Code:
SELECT Employees.Name, EmployeeInfo.Age FROM Employees LEFT JOIN EmployeeInfo ON Employees.EmployeeID = Employees.EmployeeID;
Výsledky:
Name Age Webster W. 36 Lizzy S. 21 Oliver T. 39
Sloupec „ID zaměstnance“ v tabulce „Zaměstnanec“ odkazuje na „ID zaměstnance“ v tabulce „Info o zaměstnanci“ a v podstatě uvádí, že sloupec ID zaměstnance je vztah mezi oběma tabulkami. Spojení se mohou stát ošemetnou, ale zároveň velmi užitečnou při třídění ve větší databázi.
Uživatel a databáze jsou schopni úspěšně vyměňovat informace tím, že v podstatě mluví stejným jazykem. Výše uvedené dotazy jsou nejčastěji používané začátečníky i odborníky. Psaní MySQL dotazů je považováno za nejčastější funkci v oblasti správy databází.
Tento článek byl zkontrolován a aktualizován v dubnu 2022 Kelsey Perkins.