Database
 sql >> Baza danych >  >> RDS >> Database

SQL SELECT dla początkujących

SELECT Instrukcja jest prawie bez wątpienia najczęściej używaną instrukcją w SQL.

SELECT Instrukcja służy do pobierania danych z bazy danych. Możesz określić, które wiersze chcesz zwrócić i które kolumny.

Przykład

Oto przykład demonstrujący SELECT oświadczenie.

SELECT * 
FROM Pets;

Wynik:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 1       | 2           | 3         | Fluffy    | 2020-11-20 |
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
| 7       | 3           | 2         | Bark      | NULL       |
| 8       | 2           | 4         | Meow      | NULL       |
+---------+-------------+-----------+-----------+------------+

W tym przykładzie użyliśmy gwiazdki (* ) symbol wieloznaczny, aby zwrócić wszystkie kolumny. Użyliśmy również FROM klauzula określająca, z której tabeli mają być pobierane dane.

Więc to zapytanie zwraca wszystkie wiersze i wszystkie kolumny z Pets tabela.

Określ kolumny

Możesz określić kolumny, które chcesz zwrócić.

Aby to zrobić, zastąp symbol wieloznaczny gwiazdką nazwami kolumn, oddzielonymi przecinkami, w kolejności, w jakiej mają być zwracane.

SELECT PetId, PetName, DOB 
FROM Pets;

Wynik:

+---------+-----------+------------+
| PetId   | PetName   | DOB        |
|---------+-----------+------------|
| 1       | Fluffy    | 2020-11-20 |
| 2       | Fetch     | 2019-08-16 |
| 3       | Scratch   | 2018-10-01 |
| 4       | Wag       | 2020-03-15 |
| 5       | Tweet     | 2020-11-28 |
| 6       | Fluffy    | 2020-09-17 |
| 7       | Bark      | NULL       |
| 8       | Meow      | NULL       |
+---------+-----------+------------+

Powszechnie uważa się, że dobrą praktyką jest robienie tego w ten sposób i zwracanie tylko tych kolumn, których faktycznie potrzebujesz. Użycie symbolu wieloznacznego gwiazdki do zwrócenia wszystkich kolumn może mieć negatywny wpływ na wydajność, zwłaszcza w przypadku większych baz danych.

Określ wiersze

Istnieje wiele sposobów filtrowania wyników tylko do tych wierszy, które Cię interesują. Najczęstszym sposobem jest użycie WHERE klauzula. Ta klauzula pozwala określić warunek, który musi spełnić wiersz, aby się kwalifikować.

Oto przykład do zademonstrowania.

SELECT PetId, PetName, DOB 
FROM Pets
WHERE PetName = 'Fluffy';

Wynik:

+---------+-----------+------------+
| PetId   | PetName   | DOB        |
|---------+-----------+------------|
| 1       | Fluffy    | 2020-11-20 |
| 6       | Fluffy    | 2020-09-17 |
+---------+-----------+------------+

W naszym przypadku były dwa wiersze, które spełniały nasz warunek wyszukiwania.

Nasz warunek wyszukiwania używa operatora równości (= ), aby określić, że wartość PetName kolumna musi odpowiadać określonej wartości (Fluffy ) dokładnie.

Istnieje wiele innych operatorów, których możesz użyć w warunkach wyszukiwania. Na przykład możesz użyć LIKE operator zwracający zwierzęta, których imię zaczyna się od F lub Fluff lub cokolwiek.

Możesz dodać więcej warunków do WHERE klauzula za pomocą operatorów, takich jak AND i OR operatorów.

Oto przykład.

SELECT PetId, PetName, DOB 
FROM Pets
WHERE PetName = 'Fluffy'
OR DOB < '2020-01-01';

Wynik:

+---------+-----------+------------+
| PetId   | PetName   | DOB        |
|---------+-----------+------------|
| 1       | Fluffy    | 2020-11-20 |
| 2       | Fetch     | 2019-08-16 |
| 3       | Scratch   | 2018-10-01 |
| 6       | Fluffy    | 2020-09-17 |
+---------+-----------+------------+

W tym przykładzie zwróciliśmy wszystkie wiersze, w których imię zwierzaka to Puszysty lub gdzie data urodzenia zwierzaka (określona w DOB kolumna) jest mniejsza niż określona data. Użyliśmy operatora mniej niż (< ), aby to określić.

Zwracanie danych spoza tabeli

SELECT Instrukcja może być również używana do zwracania danych, które nie są przechowywane w tabeli. Na przykład jest to całkowicie legalne:

SELECT 'Hey there!';

Wynik:

+--------------------+
| (No column name)   |
|--------------------|
| Hey there!         |
+--------------------+

Zauważ, że kiedy to robimy, kolumna nie ma nazwy. Moglibyśmy użyć aliasu, aby nadać nazwę wynikowemu polu.

Oto kilka innych przykładów wybierania danych spoza tabeli i podawania aliasu do każdego zwróconego pola:

SELECT 
    2 + 3 AS "2 + 3",
    'Fluffy' + ' ' + 'Smith' AS FullName,
    SYSDATETIME() AS "Date/time";

Wynik:

