Zapytania SQL

19
Zapytania SQL

description

Zapytania SQL. Kilka dodatkowych poleceń. SHOW FIELDS FROM ksiazka; - pokazuje pole z tabeli … ALTER TABLE ksiazka ADD imie VARCHAR(25); - dodaje kolumnę imię do tabeli książka ALTER TABLE ksiazka CHANGE naasswizko nazwisko VARCHAR(25); - zmiana nazwy kolumny w tabeli - PowerPoint PPT Presentation

Transcript of Zapytania SQL

Page 1: Zapytania SQL

Zapytania SQL

Page 2: Zapytania SQL

Kilka dodatkowych poleceń

SHOW FIELDS FROM ksiazka; - pokazuje pole z tabeli …

ALTER TABLE ksiazka ADD imie VARCHAR(25); - dodaje kolumnę imię do tabeli książka

ALTER TABLE ksiazka CHANGE naasswizko nazwisko VARCHAR(25);- zmiana nazwy kolumny w tabeli

ALTER TABLE ksiazka DROP nazwisko; - usuwanie z tabeli książka kolumny nazwisko

Page 3: Zapytania SQL

Sortowanie

SELECT * FROM ksiazka ORDER BY nazwisko; - wyświetlanie po nazwisku

SELECT * FROM ksiazka ORDER BY nazwisko ASC;- ASC oznacza sortowanie rosnąco według podanego pola

SELECT * FROM ksiazka ORDER BY nazwisko DESC;- DESC natomiast oznacza sortowanie malejące

SELECT * FROM pracownicy LIMIT 2; - spowoduje wyświetlenie się dwóch pierwszych rekordów

SELECT * FROM pracownicy LIMIT 2, 5; - spowoduje wyświetlenie się rekordów od … do

Page 4: Zapytania SQL

Sortowanie

SELECT * FROM pracownicy WHERE nazwisko LIKE 'K%';- spowoduje wyświetlenie się wszystkich pracowników których nazwisko zaczyna się na literę K

Dzięki zastosowaniu znaków globalnych (% i _) istnieje możliwość przyrównania do dowolnego ciągu znaków. Znak '%' (procent) zastępuje dowolną ilość znaków. Znak '_' (podkreślenie) zastępuje dokładnie jeden znak

SELECT imie, nazwisko FROM pracownicy WHERE nazwisko LIKE 'Kowalsk_';

Page 5: Zapytania SQL

Sortowanie

SELECT * FROM ksiazka WHERE nazwisko = ‘nowak' AND imie = ‘jan' AND telefon = ‘666-666-666';

SELECT * FROM ksiazka WHERE nazwisko = ‘nowak' OR imie = jan';

SELECT * FROM ksiazka WHERE id BETWEEN ‘1' AND ‘10';

SELECT * FROM ksiazka WHERE id >= ‘1' AND id <= ‘10';

Page 6: Zapytania SQL

Projekcja

Page 7: Zapytania SQL

Wyróżnienia

„Odczytaj wszystkie krotki z tabeli pracownicy; z każdej z tych krotek wyciągnij wartości atrybutów IMIE, NAZWISKO i PLACA_POD; IMIE i NAZWISKO skonkatenuj ze sobą i spacją (‘ ‘), a PLACE_POD pomnóż razy 12; wyniki tych operacji zwróć w relacji wynikowej.”.

Page 8: Zapytania SQL

Wyróżnienia – stary SQLSELECT CONCAT(`nazwa_kolumny1`,`nazwa_kolumny2`)FROM `osoby`

Przykład CONCAT()Wyświetl tekst powstały z połączenia imienia z nazwiskiem

SELECT CONCAT(`imię`,`nazwisko`)FROM `osoby`

Page 9: Zapytania SQL

Wyróżnienia

