JustPaste.it

Instrukcja SELECT

Instrukcja SELECT jest nazywana „sercem” SQL. Umożliwia ona znalezienie i obejrzenie danych na bardzo wiele sposobów.

Instrukcja SELECT jest nazywana „sercem” SQL. Umożliwia ona znalezienie i obejrzenie danych na bardzo wiele sposobów.

 

 Jest używana do analizy danych, dzięki niej możemy odpowiedzieć sobie na takie pytania jak: ile, jaki rodzaj, gdzie. Składnia polecenia SELECT wygląda następująco:

 

SELECT lista_kolumn

FROM tabela

WHERE warunki_wyszukiwania

Lista wyboru oznacza kolumny, które zamierzamy przeszukać. Lista tabel oznacza tabele które zawierają kolumny które chcemy przeszukiwać. Klauzula WHERE określa wiersze które są przedmiotem naszego zainteresowania. Tak samo SELECT, jak i WHERE mogą zawierać obliczenia, stałe i inne wyrażenia. Polecenia klauzuli SELECT, FROM i WHERE użyte w odpowiedni sposób mogą dać odpowiedz na postawione pytania oraz pozwalają je ograniczyć do konkretnego przedziału który nas interesuje.

Wykorzystując zapytanie SELECT mamy możliwość ograniczenia liczby wyświetlanych kolumn.

W wyniku możemy otrzymać same identyfikatory klienta, imiona i nazwiska a reszta kolumn zostanie pominięta (Patrz poniżej).

SELECT id klienta, nazwisko, imie     

FROM klienci

Wynik:

select

Tabela. Wynik zapytania SELECT

Są to wszyscy klienci znajdujący się w naszej bazie, natomiast co jeśli chcielibyśmy zawęzić wyszukiwanie do klientów zamieszkujących Warszawę. Wtedy należy uściślić zapytanie, stosując klauzule WHERE.

SELECT id klienta, nazwisko, imie     

FROM klienci

WHERE miasto = ‘Warszawa’

Wynik:

select-z-where
Tabela Wynik zapytania SELECT z klauzula WHERE

W tym momencie zostały wyświetlone tylko nazwiska klientów zamieszkujących Warszawę (Patrz tabela 3). Pozostałe wiersze odnoszące się do klientów mieszkających gdzie indziej zostały pominięte. Język SQL jest językiem o formacie swobodnym , musimy jednak przestrzegać kolejności w klauzuli SELECT w wymaganym porządku, w przeciwnym razie może wystąpić błąd składni.

Wybieranie wszystkich kolumn: SELECT *

Gwiazdka (*) w poleceniu SELECT na znaczenie specjalne. Zastępuje ona wszystkie nazwy kolumn w tabelach wymienionych na liście tabel. Kolumny wtedy będą wyświetlane w kolejności w jakiej zostały umieszczone w poleceniu CREATE TABLE. Takie polecenie najczęściej jest wykorzystywane kiedy chcemy zobaczyć wszystkie kolumny tabeli.

Ogólna składnia polecenia SELECT wygląda następująco:

SELECT *

FROM klienci

Polecenie SELECT * odnajduje wszystkie kolumny tworzące w danej chwili tabelę, więc kiedy dokonamy jakichkolwiek zmian w strukturach tabel, automatycznie zmodyfikowane zostaną wyniki polecenie SELECT *. Wpisywanie kolumn pojedynczo daje nam większą kontrolę nad wynikiem jaki chcemy osiągnąć lecz SELECT * oszczędza nam wpisywania. Przez to nie jesteśmy narażeni na powstanie błędów topograficznych. Polecenie SELECT * jest najczęściej jest przydatne kiedy przeglądany tabelę z niewielką ilością kolumn. Jest też użyteczne kiedy chcemy się szybko przyjrzeć jaką strukturę ma dana tabela.
Instrukcja ta pozwala wyszukać wszystkie kolumny z tabeli samochody i wyświetla je w kolejności w jakiej zostały zdefiniowane w chwili tworzenia tabeli.  Jako, że nie użyliśmy klauzuli WHERE, zatem zostaną wyświetlone wszystkie wiersze.