+---------+--------------+-----------------------------+
| 2 + 3   | FullName     | Date/time                   |
|---------+--------------+-----------------------------|
| 5       | Fluffy Smith | 2020-12-04 23:58:55.8483734 |
+---------+--------------+-----------------------------+

Oto krótkie podsumowanie:

  • Pierwsza kolumna po prostu dodała dwie liczby.
  • Druga kolumna łączyła trzy ciągi (w tym znak spacji). W razie potrzeby można również łączyć ciągi z liczbami.
  • W trzeciej kolumnie użyto SYSDATETIME() funkcja zwracająca aktualną datę i godzinę. Ta funkcja jest dostępna w SQL Server. Inne DBMS mają swoje własne funkcje daty i czasu. Zobacz Funkcje Data/Czas SQLite, Funkcje Daty/Czasu SQL Server oraz Funkcje Daty/Czasu PostgreSQL, aby zapoznać się z listą funkcji daty i czasu dostępnych w tych DBMS.

Podzapytania

Możliwe jest posiadanie wielu SELECT oświadczenia w jednym zapytaniu. Możemy to zrobić za pomocą podzapytania.

SELECT 
    PetTypeId,
    PetType
FROM PetTypes
WHERE PetTypeId IN ( SELECT PetTypeId FROM Pets );

Wynik:

+-------------+-----------+
| PetTypeId   | PetType   |
|-------------+-----------|
| 1           | Bird      |
| 2           | Cat       |
| 3           | Dog       |
+-------------+-----------+

W tym przykładzie użyliśmy IN operator, aby określić podzapytanie. To podzapytanie wybrało dane z innej tabeli, a IN operator powiązał to z powrotem z zapytaniem zewnętrznym.

Porządkowanie wyników

Możesz użyć ORDER BY klauzula sortowania wyników.

Na przykład moglibyśmy posortować poprzednie wyniki według PetTypeId kolumna w kolejności malejącej:

SELECT 
    PetTypeId,
    PetType
FROM PetTypes
WHERE PetTypeId IN ( SELECT PetTypeId FROM Pets )
ORDER BY PetTypeId DESC;

Wynik:

+-------------+-----------+
| PetTypeId   | PetType   |
|-------------+-----------|
| 3           | Dog       |
| 2           | Cat       |
| 1           | Bird      |
+-------------+-----------+

Zobacz SQL ORDER BY Klauzula dla początkujących, aby uzyskać więcej przykładów i szczegółowe wyjaśnienie.

Bardziej zaawansowane SELECT Oświadczenia

SELECT Instrukcja jest bardzo prostą instrukcją, ale może być używana do tworzenia bardzo złożonych zapytań.

Oto zapytanie, które jest nieco bardziej złożone niż poprzednie.

SELECT 
    PetTypes.PetType,
    COUNT(Pets.PetTypeId) AS Count
FROM Pets 
LEFT JOIN PetTypes 
ON Pets.PetTypeId = PetTypes.PetTypeId
GROUP BY PetTypes.PetType
ORDER BY Count DESC;

Wynik:

+-----------+---------+
| PetType   | Count   |
|-----------+---------|
| Dog       | 4       |
| Cat       | 3       |
| Bird      | 1       |
+-----------+---------+

W świecie zapytań SQL jest to nadal dość proste, jednak zawiera wiele elementów często spotykanych w bardziej złożonych zapytaniach.

Na przykład to zapytanie używa sprzężenia do pobierania danych z wielu tabel. Używa również GROUP BY klauzula podziału wierszy na grupy.

Zobacz SQL GROUP BY Klauzula dla początkujących, aby uzyskać więcej przykładów GROUP BY klauzula.

Zobacz samouczek SQL Joins, aby zobaczyć, jak pobrać dane z wielu tabel i zwrócić je jako jeden zestaw wyników.

SELECT INTO Oświadczenie

Niektóre DBMS obsługują SELECT INTO oświadczenie. Różni się to nieco od poprzednich przykładów, ponieważ wpływa na dane w bazie danych.

SELECT INTO instrukcja tworzy nową tabelę i wstawia do niej dane z innej tabeli.

Zasadniczo wygląda to tak:

SELECT * INTO Table2
FROM Table1;

W tym przykładzie tworzymy nową tabelę o nazwie Table2 i wstaw wszystkie dane z Table1 w tym. Table2 będzie miał taką samą definicję jak Table1 .

Zobacz SQL SELECT INTO Oświadczenie, aby uzyskać więcej przykładów.

Jak wspomniałem, nie wszystkie DBMS wspierają to stwierdzenie. Jeśli Twój DBMS nie obsługuje SELECT INTO spróbuj użyć CREATE TABLE ... AS SELECT oświadczenie zamiast.

Wypowiedzi te w ramach swojej operacji tworzą nową tabelę. Aby wstawić dane do tabeli, która już istnieje, spróbuj użyć INSERT INTO ... SELECT oświadczenie zamiast.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego same statystyki oczekiwania nie wystarczą

  2. Najlepsze blogi dotyczące baz danych do obserwowania

  3. RowGen v3 automatyzuje generowanie danych testowych bazy danych

  4. Webinarium Plan Explorer 3.0 — próbki i pytania i odpowiedzi

  5. Jak usunąć bazę danych w cPanel?