Operatory:‘*’ - operator to zwykły operator mnożenia. Prócz operatora mnożenia, na danych liczbowych (takich jak pensja), można również stosować operatory: dodawania (‘+’), odejmowania (‘-’), dzielenia (‘/’) i zmiany znaku (‘-’), oraz operatory zmiany priorytetu (‘(‘ i ‘)’). Stąd, wyrażenie PLACA_POD*12 oznacza, że dla każdej kolejno odczytywanej krotki reprezentującej pracownika z bazy danych, obliczy i zwróci jego roczną płacę (atrybut PLACA_POD reprezentuje płacę miesięczną).

‘||’ - operatorem konkatenacji. W poleceniu przedstawionym naslajdzie wykorzystano go w wyrażeniu IMIE||' '||NAZWISKO. Użycie tego wyrażeniaoznacza, że dla każdej kolejnej krotki wykonuje, i zwraca w relacji wynikowej,konkatenację imienia, spacji i nazwiska pracownika. Należy tutaj zwrócić uwagę na fakt,iż stałe typu łańcuchowego są w języku SQL otaczane apostrofami (np. stała ‘ ‘ wwyrażeniu IMIE||' '||NAZWISKO oznaczająca spację). W przeciwieństwie do stałych typułańcuchowego, stałe typu liczbowego nie wymagają żadnych dodatkowych oznaczeń.Podsumowując, nieco bardziej rozbudowana wersja polecenia SELECT wyglądanastępująco:SELECT {wyrażenie1, wyrażenie2,.....} FROM {nazwa relacji};

Page 10: Zapytania SQL

Aliasy

„Odczytaj wszystkie krotki z tabeli pracownicy; z każdej z tych krotek wyciągnij wartości atrybutów IMIE, NAZWISKO i PLACA_POD; IMIE i NAZWISKO skonkatenuj ze sobą i spacją (‘ ‘), a PLACE_POD pomnóż razy 12; wyniki tych operacji zwróć w relacji wynikowej.”.

Page 11: Zapytania SQL

Sortowanie – współpraca tabel

Jeśli chcemy wyświetlić dane z wielu tabel konieczne jest określenie sposobu łączenia krotek występujących w tych tabelach. W domyślnej postaci tworzony jest bowiem iloczyn kartezjański wszystkich krotek, co zazwyczaj nie jest pożądane.

Rozwiązaniem tego problemu może być określenie warunku, który będzie wymagał aby wartości kolumn w dwóch tabelach były identyczne (np. Osoby.PESEL = Adresy.PESEL). To rozwiązanie nie jest jednak doskonałe, gdyż w wyniku zostaną pominięte krotki, których wartość (lub zbiór wartości) dla łączonych atrybutów nie występuje w łączonej tabeli.

W języku SQL występuje specjalna klauzula JOIN, która pozwala rozwiązać problem tego rodzaju. Składnia polecenia SELECT z klauzulą JOIN jest następująca:

SELECT * FROM table1 JOIN table2 ON condition ...

Page 12: Zapytania SQL

Sortowanie – współpraca tabel

SELECT * FROM table1 JOIN table2 ON condition ...

condition określa sposób łączenia krotek. Zazwyczaj w warunku będzie wymagało się, żeby wartość kolumny w jednej tabeli była taka sama jak wartość kolumny w innej tabeli (table1.columnA = table2.columnB). Występują trzy wersje klauzuli JOIN:

INNER

LEFT [OUTER]

RIGHT [OUTER]

Page 13: Zapytania SQL

Sortowanie – współpraca tabel

SELECT * FROM table1 JOIN table2 ON condition ...

Page 14: Zapytania SQL

Sortowanie – współpraca tabel

SELECT * FROM table1 JOIN table2 ON condition ...W przypadku INNER JOIN dana krotka zostanie uwzględniona wyłącznie w wypadku, gdy w drugiej tabeli występuje krotka (lub krotki), których wartość dla kolumn określonych w warunku jest taka sama. Klauzula INNER jest opcjonalna (tzn. klauzula JOIN bez modyfikatorów działa jak INNER JOIN).

Dla zapytania:

