Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zapytania MySQL

Do tej pory stworzyliśmy bazę danych, dodaliśmy dwie tabele i wstawiliśmy dane do obu tabel. Teraz przyjrzymy się, jak odzyskać te dane. Ale nie tylko odzyskaj dane, ale zapytanie bazę danych.

SQL oznacza Structured Query Language . To jest Zapytanie trochę, który sprawia, że ​​SQL jest tak potężny. SQL to język, który umożliwia uruchamianie zapytań w stosunku do Twojej bazy danych. Pozwala na zapytanie bazę danych dla żądanych danych.

SQL SELECT Oświadczenie

Jeśli chodzi o zapytania do bazy danych MySQL, SQL SELECT oświadczenie sprawia, że ​​to wszystko jest możliwe. Jest to prawdopodobnie najczęściej używana instrukcja SQL podczas pracy z MySQL. WYBIERZ Instrukcja pozwala opisać MySQL dokładnie, jakie dane chcesz pobrać.

Rozważ następującą instrukcję SQL:

SELECT * FROM Fruit;

Oto wynik:

To jest SELECT oświadczenie w najprostszy sposób. Powyższa instrukcja SQL pobiera wszystkie rekordy z Fruit tabela.

Gwiazdka (* ) mówi MySQL, aby zwrócił wszystkie kolumny. Oszczędza to nam czas i wysiłek. Bez tego musielibyśmy wpisać nazwy wszystkich kolumn, które chcielibyśmy zwrócić.

Powiedziawszy to, możesz również powiedzieć MySQL, aby zwracał tylko te kolumny, które chcesz zwrócić. Odbywa się to poprzez nazywanie tylko tych kolumn, które chcesz zwrócić. Tak:

SELECT FruitId, FruitName 
FROM Fruit;

Oto wynik:

Powyższa instrukcja SQL wybiera FruitId i FruitName kolumny z Owoców tabela.

Może to zmniejszyć bałagan, dzięki czemu zobaczysz tylko te kolumny, które Cię interesują. Może to również zwiększyć wydajność, ponieważ MySQL (i każda używana aplikacja) nie musi wykorzystywać cennych zasobów, aby zwracać niepotrzebne dane.

Ponownie, to zapytanie pobiera wszystkie records from the table — MySQL zwróci wszystkie rekordy, chyba że określono inaczej.

GDZIE Klauzula

Możesz dodać GDZIE klauzula, aby zawęzić zestaw wyników tylko do tych rekordów, które Cię interesują. W ten sposób:

SELECT * FROM Fruit
WHERE UnitId = 1;

Wynik:

Powyższe zapytanie zwraca wszystkie rekordy z Owoc tabela, w której UnitId kolumna ma wartość 1 .

Podzapytania — zagnieżdżone SELECT Oświadczenia

Co by było, gdybyśmy nie znali UnitId ? Co by było, gdybyśmy wiedzieli, że należy szukać tylko tych rekordów o nazwie jednostki Sztuka? ?

Łatwo! Moglibyśmy przepisać powyższy przykład, aby użyć zagnieżdżonego SELECT instrukcja (znana również jako podzapytanie ), który wysyła zapytanie do innej tabeli ( Jednostki stół). Dzięki temu będziemy mogli użyć rzeczywistej jednostki nazwa (zamiast jego identyfikatora), ponieważ druga tabela zawiera to w UnitName pole:

SELECT * FROM Fruit
WHERE UnitId = 
	(SELECT UnitId 
    FROM Units 
    WHERE UnitName = 'Piece');

Wynik:

Tutaj używamy zagnieżdżonego SELECT oświadczenie (np. SELECT instrukcja w SELECT oświadczenie) do zapytania o jednostki tabela dla UnitId rekordu zawierającego Sztuka jako jego UnitName wartość. Możemy to zrobić, ponieważ Fruit.UnitId kolumna jest kluczem obcym do Units.UnitId kolumna.

Oto więcej przykładów podzapytań, jeśli jesteś zainteresowany.

Korzystanie z SQL JOIN

Idąc o krok dalej, moglibyśmy przepisać nasz zagnieżdżony SELECT oświadczenie w INNER JOIN .

W SQL JOIN umożliwia wysyłanie zapytań do wielu tabel, które udostępniają dane. W naszym przypadku obie tabele mają wspólny UnitId więc można powiedzieć, że są „połączone” przez to pole.

Istnieją różne typy złączeń w SQL, jednak nas interesuje głównie INNER JOIN na razie.

DOŁĄCZENIE WEWNĘTRZNE składnia wygląda tak:

SELECT * FROM table_name_1
INNER JOIN table_name_2
ON table_name_1.column_name = table_name_2.column_name

Możemy więc przepisać nasze podzapytanie z poprzedniego przykładu w następujący sposób:

