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 – це команда, яку ви будете виконувати найчастіше, варто вивчити її синтаксис, перш ніж торкатися зразків даних.

Синтаксис оператора SELECT у SQL

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 використовується для об’єднання записів, які мають однакові значення полів.
  • ВІД Умова використовується для визначення критеріїв під час роботи з ключовим словом GROUP BY.
  • СОРТУВАТИ ЗА використовується для визначення порядку сортування набору результатів.

*

Символ зірочки вибирає всі стовпці в таблиці. Простий оператор SELECT виглядає так, як показано нижче.

SELECT * FROM `members`;

Наведений вище оператор вибирає всі поля з таблиці members. Крапка з комою є символом завершення оператора. Він не є обов'язковим, але завершення операторів таким чином вважається гарною практикою.

SELECT DISTINCT та LIMIT у MySQL

Два необов'язкові ключові слова в синтаксисі заслуговують на детальніший розгляд, оскільки новачки зустрічаються з ними, щойно таблиця зростає.

DISTINCT видаляє дублікати рядків з результуючого набору. Таблиця фільмів зберігає кілька фільмів, випущених у 2007 році, тому простий запит повторюється в цьому році. DISTINCT повертає кожне значення один раз.

SELECT DISTINCT `year_released` FROM `movies`;

МЕЖА обмежує кількість повернутих рядків, що захищає клієнта від запиту, який в іншому випадку витягнув би мільйони записів.

SELECT * FROM `movies` LIMIT 5;
ключове слово Що вона робить Коли його використовувати
ВСІ (за замовчуванням) Повертає кожен відповідний рядок, включаючи дублікати Підрахунок або перерахування необроблених записів
DISTINCT Згортає дублікати рядків в один Створення списку унікальних значень
МЕЖА Повертає лише перші N рядків Попередній перегляд даних або результати сторінкового перегляду

Після того, як синтаксис узгоджено, зразок бази даних втілює ці речення в життя.

Практичні приклади використання оператора SELECT

Натисніть, щоб завантажити база даних myflix, яка використовується для практичних прикладів.

Ви можете дізнатися, як імпортувати файл .sql у MySQL Верстак.

Приклади виконано на двох наступних таблицях.

Таблиця 1: членів таблиця

членський_ номер повні_імена пол дата народження фізична адреса Поштова адреса контактний номер e-mail
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 category_id
1 Пірати Карибського моря 4 Роб Маршалл 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 видає такі результати.

членський_ номер повні_імена пол дата народження фізична адреса Поштова адреса контактний номер e-mail
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_name (повне ім'я), gender (стать), physical_address (фізична адреса) та email (електронна адреса). Наступний скрипт досягає цього.

SELECT `full_names`,`gender`,`physical_address`, `email` FROM `members`;

Виконання скрипта в MySQL Workbench видає такі результати.

повні_імена пол фізична адреса e-mail
Джанет Джонс жінка Ділянка № 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]» – необов’язкове ключове слово перед псевдонімом.
  • "`alias_name`" — це псевдонім, який повертається в результуючому наборі як ім'я поля.

Той самий запит із більш змістовною назвою стовпця:

SELECT Concat(`title`, ' (', `director`, ')') AS `Concat`, `year_released` FROM `movies`;

Отримуємо наступний результат.

Concat year_released
Пірати Карибського моря 4 (Роб Маршалл) 2011
Забути Сару Маршал (Ніколас Столлер) 2008
NULL 2008
Code Ім'я Блек (Едгар Джимз) 2010
NULL 2007
NULL 2007
NULL 2007
Honey moonери (Джон Шульц) 2005
NULL 2012

Отримання списку учасників із зазначенням року народження

Припустимо, нам потрібен список усіх учасників із зазначенням номера членства, повних імен та року народження. Ми можемо використати рядкову функцію LEFT дляtracрік народження з поля дати народження.

SELECT `membership_number`,`full_names`,LEFT(`date_of_birth`,4) AS `year_of_birth` FROM members;

ТУТ

  • “LEFT(`дата_народження`;4)” Рядкова функція LEFT приймає дату народження як параметр і повертає лише 4 символи зліва.
  • “ЯК `рік_народження`” є псевдонім стовпця повернулися в наших результатах. Ключове слово AS необов’язкове; ви можете його пропустити, і запит все одно працюватиме.

Виконання запиту в MySQL Аналіз Workbench на myflixdb дає нам результати, показані нижче.

member_number повні_імена рік народження
1 Джанет Джонс 1980
2 Джанет Сміт Джонс 1980
3 Роберт Філ 1989
4 Глорія Вільямс 1984

Рукописні запити – це лише один із шляхів до результуючого набору. Workbench також може створити оператор для вас.

Використання SQL MySQL Верстак

Зараз будемо використовувати MySQL Робочий стіл для створення скрипта, який відображає всі назви полів з нашої таблиці категорій.

1. Клацніть правою кнопкою миші на таблиці «Категорії». Виберіть «Вибрати рядки – Обмежити 1000».

2. MySQL Workbench автоматично створює SQL-запит і вставляє його в редактор.

3. Результати запиту відображаються в сітці під редактором.

Використання SQL MySQL Верстак

Як видно на скріншоті, ми не писали оператор SELECT самостійно. MySQL Workbench згенерував його для нас.

Навіщо використовувати команду SELECT SQL, якщо у нас є MySQL Верстак?

Ви можете задаватися питанням, навіщо вивчати команду SQL SELECT, якщо такий інструмент, як MySQL Workbench повертає ті самі результати без знання мови SQL. Таке скорочення можливе, але вивчення команди SELECT дає вам більше гнучкість та контроль над вашим Оператори SQL SELECT.

MySQL Верстак належить до категорії «Запит за прикладом«(QBE) інструменти. Він призначений для швидшої генерації SQL-запитів та підвищення продуктивності користувачів.

Вивчення команди SQL SELECT дозволяє створювати складні запити які неможливо легко згенерувати за допомогою утиліт Query by Example, таких як MySQL Верстак.

Щоб підвищити продуктивність, ви можете згенерувати код у MySQL Верстак, То налаштувати це до відповідати вашим вимогамЦе можливо лише після того, як ви зрозумієте, як працюють SQL-запитувачі.

Розуміння MySQL Оператор SELECT

Поширені запитання

Зазвичай так. SELECT * зчитує кожен стовпець, включаючи великі текстові поля та поля блобів, які вам можуть не знадобитися, і блокує покриття індексів. Іменування стовпців зменшує результуючий набір і пришвидшує виконання запиту.

Ключові слова, такі як SELECT та FROM, не враховують регістр. Порівняння рядків виконується за сортуванням стовпця, тому сортування без урахування регістру, таке як utf8mb4_0900_ai_ci, розглядає «Janet» та «janet» як рівні.

Відсутність індексу є звичайною причиною. Виконайте EXPLAIN перед запитом, щоб перевірити, чи MySQL виконує повне сканування таблиці, потім індексує відфільтровані або об'єднані стовпці та повертає лише потрібні рядки.

Так. Помічники з перетворення тексту в SQL перетворюють простий запит на оператор SELECT, як тільки вони знають вашу схему. Revпереглядати згенеровані об'єднання та фільтри, оскільки модель штучного інтелекту може вигадувати назви стовпців, яких не існує.

Ні. Штучний інтелект швидко створює запит, але ви все одно перевіряєте логіку, об'єднання та продуктивність. MySQL ВерстакЗнання SELECT дозволяє виявити неправильний результат ще до того, як він потрапить у виробництво.

Підсумуйте цей пост за допомогою: