Co je dotaz SELECT v MySQL?
SELECT QUERY se používá k načtení dat z databáze MySQL. Databáze ukládají data pro pozdější načítání. Účelem MySQL Select je vrátit z databázových tabulek jeden nebo více řádků, které odpovídají daným kritériím. Vybraný dotaz lze použít ve skriptovacím jazyce, jako je PHP, Ruby, nebo jej můžete spustit pomocí příkazového řádku.
Syntaxe příkazu SQL SELECT
Je to 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)TADY
- SELECT je klíčové slovo SQL, které umožňuje databázi vědět, že chcete načíst data.
- [DISTINCT | VŠE] jsou volitelná klíčová slova, která lze použít k doladění výsledků vrácených z příkazu SQL SELECT. Pokud není zadáno nic, pak se jako výchozí použije ALL.
- {* | [fieldExpression [AS newName]} musí být zadána alespoň jedna část, "*" vybrána všechna pole ze zadaného názvu tabulky, fieldExpression provede určité výpočty na zadaných polích, jako je přidání čísel nebo sestavení dvou řetězcových polí do jednoho.
- FROM tableName je povinné a musí obsahovat alespoň jednu tabulku, více tabulek musí být oddělených čárkami nebo spojeno pomocí klíčového slova JOIN.
- WHERE podmínka je volitelná, lze ji použít k určení kritérií ve výsledkové sadě vrácené z dotazu.
- GROUP BY se používá k sestavení záznamů, které mají stejné hodnoty polí.
- Podmínka HAVING se používá k určení kritérií při práci s klíčovým slovem GROUP BY.
- ORDER BY se používá k určení pořadí řazení sady výsledků.
*
Symbol Hvězda se používá k výběru všech sloupců v tabulce. Příklad jednoduchého příkazu SELECT vypadá jako ten, který je uveden níže.
SELECT * FROM `members`;
Výše uvedený příkaz vybere všechna pole z tabulky členů. Středník je zakončení příkazu. Není to povinné, ale je považováno za osvědčený postup, jak ukončit svá prohlášení.
Praktické příklady
Kliknutím stáhnete databázi myflix používanou pro praktické příklady.
Můžete se naučit importovat soubor .sql do MySQL WorkBench
Příklady jsou provedeny na následujících dvou tabulkách
Tabulka 1: tabulka členů
členské číslo | full_names | Rod | datum narození | fyzická adresa | postal_ address | Kontaktní_číslo | e-mailem |
---|---|---|---|---|---|---|---|
1 | Janet Jones | ženský | 21-07-1980 | Pozemek první ulice č. 4 | Soukromá taška | 0759 253 542 | Tato e-mailová adresa je chráněna před spamboty. Abyste ji mohli zobrazit, musíte mít povolený JavaScript. |
2 | Janet Smith Jones | ženský | 23-06-1980 | Melrose 123 | NULA | NULA | Tato e-mailová adresa je chráněna před spamboty. Abyste ji mohli zobrazit, musíte mít povolený JavaScript. |
3 | Robert Phil | mužský | 12.7.1989 | 3. ulice 34 | NULA | 12345 | Tato e-mailová adresa je chráněna před spamboty. Abyste ji mohli zobrazit, musíte mít povolený JavaScript. |
4 | Gloria Williams | ženský | 14-02-1984 | 2. ulice 23 | NULA | NULA | NULA |
Tabulka 2: tabulka filmů
film_id | titul | ředitel | rok_vydáno | id_kategorie |
---|---|---|---|---|
1 | Piráti z Karibiku 4 | Rob Marshall | 2011 | 1 |
2 | Zapomíná Sarah Marshal | Nicholas Stoller | 2008 | 2 |
3 | X-Men | NULA | 2008 | NULA |
4 | Kódové jméno černé | Edgar Jimz | 2010 | NULA |
5 | Tatínkovy holčičky | NULA | 2007 | 8 |
6 | andělé a démoni | NULA | 2007 | 6 |
7 | Davinciho kód | NULA | 2007 | 6 |
9 | Honey Mooners | John Schultz | 2005 | 8 |
16 | 67% vinen | NULA | 2012 | NULA |
Získávám seznam členů
Předpokládejme, že chceme získat seznam všech registrovaných členů knihovny z naší databáze, k tomu bychom použili níže uvedený skript.
SELECT * FROM `members`;
Provedení výše uvedeného skriptu v pracovní ploše MySQL přináší následující výsledky.
členské číslo | full_names | Rod | datum narození | fyzická adresa | postal_ address | Kontaktní_číslo | e-mailem |
---|---|---|---|---|---|---|---|
1 | Janet Jones | ženský | 21-07-1980 | Pozemek první ulice č. 4 | Soukromá taška | 0759 253 542 | Tato e-mailová adresa je chráněna před spamboty. Abyste ji mohli zobrazit, musíte mít povolený JavaScript. |
2 | Janet Smith Jones | ženský | 23-06-1980 | Melrose 123 | NULA | NULA | Tato e-mailová adresa je chráněna před spamboty. Abyste ji mohli zobrazit, musíte mít povolený JavaScript. |
3 | Robert Phil | mužský | 12.7.1989 | 3. ulice 34 | NULA | 12345 | Tato e-mailová adresa je chráněna před spamboty. Abyste ji mohli zobrazit, musíte mít povolený JavaScript. |
4 | Gloria Williams | ženský | 14-02-1984 | 2. ulice 23 | NULA | NULA | NULA |
Náš výše uvedený dotaz vrátil všechny řádky a sloupce z tabulky členů.
Řekněme, že nás zajímá pouze to, abychom dostali pouze pole pro celé jméno, pohlaví, fyzickou adresu a e-mail. K dosažení tohoto cíle nám pomůže následující skript.
SELECT `full_names`,`gender`,`physical_address`, `email` FROM `members`;
Provedení výše uvedeného skriptu v pracovní ploše MySQL přináší následující výsledky.
full_names | Rod | fyzická adresa | e-mailem |
---|---|---|---|
Janet Jones | ženský | Pozemek první ulice č. 4 | Tato e-mailová adresa je chráněna před spamboty. Abyste ji mohli zobrazit, musíte mít povolený JavaScript. |
Janet Smith Jones | ženský | Melrose 123 | Tato e-mailová adresa je chráněna před spamboty. Abyste ji mohli zobrazit, musíte mít povolený JavaScript. |
Robert Phil | mužský | 3. ulice 34 | Tato e-mailová adresa je chráněna před spamboty. Abyste ji mohli zobrazit, musíte mít povolený JavaScript. |
Gloria Williams | ženský | 2. ulice 23 | NULA |
Získávání seznamu filmů
Nezapomeňte v naší výše uvedené diskusi, že zmiňujeme výrazy použité v příkazech SELECT. Řekněme, že chceme získat seznam filmů z naší databáze. Chceme mít v jednom poli název filmu a jméno režiséra filmu. Jméno režiséra filmu by mělo být v závorkách. Chceme také získat rok, kdy byl film vydán. K tomu nám pomůže následující skript.
SELECT Concat(`title`, ' (', `director`, ')') , `year_released` FROM `movies`;
TADY
- Používá se funkce Concat () MySQL, která spojuje hodnoty sloupců dohromady.
- Řádek „Concat (` title`, '(', `director`, ')') získá název, přidá úvodní závorku, za kterou následuje jméno ředitele, a poté uzavírací závorku.
Řetězcové části jsou odděleny čárkami ve funkci Concat ().
Provedení výše uvedeného skriptu v pracovní ploše MySQL vytvoří následující sadu výsledků.
Concat (`title`, '(',` director`, ')') | rok_vydáno |
---|---|
Piráti z Karibiku 4 (Rob Marshall) | 2011 |
Zapomínání Sarah Marshal (Nicholas Stoller) | 2008 |
NULA | 2008 |
Krycí jméno Black (Edgar Jimz) | 2010 |
NULA | 2007 |
NULA | 2007 |
NULA | 2007 |
Honey Mooners (John Schultz) | 2005 |
NULA | 2012 |
Názvy aliasových polí
Výše uvedený příklad vrátil kód zřetězení jako název pole pro naše výsledky. Předpokládejme, že chceme v naší sadě výsledků použít popisnější název pole. K tomu bychom použili alias názvu sloupce. Následuje základní syntaxe názvu aliasu sloupce
SELECT `column_name|value|expression` [AS] `alias_name`;
TADY
- "SELECT" název_sloupce | hodnota | výraz "" je běžný příkaz SELECT, kterým může být název, hodnota nebo výraz sloupce.
- „[AS]“ je volitelné klíčové slovo před názvem aliasu, který označuje výraz, hodnotu nebo název pole, bude vrácen jako.
- „alias_name`“ je alias, který chceme v naší sadě výsledků vrátit jako název pole.
Výše uvedený dotaz se smysluplně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 |
Zapomínání Sarah Marshal (Nicholas Stoller) | 2008 |
NULA | 2008 |
Krycí jméno Black (Edgar Jimz) | 2010 |
NULA | 2007 |
NULA | 2007 |
NULA | 2007 |
Honey Mooners (John Schultz) | 2005 |
NULA | 2012 |
Získávám seznam členů zobrazující rok narození
Předpokládejme, že chceme získat seznam všech členů s uvedením čísla členství, celých jmen a roku narození, můžeme pomocí funkce LEFT string extrahovat rok narození z pole data narození. K tomu nám pomáhá níže zobrazený skript.
SELECT `membership_number`,`full_names`,LEFT(`date_of_birth`,4) AS `year_of_birth` FROM members;
TADY
- "LEFT (` date_of_birth`, 4) " funkce LEFT string akceptuje jako parametr datum narození a vrátí pouze 4 znaky zleva.
- „AS` year_of_birth` “ je název aliasu sloupce, který bude vrácen v našich výsledcích. Všimněte si, že klíčové slovo AS je volitelné , můžete ho vynechat a dotaz bude i nadále fungovat.
Provedení výše uvedeného dotazu v pracovní ploše MySQL proti myflixdb nám dává výsledky uvedené níže.
členské číslo | full_names | rok narození |
---|---|---|
1 | Janet Jones | 1980 |
2 | Janet Smith Jones | 1980 |
3 | Robert Phil | 1989 |
4 | Gloria Williams | 1984 |
SQL pomocí MySQL Workbench
Nyní použijeme pracovní plochu MySQL ke generování skriptu, který zobrazí všechny názvy polí z naší tabulky kategorií.
1. Klikněte pravým tlačítkem na tabulku kategorií. Klikněte na „Vybrat řádky - omezit 1000“
2. Pracovní plocha MySQL automaticky vytvoří dotaz SQL a vloží jej do editoru.
3. Zobrazí se výsledky dotazu
Všimněte si, že jsme příkaz SELECT sami nenapsali. Pracovní stůl MySQL to pro nás vygeneroval.
Proč používat příkaz SELECT SQL, když máme MySQL Workbench?
Nyní možná uvažujete, proč se učit příkaz SQL SELECT k dotazování na data z databáze, když můžete jednoduše použít nástroj, jako je pracovní stůl MySQL, abyste získali stejné výsledky bez znalosti jazyka SQL. To je samozřejmě možné, ale naučit se používat příkaz SELECT vám dává větší flexibilitu a kontrolu nad vašimi příkazy SQL SELECT .
Pracovní stůl MySQL spadá do kategorie QBE nástrojů „ Dotaz příkladem “. Má pomoci rychleji generovat příkazy SQL, aby se zvýšila produktivita uživatelů.
Naučit se příkaz SQL SELECT vám umožní vytvářet složité dotazy, které nelze snadno generovat pomocí obslužných programů Query by Example, jako je například pracovní plocha MySQL.
Chcete-li zlepšit produktivitu, můžete vygenerovat kód pomocí pracovní plochy MySQL a poté jej upravit podle svých požadavků . K tomu může dojít, pouze pokud pochopíte, jak fungují příkazy SQL!
souhrn
- Klíčové slovo SQL SELECT se používá k dotazování na data z databáze a je to nejčastěji používaný příkaz.
- Nejjednodušší forma má syntaxi „SELECT * FROM tableName;“
- Výrazy lze také použít v příkazu select. Příklad „VYBRAT množství + cena Z prodeje“
- Příkaz SQL SELECT může mít také další volitelné parametry, například WHERE, GROUP BY, HAVING, ORDER BY. Budeme o nich diskutovat později.
- Pracovní plocha MySQL může pomoci vyvinout příkazy SQL, provádět je a vytvářet výstupní výsledek ve stejném okně.