SELECT *

FROM samochody

Wynik:

select-gwiazdka
Tabela  Wynik zapytania SELECT *

Taki sam wynik uzyskalibyśmy wymieniając wszystkie nazwy kolumn tabeli po instrukcji SELECT (Patrz powyżej).

SELECT nr rejestracyjny, marka, model, rok produkcji, pojemność cm3, rodzaj paliwa, moc km

FROM samochody

Jeśli użyjemy gwiazdki przy zapytaniu dotyczącym wielu tabel wymusimy na SQL wyświetlenie wszystkich kolumn ze wszystkich tabel które wymieniliśmy na liście tabel. Jest możliwe także użycie na liście wyboru gwiazdki jak i nazw tabeli. Taka kombinacja jest przydatna w zapytaniach wykorzystujących wiele tabel, kiedy kwalifikujemy gwiazdkę za pomocą nazwy tabeli. Zapytanie wyszukujące informacje o samochodzie dla każdego numeru zamówienia dla identyfikatora id zamówienia z tabeli zamówienia. Wynik zawiera wszystkie kolumny z tabeli samochody i tylko jedną kolumnę z tabeli zamówienia (Patrz poniżej).

 SELECT id zamowienia, samochody.*

FROM zamowienie, samochody

WHERE zamowienie.nr rejestracyjny = samochody.nr rejestracyjny

Wynik:

select-z-where2

Tabela  Wynik zapytania SELECT z klauzula WHERE zawierający kolumnę z innej tabeli

Wybieranie określonych kolumn

Jeżeli chcemy wybrać podzbiór kolumn z danej tabeli, musimy po prostu wypisać te nazwy kolumn, które chcemy obejrzeć. Po nazwie każdej kolumny powinien znajdować się przecinek oddzielający ją od kolejnej kolumny. Kolejność wyświetlanie kolumn zależy tylko od tego w jakiej kolejności zostaną one wpisane (Patrz poniżej).

SELECT marka, model

FROM samochody

Wynik:

select-kolumna

Tabela  Wynik zapytania SELECT wybierającego określone kolumny

Wyrażenia zawierające więcej niż nazwy kolumn

Instrukcje SELECT umożliwiają dodawanie i manipulowanie wynikami w taki sposób aby można była nam je łatwiej przeszukiwać lub konstruować zapytania zawierające pytania. Możemy również stosować na liście wyborów ciągi znaków, funkcje dostarczane przez system z nazwami kolumn lub bez oraz działania matematyczne.

 Zmiana nazw kolumn i przypisywanie nazw wyrażeniom

Podczas wyświetlania wyników zapytania, każda kolumna ma przypisany domyślny nagłówek z nazwą zdefiniowaną przy tworzeniu bazy danych. Takie nazwy są często uproszczone aby można było je łatwo zapisać, czasami zdarza się też, że nie mówią one nic użytkownikom nieobeznanym z projektem. Taką sytuacje możemy łatwo rozwiązać nadając nadanie nagłówków kolumnom, abyśmy mogli w prosto i zrozumiale czytać dane (Patrz poniżej).  Aby zdefiniować nagłówek na taki który jest przez nas pożądany, musimy na liście wyboru w miejscu nazwy kolumny wpisać: nazwa kolumny as nagłówek kolumny.

Zmiana id klienta na Identyfikator klienta

SELECT id_klienta as Identyfikator_klienta, nazwisko

from klienci

Wynik:

select-naglowekTabela  Wynik zapytania SELECT ze zmianą nagłówka kolumny

Nagłówki kolumny nie są zazwyczaj ograniczone do rozmiaru kolumny danych . Nagłówek kolumny może być większy niż jego zdefiniowana długość. W nagłówkach zazwyczaj nie możemy używać cudzysłowów ani nie mogą też zawierać spacji. Jeżeli zastosujemy jedno z nich nasze zapytanie nie zostanie zrealizowane lub zostanie zgłoszony błąd.

Tekst w wyniku zapytania