SELECT Fruit.* FROM Fruit
INNER JOIN Units
ON Fruit.UnitId = Units.UnitId
WHERE Units.UnitName = 'Piece';

Wynik:

Określiliśmy Fruit.* zamiast po prostu * ponieważ chcieliśmy zwrócić tylko wszystkie kolumny z Owoc stół. Gdybyśmy użyli * , zapytanie zwróciłoby wszystkie kolumny z obu tabel.

Sprawdź także LEFT JOIN i PRAWY DOŁĄCZ aby zobaczyć, jak możesz uzyskać różne dane w zależności od typu połączenia.

Podzapytanie a DOŁĄCZ ?

Teraz, gdy znasz już dwie metody osiągnięcia tego samego wyniku, prawdopodobnie zastanawiasz się, która z nich jest lepsza?

Podzapytania są zwykle bardziej czytelne (i być może łatwiejsze do zrozumienia), co może ułatwić początkującym zrozumienie.

Jednak wielu programistów SQL znajduje JOIN s bardziej wydajne i wydajniejsze. Jeśli napotkasz problemy z wydajnością zapytań lub aplikacji, spróbuj przekonwertować dowolne podzapytania na JOIN s lub na odwrót (w niektórych przypadkach podzapytanie może działać lepiej).

Ponadto mogą wystąpić przypadki, w których podzapytanie jest jedyną opcją, więc to również należy wziąć pod uwagę.

Więcej operatorów

Nasze dotychczasowe zapytania zawierały znak równości (= ). Nazywa się to operatorem . Dokładniej jest to operator porównania ponieważ porównuje jedno wyrażenie z drugim.

Istnieje wiele innych operatorów, których możesz użyć w swoich zapytaniach. Mogą one znacznie pomóc w zawężeniu zestawu wyników tylko do tych rekordów, których potrzebujesz. Często zdarza się, że baza danych zawiera miliony rekordów. Nawet jeśli masz tylko tysiące rekordów, próba znalezienia jednego rekordu (lub nawet tylko kilku) spośród tysięcy byłaby bardzo trudnym zadaniem, gdybyś nie miał do dyspozycji tych operatorów.

Oto niektóre z najczęściej używanych operatorów SQL.

> Operator

Możesz użyć > operatora, aby wybrać dane, które są większe niż podana wartość.

SELECT * FROM Fruit
WHERE Inventory > 10;

< Operator

Możesz użyć < operatora, aby wybrać dane, które są mniejsze niż podana wartość.

SELECT * FROM Fruit
WHERE Inventory < 10;

<> Operator

Możesz użyć <> operatora, aby wybrać dane mniejsze niż i większa niż podana wartość.

SELECT * FROM Fruit
WHERE Inventory <> 10;

>= Operator

Możesz użyć >= operatora, aby wybrać dane, które są większe lub równe danej wartości.

SELECT * FROM Fruit
WHERE Inventory >= 10;

<= Operator

Możesz użyć <= operatora, aby wybrać dane, które są mniejsze lub równe danej wartości.

SELECT * FROM Fruit
WHERE Inventory <= 10;

ORAZ Operator

Możesz dodać ORAZ operator do GDZIE klauzulę, aby ograniczyć wybór tylko do tych rekordów, które spełniają dwa warunki (lub więcej, jeśli uwzględnisz więcej ORAZ operatorów).

Oto przykład:

SELECT * FROM Fruit
WHERE Inventory > 10 
AND DateEntered > '2015-01-15';

LUB Operator

Możesz użyć LUB operatora, aby poszerzyć wybór do więcej niż jednego kryterium. Jak sama nazwa wskazuje, LUB klauzula pozwala wybrać dane, których kryteria są następujące LUB że. Więc ORAZ operator limity Twój wybór i LUB operator rozszerza to.

Oto przykład:

SELECT * FROM Fruit
WHERE UnitId = 1 OR UnitId = 2;

POMIĘDZY Operator

Użyj POMIĘDZY operatora, aby wybrać dane, które znajdują się między dwiema podanymi wartościami.

SELECT * FROM Fruit
WHERE DateEntered 
BETWEEN '2015-01-25' AND '2015-02-25';

NIE Operator

Użyj NIE operatora, aby wybrać dane, które nie odpowiednikiem danego warunku.

SELECT * FROM Fruit
WHERE NOT (FruitName = 'Apple');

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak korzystać z przygotowanych wyciągów mysqli?

  2. Migracja bazy danych MySQL z CloudSQL do AWS RDS

  3. MySQL:czy w instrukcji SELECT rozróżniana jest wielkość liter?

  4. Czy Python obsługuje przygotowane instrukcje MySQL?

  5. Najbardziej wydajny sposób przechowywania adresu IP w MySQL