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.

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ń.
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 | |
|---|---|---|---|---|---|---|---|
| 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 | |
|---|---|---|---|---|---|---|---|
| 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 | |
|---|---|---|---|
| Ż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.
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.