W przypadku niektórych zapytań do dodanie niewielkiego tekstu może spowodować, że zapytanie stanie się dużo bardziej przejrzyste i ułatwi nam to jego zrozumienie (Patrz poniżej).

Jeżeli chcielibyśmy otrzymać na wydruku zamówienia „Wypożyczony samochód to:”. Aby uzyskać taką frazę w wyniku zapytania musimy wstawić napis w odpowiednim miejscu na liście wyboru. Musimy jednak pamiętać, że napis musi być w pojedynczym cudzysłowie aby system nie myślał, że jest to nazwa kolumny, ponadto musimy oddzielić nasza frazę przecinkiem od pozostałym elementów na liście wyboru.

 SELECT ‘Wypożyczony samochód to:’, marka, model

from samochody

Wynik:

select-z-tekstem

Tabela Wynik zapytania SELECT z tekstem w wyniku

Nasza fraza tworzy osobną kolumnę w wyświetlanym wyniku, lecz w żadnym stopniu nie wpływa to na strukturę naszej bazy danych.

Jeżeli chcemy możemy umieścić każde słowo w osobnej kolumnie (Patrz poniżej).

select ‘Wypożyczony’, ‘samochód’, ‘to:’, marka, model

from samochody

Wynik:

select-z-tekstem-wiele
Tabela. Wynik zapytania SELECT z tekstem w wyniku w wielu kolumnach

Operacje matematyczne na danych

W liście wyboru możemy wstawić informację jakie zostaną zawarte obliczenia na danych liczbowych i stałych.

Możemy użyć następujących operatorów arytmetycznych:

Symbol           Operacja

+                     dodawanie

–                      odejmowanie

/                       dzielenie

*                      mnożenie

Działania arytmetyczne- możemy je wykonywać w dowolnej kolumnie liczbowej. Dodatkowo możemy też wykorzystywać operator dzielenia modulo, oznaczamy go jako %. Daje on nam możliwość otrzymania reszty z dzielenia dwóch liczb całkowitych. Istnieje również możliwość wykonywania działań arytmetycznych na kolumnach zawierających dane typu data.

Wszystkie operatory mogą być stosowane na liście wyboru. Możemy ich używać w dowolnej kombinacji niezależnie do nazwy kolumny czy stałej numerycznej.

Możemy zobaczyć jak będą wyglądały ceny samochodów po podwyżce o 10 % (Patrz poniżej).

Select typ_samochodu, cena*1.10

from szczegoly zaplaty

Wynik:

select-z-operatoremTabela  Wynik zapytania SELECT z operatorem (*) mnożenia

Wybieranie tabel: lista tabel

Lista tabel obejmuje ona nazwy tabel, perspektyw lub jednych i drugich, zawierające kolumny wymienione na liście wyboru oraz w klauzuli WHERE. Nazwy tabel na liście tabel jak zawsze oddzielamy przecinkami. Klauzule FROM przedstawiamy w następujący sposób:

select lista wyboru

from [kwalifikator] {nazwa tabeli | nazwa perspektywy}

Możemy używać pełnych nazw tabel na liście tabel i perspektyw wraz z nazwami baz danych i właścicieli jako kwalifikatorów.  Korzystać z pełnych nazw powinniśmy w chwili kiedy pojawia się możliwość popełnienia błędu w wyborze właściwej nazwy.

W celu zaoszczędzenia pisania nazwom tabel możemy nadać aliasy. Nadając aliasy na liście tabel, podajemy alias po nazwie tabeli.

 Select k.id_klienta, k.nazwisko

from klienci k

Litera k poprzedzająca nazwę każdej kolumny na liście wyboru działa jako alternatywa dla pełnej nazwy tabeli.

Select klienci.id_klienta, klienci.nazwisko

from klienci

W przypadku zapytania zawierającego jedna tabele nie mamy tu mowy o niejednoznaczności, którą kolumnę wybrać. W takim przypadku użycie nazwy tabeli lub aliasu jako identyfikatora, zależy tylko do użytkownika. Aliasy są najbardziej użyteczne w zapytaniach które składają się z wielu tabel, ponieważ musimy rozróżniać kolumny z wielu tabel.

 

I-support