MySQL Instrukcja SELECT z przykładami

⚡ Inteligentne podsumowanie

MySQL Polecenie SELECT pobiera wiersze z jednej lub większej liczby tabel. Każdy przykład poniżej jest uruchamiany na przykładowej bazie danych myflix, przechodząc od prostego zapytania gwiazdkowego do wyrażeń, aliasów kolumn i funkcji łańcuchowych.

  • 🔎 Główny cel: SELECT pobiera zapisane wiersze, które spełniają kryteria z wiersza poleceń lub z PHP, Pythoni inne języki.
  • 🧩 Kolejność składni: Polecenia SELECT, FROM, WHERE, GROUP BY, HAVING i ORDER BY muszą występować w tej ustalonej kolejności.
  • Skrót gwiazdy: SELECT * FROM `members`; zwraca każdą kolumnę, a jawne nadanie kolumnom nazw sprawia, że ​​zestawy wyników są mniejsze i szybsze.
  • 🔗 Wyrażenia: Funkcja Concat() łączy wartości kolumn, a LEFT() przycina znaki, dzięki czemu pola obliczeniowe pojawiają się bezpośrednio w zestawie wyników.
  • 🏷️ Aliasy kolumn: Opcjonalne słowo kluczowe AS zmienia nazwę dowolnego wyrażenia, zastępując nieczytelne nagłówki, takie jak Concat(`title`), czytelnymi etykietami.
  • 🖱️. Porównanie stanowisk roboczych: MySQL Workbench generuje zapytania wizualnie, jednak w celu uzyskania złożonych i precyzyjnych wyników konieczne jest ręczne pisanie poleceń SELECT.

Czym jest zapytanie SELECT w MySQL?

Zapytanie SELECT służy do pobierania danych z MySQL baza danych. Bazy danych przechowują dane do późniejszego pobrania. Celem MySQL SELECT zwraca jeden lub więcej wierszy z tabel bazy danych, które spełniają określone kryteria. Zapytanie SELECT można wykonać w języku skryptowym, takim jak PHP lub Ruby, lub z poziomu wiersza poleceń.

WYBIERZ zapytanie w MySQL

Ponieważ polecenie SELECT będzie uruchamiane najczęściej, warto zapoznać się z jego składnią przed przystąpieniem do pracy z danymi przykładowymi.

Składnia instrukcji SQL SELECT

SELECT jest najczęściej używanym poleceniem SQL i ma następującą ogólną składnię:

