MySQL Изявление SELECT с примери
⚡ Умно обобщение
- MySQL Изразът SELECT извлича редове от една или повече таблици и всеки пример по-долу се изпълнява спрямо примерната база данни myflix, преминавайки от обикновена заявка тип „звезда“ към изрази, псевдоними на колони и функции за низове.

Какво е SELECT заявка в MySQL?
SELECT заявка се използва за извличане на данни от MySQL база данни. Базите данни съхраняват данни за по-късно извличане. Целта на MySQL SELECT е за връщане на един или повече редове от таблиците на базата данни, които отговарят на даден критерий. SELECT заявката може да се използва в скриптов език като PHP или Ruby или можете да я изпълните от командния ред.
Тъй като SELECT е командата, която ще изпълнявате най-често, си струва да научите нейния синтаксис, преди да докоснете примерните данни.
Синтаксис на SQL SELECT оператор
SELECT е най-често използваната SQL команда и има следния общ синтаксис:
SELECT [DISTINCT|ALL] { * | [fieldExpression [AS newName]} FROM tableName [alias] [WHERE condition] [GROUP BY fieldName(s)] [HAVING condition] [ORDER BY fieldName(s)];
ТУК
- МАРКИРАЙ е SQL ключовата дума, която позволява на базата данни да разбере, че искате да извлечете данни.
- [ОТЛИЧЕН | ВСИЧКИ] са незадължителни ключови думи, които прецизират резултатите, върнати от SQL SELECT командата. Ако не е посочено нищо, тогава ALL се приема за стойност по подразбиране.
- {*| [израз на поле [AS newName]} Трябва да бъде зададена поне една част. „*“ избира всички полета от посоченото име на таблица; fieldExpression извършва изчисления върху посочените полета, като например събиране на числа или обединяване на две низови полета в едно.
- ОТ tableName е задължително и трябва да съдържа поне една таблица. Няколко таблици трябва да бъдат разделени със запетаи или съединени с ключовата дума JOIN.
- КЪДЕ Условието е незадължително. То определя критериите в резултатния набор, върнат от заявката.
- ГРУПИРАЙ ПО се използва за събиране на записи, които имат еднакви стойности на полета.
- КАТО Условието се използва за задаване на критерии при работа с ключовата дума GROUP BY.
- ПОДРЕДЕНИ ПО се използва за указване на реда на сортиране на набора от резултати.
*
Символът звезда избира всички колони в таблица. Един прост оператор SELECT изглежда като показания по-долу.
SELECT * FROM `members`;
Горният оператор избира всички полета от таблицата members. Точката и запетаята е знак за край на оператора. Не е задължителен, но завършването на операторите по този начин се счита за добра практика.
ИЗБЕРЕТЕ РАЗЛИЧНО и ЛИМИТИРАЙТЕ в MySQL
Две незадължителни ключови думи в синтаксиса заслужават по-внимателно разглеждане, защото начинаещите се срещат с тях веднага щом таблицата нарасне.
DISTINCT премахва дублиращи се редове от резултатния набор. Таблицата „филми“ съхранява няколко филма, издадени през 2007 г., така че обикновена заявка повтаря тази година. DISTINCT връща всяка стойност веднъж.
SELECT DISTINCT `year_released` FROM `movies`;
ОГРАНИЧАВА ограничава броя на върнатите редове, което предпазва клиента от заявка, която иначе би извлякла милиони записи.
SELECT * FROM `movies` LIMIT 5;
| Ключова дума | Какво го прави | Кога да го използвате |
|---|---|---|
| ВСИЧКИ (по подразбиране) | Връща всеки съответстващ ред, включително дубликатите | Преброяване или изброяване на сурови записи |
| DISTINCT | Свива дублиращите се редове в един | Създаване на списък с уникални стойности |
| ОГРАНИЧАВА | Връща само първите N реда | Преглед на данни или резултати от страниране |
След като синтаксисът е установен, примерната база данни вдъхва живот на тези клаузи.
Практически примери за SELECT оператор
Кликнете, за да изтеглите базата данни myflix, използвана за практическите примери.
Можете да научите как да импортирате .sql файла в MySQL Workbench.
Примерите са изпълнени върху следващите две таблици.
Таблица 1: членове маса
| членски_ номер | пълни_имена | пол | дата_на_ раждане | физически_ адрес | пощенски_ адрес | контактен номер | електронна поща |
|---|---|---|---|---|---|---|---|
| 1 | Джанет Джоунс | Женски | 21-07-1980 | Първа улица Парцел №4 | Лична чанта | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Джанет Смит Джоунс | Женски | 23-06-1980 | Мелроуз 123 | NULL | NULL | jj@fstreet.com |
| 3 | Робърт Фил | Мъжки | 12-07-1989 | 3-та улица 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Глория Уилямс | Женски | 14-02-1984 | 2-ра улица 23 | NULL | NULL | NULL |
Таблица 2: кино маса
| movie_id | заглавие | директор | year_released | категория_id |
|---|---|---|---|---|
| 1 | Карибски пирати 4 | Rob Marshall | 2011 | 1 |
| 2 | Забравяйки Сара Маршал | Николас Столер | 2008 | 2 |
| 3 | X-Men | NULL | 2008 | NULL |
| 4 | Code Име Черно | Едгар Джимз | 2010 | NULL |
| 5 | Малките момичета на татко | NULL | 2007 | 8 |
| 6 | Ангели и демони | NULL | 2007 | 6 |
| 7 | Да Винчи Code | NULL | 2007 | 6 |
| 9 | Honey moonERS | Джон Шулц | 2005 | 8 |
| 16 | 67% виновен | NULL | 2012 | NULL |
Получаване на списък с членове
Да предположим, че искаме списък с всички регистрирани членове на библиотеката от нашата база данни. Ще използваме показания по-долу скрипт, за да направим това.
SELECT * FROM `members`;
Изпълнението на скрипта в MySQL Workbench дава следните резултати.
| членски_ номер | пълни_имена | пол | дата_на_ раждане | физически_ адрес | пощенски_ адрес | контактен номер | електронна поща |
|---|---|---|---|---|---|---|---|
| 1 | Джанет Джоунс | Женски | 21-07-1980 | Първа улица Парцел №4 | Лична чанта | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Джанет Смит Джоунс | Женски | 23-06-1980 | Мелроуз 123 | NULL | NULL | jj@fstreet.com |
| 3 | Робърт Фил | Мъжки | 12-07-1989 | 3-та улица 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Глория Уилямс | Женски | 14-02-1984 | 2-ра улица 23 | NULL | NULL | NULL |
Заявката върна всички редове и колони от таблицата members.
Избиране на конкретни колони
Да кажем, че се интересуваме само от полетата full_names, gender, physical_address и email. Следният скрипт постига това.
SELECT `full_names`,`gender`,`physical_address`, `email` FROM `members`;
Изпълнението на скрипта в MySQL Workbench дава следните резултати.
| пълни_имена | пол | физически_адрес | електронна поща |
|---|---|---|---|
| Джанет Джоунс | Женски | Първа улица Парцел №4 | janetjones@yagoo.cm |
| Джанет Смит Джоунс | Женски | Мелроуз 123 | jj@fstreet.com |
| Робърт Фил | Мъжки | 3-та улица 34 | rm@tstreet.com |
| Глория Уилямс | Женски | 2-ра улица 23 | NULL |
Получаване на списък с филми с изрази
Изрази могат да се използват и в SELECT оператори. Да речем, че искаме списък с филми със заглавие и име на режисьора в едно поле, режисьора в скоби, плюс годината на излизане на филма. Следният скрипт прави това.
SELECT Concat(`title`, ' (', `director`, ')') , `year_released` FROM `movies`;
ТУК
- Конкат() MySQL Функцията обединява стойностите на колоните.
- Редът „Concat(`title`, ' (', `director`, ')')“ получава заглавието, добавя отваряща скоба, последвана от името на режисьора, и след това добавя затварящата скоба.
- Частите от низовете се разделят със запетаи във функцията Concat().
Изпълнението на скрипта в MySQL Workbench генерира следния набор от резултати.
| Concat(`title`, ' (', `director`, ')') | year_released |
|---|---|
| Карибски пирати 4 (Роб Маршал) | 2011 |
| Забравяйки Сара Маршал (Никълъс Столър) | 2008 |
| NULL | 2008 |
| Code Име Блек (Едгар Джимз) | 2010 |
| NULL | 2007 |
| NULL | 2007 |
| NULL | 2007 |
| Honey moonърс (Джон Шулц) | 2005 |
| NULL | 2012 |
Забележка: Concat() връща NULL, когато някой от аргументите е NULL, поради което филмите без режисьор показват NULL по-горе.
Имена на полета за псевдоними
Горният пример върна кода за конкатенация като име на поле. За да използвате по-описателно име на поле в резултатния набор, приложете псевдоним на колона. Основният синтаксис е следният.
SELECT `column_name|value|expression` [AS] `alias_name`;
ТУК
- „SELECT `име_на_колона|стойност|израз`“ е обикновеният SELECT оператор, който може да бъде име на колона, стойност или израз.
- „[AS]“ е незадължителната ключова дума преди псевдонима.
- „псевдоним_име“ е псевдонимът, който се връща в резултатния набор като име на поле.
Същата заявка с по-смислено име на колона:
SELECT Concat(`title`, ' (', `director`, ')') AS `Concat`, `year_released` FROM `movies`;
Получаваме следния резултат.
| Конкат | year_released |
|---|---|
| Карибски пирати 4 (Роб Маршал) | 2011 |
| Забравяйки Сара Маршал (Никълъс Столър) | 2008 |
| NULL | 2008 |
| Code Име Блек (Едгар Джимз) | 2010 |
| NULL | 2007 |
| NULL | 2007 |
| NULL | 2007 |
| Honey moonърс (Джон Шулц) | 2005 |
| NULL | 2012 |
Получаване на списък с членове, показващ годината на раждане
Да предположим, че искаме списък с всички членове, показващ номера на членството, пълните имена и годината на раждане. Можем да използваме функцията LEFT string, за да...tracгодината на раждане от полето за дата на раждане.
SELECT `membership_number`,`full_names`,LEFT(`date_of_birth`,4) AS `year_of_birth` FROM members;
ТУК
- „НАЛЯВО(`дата_на_рождение`,4)“ - Функция LEFT низ приема датата на раждане като параметър и връща само 4 символа отляво.
- „КАТО „година_на_раждане“ е име на псевдоним на колона върнати в нашите резултати. Ключовата дума AS не е задължителна; можете да го пропуснете и заявката ще продължи да работи.
Изпълнение на заявката в MySQL Workbench срещу myflixdb ни дава резултатите, показани по-долу.
| членски_номер | пълни_имена | година_на_раждане |
|---|---|---|
| 1 | Джанет Джоунс | 1980 |
| 2 | Джанет Смит Джоунс | 1980 |
| 3 | Робърт Фил | 1989 |
| 4 | Глория Уилямс | 1984 |
Ръчно написаните заявки са само един от начините за получаване на резултат. Workbench може също да изгради оператора вместо вас.
Използване на SQL MySQL Workbench
Сега ще използваме MySQL Workbench за генериране на скрипта, който показва всички имена на полета от нашата таблица с категории.
1. Щракнете с десния бутон върху таблицата „Категории“. Кликнете върху „Избор на редове – Ограничение 1000“.
2. MySQL Workbench автоматично създава SQL заявка и я поставя в редактора.
3. Резултатите от заявката се показват в мрежата под редактора.
Както показва екранната снимка, ние не сме написали сами оператора SELECT. MySQL Workbench го генерира за нас.
Защо да използваме SQL командата SELECT, когато имаме MySQL Работна маса?
Може би се чудите защо трябва да научите SQL командата SELECT, когато инструмент като MySQL Workbench връща същите резултати без никакви познания за езика SQL. Този пряк път е възможен, но изучаване на командата SELECT ви дава повече гъвкавост намлява контрол над вашите SQL оператори SELECT.
MySQL Работната маса попада в категорията „Заявка по пример„(QBE) инструменти. Предназначен е за по-бързо генериране на SQL изрази и повишаване на производителността на потребителите.
Изучаването на SQL командата SELECT ви позволява да създавате сложни заявки които не могат лесно да бъдат генерирани от помощни програми „Заявка по пример“, като например MySQL Работна маса.
За да подобрите производителността, можете генерирайте кода в MySQL Workbench, тогава персонализирате то да отговарят на вашите изискванияТова е възможно само след като разберете как работят SQL операторите.



