Jeśli Twoje kwerendy nie działają wystarczająco intensywnie, dodanie podstawowych instrukcji SQL może ułatwić ukierunkowanie wyników. Przyjrzyjmy się teraz kilku typom instrukcji SQL oraz klauzulom i częściom, które można edytować, aby uzyskać żądane wyniki.
W tym artykule
- Tworzenie instrukcji Select
- Dostosowywanie klauzuli SELECT
- Dostosowywanie klauzuli FROM
- Dostosowywanie klauzuli WHERE
- Dostosowywanie za pomocą operatora UNION
Tworzenie instrukcji Select
Instrukcja SQL select składa się z dwóch do trzech klauzul. Klauzula SELECT wskazuje bazie danych, gdzie należy szukać danych, i prosi o zwrócenie określonego wyniku.
Uwaga
Instrukcje SELECT zawsze kończą się znakiem średnika (;) na końcu ostatniej klauzuli lub w osobnym wierszu na końcu instrukcji SQL.
Poniższa instrukcja select monituje program Access o pobranie informacji z kolumn Adres e-mail i Firma, z tabeli Kontakty, a konkretnie z miejsca, w którym w kolumnie Miasto znajduje się wyraz "Szczecin".
Powyższe zapytanie zawiera trzy klauzule: SELECT, FROM i WHERE.
1. Klauzula SELECT zawiera listę kolumn zawierających dane, których chcesz użyć, i zawiera operator (SELECT), po którym występują dwa identyfikatory (Adres e-mail i Firma). Jeśli identyfikator zawiera spacje lub znaki specjalne (tak jak "Adres e-mail"), należy go ująć w nawiasy kwadratowe.
2. Klauzula FROM identyfikuje tabelę źródłową. W tym przykładzie znajduje się operator (FROM), po którym występuje identyfikator (Kontakty).
3. Klauzula WHERE jest klauzulą opcjonalną. W przykładzie występuje operator (WHERE), po którym występuje wyrażenie (Miasto="Szczecin").
Aby uzyskać więcej informacji na temat zapytań wybierających, zobacz Tworzenie prostej kwerendy wybierającej.
Poniżej przedstawiono listę typowych klauzul języka SQL:
| Klauzula SQL | Opis | Wymagane? |
|---|---|---|
| SELECT | Zwraca listę pół zawierających wskazane dane. | Tak |
| FROM | Zwraca listę tabel zawierających pola wymienione w klauzuli SELECT. | Tak |
| WHERE | Określa kryteria pól, które musi spełnić rekord, aby został uwzględniony w wynikach. | Nie |
| ORDER BY | Określa sposób sortowania wyników. | Nie |
| GROUP BY | W instrukcji SQL zawierającej funkcje agregujące zwraca listę pól, które nie są podsumowywane w klauzuli SELECT. | Tylko jeśli istnieją takie pola |
| HAVING | W instrukcji SQL zawierającej funkcje agregujące określa warunki stosowane do pól podsumowywanych w klauzuli SELECT. | Nie |
Każda klauzula SQL składa się z terminów. Poniżej przedstawiono listę niektórych typowych terminów języka SQL.
Dostosowywanie klauzuli SELECT
| Dostosowywanie | Przykład |
|---|---|
| , aby zobaczyć tylko unikatowe wartości. Użyj słowa kluczowego DISTINCT w klauzuli SELECT. |
Jeśli na przykład klienci są z kilku różnych oddziałów firmy i niektórzy mają ten sam numer telefonu, a numer telefonu ma być wymieniony tylko raz, klauzula SELECT może wyglądać następująco:SELECT DISTINCT [txtCustomerPhone] |
| Aby zmienić sposób wyświetlania identyfikatora w widoku arkusza danych w celu zwiększenia czytelności. W klauzuli SELECT należy użyć operatora AS (słowo kluczowe reprezentujące akcję lub modyfikujące akcję) z aliasem pola. Alias pola to nazwa przypisana do pola w celu zwiększenia czytelności wyników. |
SELECT [txtCustPhone] AS [Telefon klienta] |
Dostosowywanie klauzuli FROM
| Dostosowywanie | Przykład |
|---|---|
| W instrukcji wybierającej można użyć aliasu tabeli lub innej nazwy przypisywanej do tabeli. Alias tabeli jest przydatny, jeśli nazwa tabeli jest długa, szczególnie gdy występuje wiele pól o takich samych nazwach, ale pochodzących z różnych tabel. | Aby wybrać dane z dwóch pól o nazwie ID, z których jedno pochodzi z tabeli tblCustomer, a drugie z tabeli tblOrder: SELECT [tblCustomer]. [IDENTYFIKATOR], [tblOrder]. [IDENTYFIKATOR] Użyj operatora AS, aby zdefiniować aliasy tabel w klauzuli FROM: FROM [tblCustomer] AS [C], [tblOrder] AS [O] Tych aliasów tabel można użyć w klauzuli SELECT w następujący sposób:SELECT [C]. [IDENTYFIKATOR], [O]. [IDENTYFIKATOR] |
| Sprzężenia służą do łączenia par rekordów z dwóch źródeł danych w jeden wynik lub do określania, czy mają być uwzględniane rekordy z dowolnej tabeli, jeśli odpowiadający im rekord nie występuje w tabeli pokrewnej. Sprzęganie tabel tak, aby zapytanie połączyło elementy z tabel i wykluczało elementy, które nie istnieją wraz z nimi w drugiej tabeli |
Klauzula FROM może wyglądać następująco:FROM [tblCustomer] INNER JOIN [tblOrder] ON [tblCustomer]. [CustomerID]=[tblOrder]. [CustomerID] |
Informacje na temat używania sprzężeń
Istnieją dwa typy sprzężeń — sprzężenia wewnętrzne i sprzężenia zewnętrzne. Sprzężenia wewnętrzne są częściej stosowane w zapytaniach. W przypadku uruchomienia zapytania ze sprzężeniem wewnętrznym w wynikach zostaną wyświetlone tylko te elementy, dla których istnieje wspólna wartość w obu sprzężonych tabelach.
Sprzężenia zewnętrzne określają, czy dane mają być uwzględniane w przypadkach, gdy nie istnieje wspólna wartość. Sprzężenia zewnętrzne są kierunkowe, co oznacza, że można określić, czy uwzględniane mają być wszystkie rekordy z pierwszej tabeli określonej w sprzężeniu (nazywanej lewym sprzężeniem), czy też uwzględniane mają być wszystkie rekordy z drugiej tabeli w sprzężeniu (nazywanej prawym sprzężeniem). Sprzężenie zewnętrzne ma następującą składnię SQL:
FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 = table2.field2
Więcej informacji o używaniu sprzężeń w zapytaniach znajdziesz w artykule Sprzęganie tabel i zapytań.
Dostosowywanie klauzuli WHERE
Klauzula WHERE zawiera kryteria ułatwiające ograniczenie liczby elementów zwracanych w zapytaniu. Zobacz przykłady kryteriów zapytań i opis sposobu ich działania.
Przykładem sposobu dostosowywania podstawowej klauzuli WHERE jest ograniczenie wyników zapytania. Załóżmy, że chcesz zlokalizować numer telefonu klienta i pamiętasz tylko jego nazwisko jako Bagel. W tym przykładzie nazwiska są przechowywane w polu LastName, więc składnia SQL jest następująca:
WHERE [LastName]='Bagel'
Klauzula WHERE umożliwia też łączenie źródeł danych dla kolumn zawierających zgodne dane, ale różniące się typem. Jest to przydatne, ponieważ nie można utworzyć sprzężenia między polami o różnych typach danych. Używanie jednego pola jako kryterium drugiego pola ze słowem kluczowym LIKE . Jeśli na przykład chcesz użyć danych z tabel Składniki majątku i tabeli Pracownicy, tylko wtedy, gdy typ składnika majątku w polu Typ składnika majątku tabeli Składniki majątku ma numer 3 w polu Ilość w tabeli Pracownicy, klauzula WHERE będzie wyglądała następująco:
WHERE field1 LIKE field2
Ważne
Nie można określić kryteriów dla pola używanego z funkcją agregującą w klauzuli WHERE. Zamiast tego należy użyć klauzuli HAVING w celu określenia kryteriów dla pól agregowanych.
Dostosowywanie za pomocą operatora UNION
Operator UNION służy do wyświetlania połączonego widoku wyników kilku podobnych zapytań wybierających. Załóżmy na przykład, że baza danych zawiera tabelę Produkty i tabelę Usługi i obie zawierają trzy pola: oferta na wyłączność lub produkt lub usługa, cena, gwarancja lub rękojmia. Chociaż w tabeli Produkty są przechowywane informacje o rękojmi, a w tabeli Usługi są przechowywane informacje o gwarancji, podstawowe informacje są takie same. Za pomocą zapytania składającego można połączyć trzy pola z dwóch tabel w następujący sposób:
SELECT name, price, warranty, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee, exclusive_offer
FROM Services;
Po uruchomieniu kwerendy dane z każdego zestawu odpowiadających sobie pól są łączone w jedno pole wyjściowe. Aby uwzględnić zduplikowane wiersze w wynikach, użyj operatora ALL.
Uwaga
Instrukcja Select musi mieć taką samą liczbę pól wyjściowych, w tej samej kolejności i z identycznymi lub zgodnymi typami danych. Na potrzeby zapytania składającego typy danych Liczba i Tekst są zgodne.
Aby uzyskać więcej informacji na temat zapytań składających, zobacz temat Używanie zapytania składającego w celu wyświetlania zbiorczego wyniku wielu zapytań.