SELECT [DISTINCT|ALL] { * | [fieldExpression [AS newName]} FROM tableName [alias] [WHERE condition] [GROUP BY fieldName(s)] [HAVING condition] [ORDER BY fieldName(s)];

TUTAJ

  • SELECT to słowo kluczowe SQL, które informuje bazę danych, że chcesz pobrać dane.
  • [WYRÓŻNIONY | WSZYSTKO] to opcjonalne słowa kluczowe, które dostrajają wyniki zwracane przez instrukcję SQL SELECT. Jeśli nic nie zostanie określone, domyślnie przyjmowane jest ALL.
  • {*| [wyrażenie pola [AS nowa nazwa]} należy określić co najmniej jedną część. „*” powoduje wybranie wszystkich pól z określonej nazwy tabeli; fieldExpression wykonuje obliczenia na określonych polach, takie jak dodawanie liczb lub łączenie dwóch pól ciągów w jedno.
  • OD Nazwa_tabeli jest obowiązkowa i musi zawierać co najmniej jedną tabelę. Wiele tabel należy oddzielić przecinkami lub połączyć słowem kluczowym JOIN.
  • WHERE Warunek jest opcjonalny. Określa kryteria w zestawie wyników zwróconym przez zapytanie.
  • GRUPUJ WEDŁUG służy do łączenia rekordów mających te same wartości pól.
  • MAJĄCY warunek jest używany do określenia kryteriów podczas pracy ze słowem kluczowym GROUP BY.
  • ZAMÓW PRZEZ służy do określenia kolejności sortowania zestawu wyników.

*

Symbol gwiazdki zaznacza wszystkie kolumny w tabeli. Proste polecenie SELECT wygląda jak pokazane poniżej.

SELECT * FROM `members`;

Powyższe polecenie wybiera wszystkie pola z tabeli „members”. Średnik jest zakończeniem polecenia. Nie jest to obowiązkowe, ale kończenie poleceń w ten sposób jest uważane za dobrą praktykę.

WYBIERZ DISTINCT i LIMIT w MySQL

Dwa opcjonalne słowa kluczowe w składni zasługują na bliższe przyjrzenie się, ponieważ początkujący spotykają się z nimi, gdy tylko tabela staje się większa.

DISTINCT Usuwa zduplikowane wiersze z zestawu wyników. Tabela „Filmy” przechowuje kilka filmów wydanych w 2007 roku, więc proste zapytanie powtarza ten rok. Funkcja DISTINCT zwraca każdą wartość raz.

SELECT DISTINCT `year_released` FROM `movies`;

LIMIT ogranicza liczbę zwracanych wierszy, co chroni klienta przed zapytaniami, które w przeciwnym razie pobrałyby miliony rekordów.

SELECT * FROM `movies` LIMIT 5;
słowo kluczowe Co to robi Kiedy go używać
WSZYSTKIE (domyślne) Zwraca każdy pasujący wiersz, wliczając duplikaty Liczenie lub listowanie surowych rekordów
DISTINCT Zwija zduplikowane wiersze w jeden Tworzenie listy unikalnych wartości
LIMIT Zwraca tylko pierwsze N ​​wierszy Podgląd danych lub wyników stronicowania

Po ustaleniu składni, przykładowa baza danych ożywia te klauzule.

Praktyczne przykłady instrukcji SELECT

Kliknij, aby pobrać baza danych myflix użyta w przykładach praktycznych.

Możesz dowiedzieć się, jak zaimportować plik .sql do MySQL Workbench.

Przykłady wykonano na podstawie dwóch poniższych tabel.

Tabela 1: członkowie stół

numer członkostwa pełne nazwy płeć Data urodzenia adres fizyczny adres pocztowy numer_kontaktu E-mail
1 Żaneta Jones Kobieta 21-07-1980 Działka przy ulicy Pierwszej nr 4 Prywatna torba 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Kobieta 23-06-1980 Melroza 123 NULL NULL jj@fstreet.com
3 Roberta Fila Mężczyzna 12-07-1989 Trzecia ulica 3 NULL 12345 rm@tstreet.com
4 Glorii Williams Kobieta 14-02-1984 Druga ulica 2 NULL NULL NULL

Tabela 2: filmy stół

identyfikator_filmu tytuł dyrektor rok_wydania identyfikator_kategorii
1 Piraci z Karaibów 4 Rob Marshall 2011 1
2 Zapominając o Sarah Marshal Nicholas Stoller 2008 2
3 X-Men NULL 2008 NULL
4 Code Imię Czarny Edgara Jimza 2010 NULL
5 Małe dziewczynki tatusia NULL 2007 8
6 Anioły i demony NULL 2007 6
7 Davinci Code NULL 2007 6
9 Honey mooners Jana Schultza 2005 8
16 67% winnych NULL 2012 NULL

Uzyskiwanie listy członków

Załóżmy, że chcemy uzyskać listę wszystkich zarejestrowanych użytkowników biblioteki z naszej bazy danych. W tym celu użyjemy poniższego skryptu.

SELECT * FROM `members`;

Wykonywanie skryptu w MySQL Workbench generuje następujące wyniki.

numer członkostwa pełne nazwy płeć Data urodzenia adres fizyczny adres pocztowy numer_kontaktu E-mail
1 Żaneta Jones Kobieta 21-07-1980 Działka przy ulicy Pierwszej nr 4 Prywatna torba 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Kobieta 23-06-1980 Melroza 123 NULL NULL jj@fstreet.com
3 Roberta Fila Mężczyzna 12-07-1989 Trzecia ulica 3 NULL 12345 rm@tstreet.com
4 Glorii Williams Kobieta 14-02-1984 Druga ulica 2 NULL NULL NULL

Zapytanie zwróciło wszystkie wiersze i kolumny z tabeli members.

Wybieranie określonych kolumn

Załóżmy, że interesują nas tylko pola „pełne_nazwiska”, „płeć”, „adres_fizyczny” i „adres e-mail”. Poniższy skrypt to umożliwia.

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

Wykonywanie skryptu w MySQL Workbench generuje następujące wyniki.

pełne nazwy płeć adres fizyczny E-mail
Żaneta Jones Kobieta Działka przy ulicy Pierwszej nr 4 janetjones@yagoo.cm
Janet Smith Jones Kobieta Melroza 123 jj@fstreet.com
Roberta Fila Mężczyzna Trzecia ulica 3 rm@tstreet.com
Glorii Williams Kobieta Druga ulica 2 NULL

Uzyskiwanie listy filmów za pomocą wyrażeń

Wyrażenia można również stosować w instrukcjach SELECT. Załóżmy, że chcemy uzyskać listę filmów z tytułem i nazwiskiem reżysera w jednym polu, nazwiskiem reżysera w nawiasach kwadratowych oraz rokiem premiery filmu. Poniższy skrypt to umożliwia.

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

TUTAJ

  • Połączenie() MySQL funkcja łączy ze sobą wartości kolumn.
  • Wiersz „Concat(`title`, ' (', `director`, ')')” pobiera tytuł, dodaje otwierający nawias, po którym następuje imię i nazwisko dyrektora, a następnie dodaje zamykający nawias.
  • Części ciągu są oddzielane przecinkami wewnątrz funkcji Concat().

Wykonywanie skryptu w MySQL Workbench generuje następujący zestaw wyników.

Concat(`tytuł`, '(', `reżyser`, ')') rok_wydania
Piraci z Karaibów 4 (Rob Marshall) 2011
Zapomnieć o Sarah Marshal (Nicholas Stoller) 2008
NULL 2008
Code Imię Black (Edgar Jimz) 2010
NULL 2007
NULL 2007
NULL 2007
Honey mooners (John Schultz) 2005
NULL 2012

Uwaga: Funkcja Concat() zwraca NULL, gdy którykolwiek z argumentów ma wartość NULL, dlatego w przypadku filmów bez reżysera powyżej wyświetlana jest wartość NULL.

Nazwy pól aliasów

Powyższy przykład zwrócił kod konkatenacji jako nazwę pola. Aby użyć bardziej opisowej nazwy pola w zestawie wyników, zastosuj alias kolumny. Poniżej przedstawiono podstawową składnię.

SELECT `column_name|value|expression` [AS] `alias_name`;

TUTAJ

  • „WYBIERZ `nazwa_kolumny|wartość|wyrażenie`” jest standardowym poleceniem SELECT, które może być nazwą kolumny, wartością lub wyrażeniem.
  • "[JAK]" jest opcjonalnym słowem kluczowym przed nazwą aliasu.
  • „`alias_nazwa`” jest aliasem zwracanym w zestawie wyników jako nazwa pola.

To samo zapytanie z bardziej znaczącą nazwą kolumny:

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

Otrzymujemy następujący wynik.

Konkat rok_wydania
Piraci z Karaibów 4 (Rob Marshall) 2011
Zapomnieć o Sarah Marshal (Nicholas Stoller) 2008
NULL 2008
Code Imię Black (Edgar Jimz) 2010
NULL 2007
NULL 2007
NULL 2007
Honey mooners (John Schultz) 2005
NULL 2012

Uzyskiwanie listy członków z rokiem urodzenia

Załóżmy, że chcemy uzyskać listę wszystkich członków, zawierającą numer członkowski, imiona i nazwiska oraz rok urodzenia. Możemy użyć funkcji łańcuchowej LEFT, aby np.tract rok urodzenia z pola daty urodzenia.

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

TUTAJ

  • „LEWY(`data_urodzenia`,4)” dotychczasowy LEWA funkcja ciągu przyjmuje datę urodzenia jako parametr i zwraca tylko 4 znaki od lewej.
  • „AS `rok_urodzenia`” jest nazwa aliasu kolumny zwrócone w naszych wynikach. Słowo kluczowe AS jest opcjonalne; możesz pominąć tę opcję, a zapytanie nadal będzie działać.

Wykonywanie zapytania w MySQL Połączenie Workbencha z bazą danych myflixdb daje nam wyniki pokazane poniżej.

numer_członkostwa pełne nazwy rok urodzenia
1 Żaneta Jones 1980
2 Janet Smith Jones 1980
3 Roberta Fila 1989
4 Glorii Williams 1984

Ręcznie napisane zapytania to tylko jedna z dróg do zbioru wyników. Workbench może również utworzyć zapytanie za Ciebie.

Używanie SQL MySQL Workbench

Będziemy teraz korzystać MySQL Warsztat generowania skryptu wyświetlającego wszystkie nazwy pól z naszej tabeli kategorii.

1. Kliknij prawym przyciskiem myszy tabelę „Kategorie”. Kliknij „Wybierz wiersze – limit 1000”.

2. MySQL Workbench automatycznie tworzy zapytanie SQL i wkleja je do edytora.

3. Wyniki zapytania wyświetlane są w siatce poniżej edytora.

Używanie SQL MySQL Workbench

Jak widać na zrzucie ekranu, nie napisaliśmy polecenia SELECT sami. MySQL Wygenerował je dla nas Workbench.

Dlaczego warto używać polecenia SELECT SQL, skoro mamy MySQL Stoł warsztatowy?

Być może zastanawiasz się, dlaczego warto nauczyć się polecenia SQL SELECT, skoro narzędzie takie jak MySQL Workbench zwraca te same wyniki bez znajomości języka SQL. Ten skrót jest możliwy, ale nauka polecenia SELECT daje więcej elastyczność oraz kontrola ponad twoje Instrukcje SQL SELECT.

MySQL Stół warsztatowy należy do kategorii „Zapytanie według przykładuNarzędzia QBE. Ich celem jest szybsze generowanie poleceń SQL i zwiększenie produktywności użytkowników.

Poznanie polecenia SQL SELECT pozwala na tworzenie złożone zapytania którego nie można łatwo wygenerować za pomocą narzędzi Query by Example, takich jak MySQL Stoł warsztatowy.

Aby zwiększyć produktywność, możesz wygeneruj kod w MySQL Workbench, następnie dostosować jej spełnić Twoje wymagania. To będzie możliwe dopiero po zrozumieniu, jak działają polecenia SQL.

Zrozumienie MySQL SELECT oświadczenie

FAQ

Zazwyczaj tak. SELECT * odczytuje każdą kolumnę, w tym duże pola tekstowe i blob, których możesz nie potrzebować, i blokuje indeksy zasłaniające. Nadanie kolumnom nazw zmniejsza rozmiar zestawu wyników i przyspiesza zapytanie.

Słowa kluczowe, takie jak SELECT i FROM, nie uwzględniają wielkości liter. Porównania ciągów znaków są zgodne z sortowaniem kolumny, więc sortowanie bez uwzględniania wielkości liter, takie jak utf8mb4_0900_ai_ci, traktuje „Janet” i „janet” jako równe.

Brak indeksu jest najczęstszą przyczyną. Uruchom EXPLAIN przed zapytaniem, aby sprawdzić, czy MySQL wykonuje pełne skanowanie tabeli, a następnie indeksuje przefiltrowane lub połączone kolumny i zwraca tylko potrzebne wiersze.

Tak. Asystenci przetwarzania tekstu na SQL konwertują zwykłe żądanie na instrukcję SELECT po poznaniu schematu. RevObejrzyj wygenerowane połączenia i filtry, ponieważ model sztucznej inteligencji może wymyślić nazwy kolumn, które nie istnieją.

Nie. Sztuczna inteligencja szybko tworzy zapytanie, ale Ty nadal weryfikujesz logikę, połączenia i wydajność MySQL WorkbenchZnajomość SELECT pozwala na wykrycie błędnego wyniku zanim trafi on do produkcji.

Podsumuj ten post następująco: