MySQL Изявление SELECT с примери

⚡ Умно обобщение

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

  • ???? Основна цел: SELECT извлича съхранени редове, които отговарят на критерий, от командния ред или от PHP, Python, и други езици.
  • 🧩 Ред на синтаксиса: SELECT, FROM, WHERE, GROUP BY, HAVING и ORDER BY трябва да се появяват в тази фиксирана последователност.
  • Звезден пряк път: SELECT * FROM `members`; връща всяка колона, докато изричното именуване на колони запазва резултатните набори по-малки и по-бързи.
  • 🔗 Изрази: Concat() съединява стойностите на колоните, а LEFT() отрязва символите, така че изчислените полета се появяват директно в резултатния набор.
  • ???? ️ Псевдоними на колони: Незадължителната ключова дума AS преименува всеки израз, замествайки нечетливи заглавки, като например Concat(`title`), с ясни етикети.
  • 🖱️ Сравнение на работните маси: MySQL Workbench генерира заявки визуално, но ръчно написаните SELECT оператори остават необходими за сложно и прецизно извличане.

Какво е SELECT заявка в MySQL?

SELECT заявка се използва за извличане на данни от MySQL база данни. Базите данни съхраняват данни за по-късно извличане. Целта на MySQL SELECT е за връщане на един или повече редове от таблиците на базата данни, които отговарят на даден критерий. SELECT заявката може да се използва в скриптов език като PHP или Ruby или можете да я изпълните от командния ред.

SELECT заявка в MySQL

Тъй като 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. Резултатите от заявката се показват в мрежата под редактора.

Използване на SQL MySQL Workbench

Както показва екранната снимка, ние не сме написали сами оператора SELECT. MySQL Workbench го генерира за нас.

Защо да използваме SQL командата SELECT, когато имаме MySQL Работна маса?

Може би се чудите защо трябва да научите SQL командата SELECT, когато инструмент като MySQL Workbench връща същите резултати без никакви познания за езика SQL. Този пряк път е възможен, но изучаване на командата SELECT ви дава повече гъвкавост намлява контрол над вашите SQL оператори SELECT.

MySQL Работната маса попада в категорията „Заявка по пример„(QBE) инструменти. Предназначен е за по-бързо генериране на SQL изрази и повишаване на производителността на потребителите.

Изучаването на SQL командата SELECT ви позволява да създавате сложни заявки които не могат лесно да бъдат генерирани от помощни програми „Заявка по пример“, като например MySQL Работна маса.

За да подобрите производителността, можете генерирайте кода в MySQL Workbench, тогава персонализирате то да отговарят на вашите изискванияТова е възможно само след като разберете как работят SQL операторите.

Разбиране на MySQL SELECT израз

Въпроси и Отговори

Обикновено да. SELECT * чете всяка колона, включително големи текстови полета и blob полета, които може да не са ви необходими, и блокира покриването на индекси. Именуването на колоните намалява резултатния набор и по-бързата заявка.

Ключови думи като SELECT и FROM не са чувствителни към главни и малки букви. Сравненията на низове следват сортирането на колоната, така че сортирането без чувствителност към главни и малки букви, като например utf8mb4_0900_ai_ci, третира „Janet“ и „janet“ като равни.

Липсващ индекс е обичайната причина. Изпълнете EXPLAIN преди заявката, за да видите дали MySQL извършва пълно сканиране на таблицата, след което индексира филтрираните или обединените колони и връща само редовете, от които се нуждаете.

Да. Асистентите за текст-към-SQL конвертират обикновена заявка в SELECT оператор, след като разберат вашата схема. Revпреглед на генерираните съединения и филтри, защото един AI модел може да измисли имена на колони, които не съществуват.

Не. Изкуственият интелект изготвя заявка бързо, но вие все пак проверявате логиката, съединенията и производителността. MySQL WorkbenchПознаването на SELECT ви позволява да забележите грешен резултат, преди той да достигне до продукцията.

Обобщете тази публикация с: