MySQL Příkaz SELECT s příklady
⚡ Chytré shrnutí
Jedno MySQL Příkaz SELECT načítá řádky z jedné nebo více tabulek a každý níže uvedený příklad běží na ukázkové databázi myflix, od prostého dotazu typu „star“ k výrazům, aliasům sloupců a řetězcovým funkcím.

Co je dotaz SELECT v MySQL?
Dotaz SELECT se používá k načítání dat z MySQL databáze. Databáze ukládají data pro pozdější načtení. Účelem MySQL Příkaz SELECT vrací jeden nebo více řádků z databázových tabulek, které odpovídají zadaným kritériím. Dotaz SELECT lze použít ve skriptovacím jazyce, jako je PHP nebo Ruby, nebo jej lze spustit z příkazového řádku.
Protože příkaz SELECT budete spouštět nejčastěji, vyplatí se seznámit se s jeho syntaxí, než se dotknete vzorových dat.
Syntaxe příkazu SELECT v SQL
SELECT je nejčastěji používaný příkaz SQL a má následující obecnou syntaxi:
SELECT [DISTINCT|ALL] { * | [fieldExpression [AS newName]} FROM tableName [alias] [WHERE condition] [GROUP BY fieldName(s)] [HAVING condition] [ORDER BY fieldName(s)];
ZDE
- SELECT je klíčové slovo SQL, které dává databázi vědět, že chcete načíst data.
- [ODLIŠNÁ | VŠECHNO] jsou volitelná klíčová slova, která dolaďují výsledky vrácené z příkazu SQL SELECT. Pokud není nic zadáno, pak se jako výchozí hodnota předpokládá ALL.
- {*| [fieldExpression [AS newName]} Musí být zadána alespoň jedna část. „*“ vybere všechna pole ze zadaného názvu tabulky; funkce fieldExpression provádí výpočty se zadanými poli, například sčítání čísel nebo sloučení dvou řetězcových polí do jednoho.
- Z Argument tableName je povinný a musí obsahovat alespoň jednu tabulku. Více tabulek musí být odděleno čárkami nebo spojeno klíčovým slovem JOIN.
- KDE Podmínka je volitelná. Určuje kritéria ve výsledné sadě vrácené z dotazu.
- SKUPINA VYTVOŘENÁ se používá k sestavení záznamů, které mají stejné hodnoty polí.
- HAVING Podmínka se používá k určení kritérií při práci s klíčovým slovem GROUP BY.
- SEŘADIT PODLE se používá k určení pořadí řazení sady výsledků.
*
Symbol hvězdičky vybere všechny sloupce v tabulce. Jednoduchý příkaz SELECT vypadá takto:
SELECT * FROM `members`;
Výše uvedený příkaz vybere všechna pole z tabulky members. Středník je ukončovací znak příkazu. Není povinný, ale ukončení příkazů tímto způsobem je považováno za dobrý postup.
SELECT DISTINCT a LIMIT v MySQL
Dvě volitelná klíčová slova v syntaxi si zaslouží bližší pohled, protože začátečníci se s nimi setkávají, jakmile tabulka roste.
DISTINCT odstraní duplicitní řádky z výsledné sady. Tabulka filmy obsahuje několik filmů vydaných v roce 2007, takže prostý dotaz opakuje daný rok. DISTINCT vrací každou hodnotu jednou.
SELECT DISTINCT `year_released` FROM `movies`;
LIMIT omezuje počet vrácených řádků, což chrání klienta před dotazem, který by jinak načetl miliony záznamů.
SELECT * FROM `movies` LIMIT 5;
| Klíčové slovo | Co to dělá | Kdy ji použít |
|---|---|---|
| VŠE (výchozí) | Vrátí všechny odpovídající řádky, včetně duplikátů | Počítání nebo výpis nezpracovaných záznamů |
| DISTINCT | Sbalí duplicitní řádky do jednoho | Vytvoření seznamu jedinečných hodnot |
| LIMIT | Vrací pouze prvních N řádků | Náhled dat nebo stránkování výsledků |
Po ustálení syntaxe ukázková databáze tyto klauzule oživí.
Praktické příklady příkazu SELECT
Klikněte pro stažení databáze myflix použitá pro praktické příklady.
Můžete se naučit, jak importovat soubor .sql do MySQL Workbench.
Příklady jsou provedeny na následujících dvou tabulkách.
Tabulka 1: Členové tabulka
| členské číslo | celá_jména | rod | datum narození | fyzická adresa | poštovní_ adresa | číslo_kontaktu | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jonesová | Žena | 21-07-1980 | První ulice pozemek č. 4 | Soukromá taška | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jonesová | Žena | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Muž | 12-07-1989 | 3. ulice 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williamsová | Žena | 14-02-1984 | 2. ulice 23 | NULL | NULL | NULL |
Tabulka 2: filmy tabulka
| movie_id | titul | ředitel | rok_vydáno | category_id |
|---|---|---|---|---|
| 1 | Piráti z Karibiku 4 | Rob Marshall | 2011 | 1 |
| 2 | Zapomínání na Sarah Marshal | Nicholas Stoller | 2008 | 2 |
| 3 | X-Men | NULL | 2008 | NULL |
| 4 | Code Jméno Černá | Edgar Jimz | 2010 | NULL |
| 5 | Tatínkovy holčičky | NULL | 2007 | 8 |
| 6 | andělé a démoni | NULL | 2007 | 6 |
| 7 | Davinci Code | NULL | 2007 | 6 |
| 9 | Honey mooneRS | John Schultz | 2005 | 8 |
| 16 | 67% vinen | NULL | 2012 | NULL |
Získání seznamu členů
Předpokládejme, že chceme seznam všech registrovaných členů knihovny z naší databáze. K tomu bychom použili níže uvedený skript.
SELECT * FROM `members`;
Spuštění skriptu v MySQL Workbench produkuje následující výsledky.
| členské číslo | celá_jména | rod | datum narození | fyzická adresa | poštovní_ adresa | číslo_kontaktu | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jonesová | Žena | 21-07-1980 | První ulice pozemek č. 4 | Soukromá taška | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jonesová | Žena | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Muž | 12-07-1989 | 3. ulice 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williamsová | Žena | 14-02-1984 | 2. ulice 23 | NULL | NULL | NULL |
Dotaz vrátil všechny řádky a sloupce z tabulky members.
Výběr konkrétních sloupců
Řekněme, že nás zajímají pouze pole full_name (celá jména), gender (pohlaví), physical_address (fyzická adresa) a email (e-mail). Toho dosáhne následující skript.
SELECT `full_names`,`gender`,`physical_address`, `email` FROM `members`;
Spuštění skriptu v MySQL Workbench produkuje následující výsledky.
| celá_jména | rod | fyzická adresa | |
|---|---|---|---|
| Janet Jonesová | Žena | První ulice pozemek č. 4 | janetjones@yagoo.cm |
| Janet Smith Jonesová | Žena | Melrose 123 | jj@fstreet.com |
| Robert Phil | Muž | 3. ulice 34 | rm@tstreet.com |
| Gloria Williamsová | Žena | 2. ulice 23 | NULL |
Získání seznamu filmů pomocí výrazů
Výrazy lze také použít v příkazech SELECT. Řekněme, že chceme seznam filmů s názvem a jménem režiséra v jednom poli, režisérem v závorkách a rokem vydání filmu. Následující skript to udělá.
SELECT Concat(`title`, ' (', `director`, ')') , `year_released` FROM `movies`;
ZDE
- Concat() MySQL Funkce spojuje hodnoty sloupců dohromady.
- Řádek „Concat(`title`, ' (', `director`, ')')“ načte název, přidá úvodní závorku následovanou jménem režiséra a poté uzavírací závorku.
- Části řetězců jsou uvnitř funkce Concat() odděleny čárkami.
Spuštění skriptu v MySQL Workbench vygeneruje následující sadu výsledků.
| Concat(`title`, ' (', `director`, ')') | rok_vydáno |
|---|---|
| Piráti z Karibiku 4 (Rob Marshall) | 2011 |
| Zapomenutí na Sarah Marshal (Nicholas Stoller) | 2008 |
| NULL | 2008 |
| Code Jméno Black (Edgar Jimz) | 2010 |
| NULL | 2007 |
| NULL | 2007 |
| NULL | 2007 |
| Honey mooners (John Schultz) | 2005 |
| NULL | 2012 |
Poznámka: Funkce Concat() vrací hodnotu NULL, pokud je jakýkoli argument NULL, což je důvod, proč filmy bez režiséra výše zobrazují hodnotu NULL.
Názvy polí aliasů
Výše uvedený příklad vrátil jako název pole kód zřetězení. Chcete-li ve výsledné sadě použít popisnější název pole, použijte alias sloupce. Základní syntaxe je následující.
SELECT `column_name|value|expression` [AS] `alias_name`;
ZDE
- „SELECT `název_sloupce|hodnota|výraz`“ je běžný příkaz SELECT, který může být názvem sloupce, hodnotou nebo výrazem.
- "[TAK JAKO]" je volitelné klíčové slovo před aliasem.
- "`alias_name`" je alias, který je vrácen ve výsledné sadě jako název pole.
Stejný dotaz s výstižnějším názvem sloupce:
SELECT Concat(`title`, ' (', `director`, ')') AS `Concat`, `year_released` FROM `movies`;
Dostaneme následující výsledek.
| Concat | rok_vydáno |
|---|---|
| Piráti z Karibiku 4 (Rob Marshall) | 2011 |
| Zapomenutí na Sarah Marshal (Nicholas Stoller) | 2008 |
| NULL | 2008 |
| Code Jméno Black (Edgar Jimz) | 2010 |
| NULL | 2007 |
| NULL | 2007 |
| NULL | 2007 |
| Honey mooners (John Schultz) | 2005 |
| NULL | 2012 |
Získání seznamu členů s rokem narození
Předpokládejme, že chceme seznam všech členů s číslem členství, celými jmény a rokem narození. Můžeme použít řetězcovou funkci LEFT k expozicitracrok narození z pole s datem narození.
SELECT `membership_number`,`full_names`,LEFT(`date_of_birth`,4) AS `year_of_birth` FROM members;
ZDE
- "LEFT(`datum_narozeni`,4)" ο Funkce LEFT řetězce přijímá datum narození jako parametr a vrací pouze 4 znaky zleva.
- "JAKO "rok_narozeni" je název aliasu sloupce se vrátily do našich výsledků. Klíčové slovo AS je nepovinné; můžete to vynechat a dotaz bude stále fungovat.
Spuštění dotazu v MySQL Workbench s myflixdb nám dává výsledky uvedené níže.
| členské číslo | celá_jména | rok narození |
|---|---|---|
| 1 | Janet Jonesová | 1980 |
| 2 | Janet Smith Jonesová | 1980 |
| 3 | Robert Phil | 1989 |
| 4 | Gloria Williamsová | 1984 |
Ručně psané dotazy jsou pouze jednou z cest k výsledné sadě. Workbench vám také může příkaz sestavit.
Použití SQL MySQL Workbench
Nyní budeme používat MySQL Workbench pro generování skriptu, který zobrazí všechny názvy polí z naší tabulky kategorií.
1. Klikněte pravým tlačítkem myši na tabulku Kategorie. Klikněte na „Vybrat řádky – Omezit na 1000“.
2. MySQL Workbench automaticky vytvoří SQL dotaz a vloží ho do editoru.
3. Výsledky dotazu se zobrazují v mřížce pod editorem.
Jak je vidět na snímku obrazovky, příkaz SELECT jsme nenapsali sami. MySQL Workbench to pro nás vygeneroval.
Proč používat příkaz SELECT SQL, když máme MySQL Pracovní stůl?
Možná vás zajímá, proč byste se měli učit příkaz SQL SELECT, když nástroj jako MySQL Workbench vrací stejné výsledky bez znalosti jazyka SQL. Tato zkratka je možná, ale učení se příkazu SELECT vám dává víc flexibilita a řízení nad tvým SQL příkazy SELECT.
MySQL Pracovní stůl spadá do kategorie „Dotaz podle příkladu„(QBE) nástroje.“ Jeho účelem je rychlejší generování SQL příkazů a zvýšení produktivity uživatelů.
Naučení se příkazu SELECT v SQL vám umožní vytvářet složité dotazy které nelze snadno vygenerovat pomocí utilit Query by Example, jako například MySQL Pracovní stůl.
Pro zlepšení produktivity můžete vygenerujte kód v MySQL Workbench, pak přizpůsobit to, aby splnit vaše požadavkyTo je možné pouze tehdy, když pochopíte, jak fungují příkazy SQL.