SELECT Imie, Nazwisko, Osoby.PESEL, Adresy.PESEL, Ulica, Nr FROM Osoby JOIN Adresy ON Osoby.PESEL = Adresy.PESEL

otrzymamy wynik:

Page 15: Zapytania SQL

Sortowanie – współpraca tabel

SELECT * FROM table1 JOIN table2 ON condition ...W przypadku LEFT JOIN dana krotka zostanie uwzględniona w wyniku, nawet jeżeli w drugiej tabeli nie będzie krotek, które mogłyby być z nią połączone (dla których były spełniony warunek ON…).

Dla zapytania:

SELECT Imie, Nazwisko, Osoby.PESEL, Adresy.PESEL, Ulica, Nr FROM Osoby LEFT JOIN Adresy ON Osoby.PESEL = Adresy.PESEL

otrzymamy wynik:

Page 16: Zapytania SQL

Sortowanie – współpraca tabelSELECT * FROM table1 JOIN table2 ON condition ...W przypadku RIGHT JOIN uwzględniane są krotki z drugiej tabeli, które nie posiadają odpowiedników wśród krotek tabeli pierwszej.Dla zapytania:

SELECT Imie, Nazwisko, Osoby.PESEL, Adresy.PESEL, Ulica, Nr FROM Osoby RIGHT JOIN Adresy ON Osoby.PESEL = Adresy.PESEL

otrzymamy wynik:

Pozostałe klauzule opisane wyżej (np. ORDER BY, LIMIT, etc.) działają również w przypadku łączenia wielu tabel.

Page 17: Zapytania SQL

Aktualizowanie danych

UPDATE table1 SET table1.col = table2.col1 FROM table2 WHERE table2.oldCol = table1.col

Page 18: Zapytania SQL

Ćwiczenia do wykonaniaProszę Państwa postępy w wykonywaniu ćwiczeń dokumentować co jakiś czas w pliku txt (proszę tego pilnować, konsola ma ograniczoną długość więc wpisane przez Państwa komendy po jakimś czasie znikają). Wydrukowany plik należy dostarczyć na następne laboratorium.

1. Dodać 2 kolumny do pierwszej tabeli 2. Zmienić nazwę kolumny z takiej jaką Państwo dodali, odpowiednio na „dodana_1” i „dodana_2” 3. Usunąć kolumnę „dodana_2”4. Skopiować kolumnę 2 z tabeli2 do kolumny „dodana_1” ,wyświeltić nowo powstałą tabelę (skopiować od pliku)5.Wykonać po 5 różnych zapytań z poleceniami ORDER BY … ORDER BY ASC …DESC oraz LIMIT (plik)6. Wykonać klauzurę 5 razy (dla różnych wywołań )LIKE dla każdej z tekstowych kolumn w 1 tabeli tak aby klauzura ta zawierała znacznik % oraz _ (plik)7. Polecenie wyżej powtórzyć używając 1 raz dla każdej kolumny teksotwej polecenia LIKE i LIMIT jednoczenie, ustawiając LIMIT na mniejszą wartość niż normalnie wyświetlana.

Page 19: Zapytania SQL

Ćwiczenia do wykonania8. Użyć warunków WHERE AND , WHERE OR , WHERE BETWEEN 5razy dla wybranej tabeli 9. Wyświetlić z 1 tabeli kolumnę 1 i 3 z pomięciem 2 a następnie 2 i 4 z pomięciem 3.10.Wyróżnić z tabeli 1, pierwszą i druga kolumnie w jednej nowej kolumnie a obok niezmienioną kolumnę 3 z tabeli 111. Użyć polecenia AS dla nowo powstałych kolumn z polecenia 10. 12. Współpraca między tabelami :

A) Wyświetlenie wszystkiego z tabeli 1 i 2 dla wspólnych wierszy z tożsamych kolumn z pominięciem tych kolumn

B) Operację powtarzamy dla tabeli 2 i 3C) Powtórz operację dodając polecenie WHERE i ORDER BYD) Powtarzamy operację używając polecenia LIKE