Aby rozpocząć pracę z językiem SQL - Structured Query Language w pierwszej kolejności zaimportujemy bazę danych studia. Mając zapisany plik studia.sql zaimportujemy go do phpMyAdmin za pomocą polecenia import.
Można to również wykonać za pomocą konsoli wydając polecenie source ścieżka_do_pliku_sql
Jeżeli przekopiujemy plik studia.sql do katalogu bin, to nie musimy podawać całej ścieżki tylko nazwę pliku.
source studia.sql;
Przechodzimy do konsoli MySQL i wpisujemy następujące polecenia:
USE studia;
SHOW tables;
Składnia polecenia SELECT
SELECT kolumna/y
FROM tabela/e
WHERE warunek/nki
GROUP BY kolumna/y
HAVING
ORDER BY kolumna/y
LIMIT
SELECT - oznacza wybierz poszczególne kolumny
FROM - z tabeli
WHERE - gdzie warunki
Przy warunkach korzystamy z operatorów =, >, <, >=, <=, <>, LIKE.
Operator LIKE wymaga krótkiego wyjaśnienia.
Operator LIKE służy do wyszukiwania odpowiednich wzorców w rekordach tabeli zawężając wyświetlane wyniki.
Przykład wykorzystania operatora LIKE:
SELECT * FROM ksiazki WHERE tytul LIKE "%C#%";
Efektem wykonania się tego zapytania będą wszystkie rekordy tabeli książki, gdzie w tytule znajduje się "C#" czy na początku, w środku lub na końcu tytułu. Wykorzystano tu znak (%), który oznacza nieokreślony ciąg znaków. Istnieje jeszcze jeden znak (_), który oznacza pojedynczy znak.
Przykład: Wypisz wszystkie rekordy, gdzie autor ma w nazwisku drugą literę a.
SELECT * FROM ksiazki WHERE autor LIKE "_a%";
Klauzula DISTINCT powoduje usunięcie powtarzających się wierszy.
Proszę wyświetlić z jakich województw są studenci.
SELECT wojewodztwo FROM student;
W wyniku wykonania się instrukcji otrzymamy następujące wyniki:
Przykład zastosowania klauzuli DISTINCT. Gdy zastosujemy klauzulę DISTINCT wynik będzie inny:
SELECT DISTINCT wojewodztwo FROM student;
Widzimy, że po zastosowaniu klauzuli DISTINCT wszystkie wiersze wyświetlone są bez powtórzeń.
COUNT() - to funkcja agregująca posiadająca dwie odmiany - COUNT(*) oraz COUNT(kolumna). Pierwsza z nich zwraca ilość wierszy w tabeli. Druga werjsa zlicza tylko te wystąpienia, gdzie wartość kolummy jest różna od NULL. Funkcja agregująca COUNT może posiadać dwie opcjonalne klauzule GROUP BY oraz HAVING.
Klauzula GROUP BY stanowi dodatkowy warunek, który muszą spełniać wiersze. GROUP BY wykorzystaywana jest tylko z funkcjami agregującymi i działa na kolumnach zagregowanych.
Opcjonalna klauzula HAVING pozwala wybrać wiersze, w których wynik działania COUNT(*) spełnia podany warunek.
Przykład:
SELECT count(id_student) AS "Liczba studentów", nazwa FROM student, wydzial WHERE student.id_wydzial = wydzial.id_wydzial GROUP By wydzial.nazwa;
Wykorzystanie klauzuli HAVING:
SELECT COUNT(id_student) AS "Liczba studentów", wydzial.nazwa FROM student, wydzial WHERE student.id_wydzial = wydzial.id_wydzial GROUP BY wydzial.nazwa HAVING COUNT(id_student) > 2 ORDER BY wydzial.nazwa DESC;
Klauzula ORDER BY służy do sortowania wyników według zadanej kolumny rosnąco (ASC) lub malejąco (DESC).
Przykład:
SELECT nazwisko FROM student ORDER BY rok_urodzenia ASC;
Klauzula LIMIT służy do ograniczenia ilości wyświetlanych wyników.
Przykład:
SELECT nazwisko FROM student ORDER BY rok_urodzenia ASC LIMIT 1;
Alias to inaczej inna nazwa tabeli, kolumny.
Przykład:
SELECT s.imie AS "Imię", s.nazwisko AS "Nazwisko", w.nazwa AS "Wydział" FROM student AS s, wydzial AS w WHERE s.id_student = 1 AND s.id_wydzial = w.id_wydzial;
W przykładzie tym wykorzystaliśmy aliasy w dwóch miejscach - przy nazwie kolumn oraz przy nazwie tabel. Widzimy, że zastosowanie aliasów ułatwia pracę oraz ładnie można zapisać wyniki wyszukiwania.
Pokaż imię i nazwisko studenta o id = 8.
SELECT imie, nazwisko FROM student
WHERE id_student = 8;
2. Pokaż imię i nazwisko wszystkich studentów z województwa małopolskiego.
SELECT imie, nazwisko FROM student WHERE wojewodztwo = "małopolskie";
3. Pokaż wszystkie dane studentów z pierwszego roku.
SELECT * FROM student
WHERE rok_studiow = 1;
4. Pokaż wszystkie dane studentów i posortuj je rosnąco po kolumnie nazwisko.
SELECT * FROM student
ORDER BY nazwisko AS C;
5. Wyświetl imię i nazwisko oraz miasto urodzenia wszystkich studentów z województwa małopolskiego.
SELECT imie, nazwisko, miejscowosc FROM student
WHERE wojewodztwo = "małopolskie";
6. Wyświetl id_student, imię, nazwisko studentów urodzonych w latach 1997 - 1999.
SELECT id_student, imie, nazwisko FROM student
WHERE rok_urodzenia BETWEEN 1997 AND 1 999;
7. Wyświetl nazwisko najstarszego studenta
SELECT nazwisko FROM student
ORDER BY rok_urodzenia ASC LIMIT 1;
Złożone zapytanie ponieważ operuje na co najmniej dwóch tabelach. W poniższym przykładzie wykorzystamy tą samą bazę danych o nazwie studia, ale będziemy korzystać z trzech tabel w celu uzyskania potrzebnych informacji.
1
Pokaż imię, nazwisko wszystkich studentów z Wydziału Zarządzania.
SELECT imie, nazwisko FROM student, wydzial
WHERE student.id_wydzial = wydzial.id_wydzial
AND wydzial.id_wydzia l = 3;
2. Pokaż imię, nazwisko i miejscowość wszystkich studentów, którzy wybrali kierunek Informatyka Stosowana.
SELECT imie, nazwisko, miejscowosc FROM student, kierunek
WHERE student.id_kierunek = kierunek.id_kierunek
AND kierunek.id_kierunek = 4;
3. Pokaż wszystkie kierunki z Wydziału Informatyki.
SELECT kierunek.nazwa FROM kierunek, wydzial
WHERE kierunek.id_wydzial = wydzial.id_wydzial
AND wydzial.id_wydzial = 1;
4. Pokaż po ilu studentów jest na każdym wydziale.
SELECT COUNT(id_student) AS "Liczba studentów", nazwa
FROM student, wydzial
WHERE student.id_wydzial = wydzial.id_wydzial
GROUP By wydzial.nazwa;
5. Pokaż wszystkie wydziały, gdzie jest więcej niż 2 studentow posortowane malejąco po nazwie wydziału.
SELECT COUNT(id_student) AS "Liczba studentów", wydzial.nazwa
FROM student, wydzial
WHERE student.id_wydzial = wydzial.id_wydzial
GROUP BY wydzial.nazwa HAVING COUNT(id_student) > 2
ORDER BY wydzial.n
W celu wykonania zadań sprawdzających należy utworzyć bazę danych biblioteka i zaimportować biblioteka.sql do bazy.
Wyświetl książki o indeksach od 90 - 110.
Wyświetl wszystkie książki do języka C#.
Wyświetl wszystkie książki z wydawnictwa Helion posortowane po tytule rosnąco.
Wyświetl wszystkie książki autora Liberty Jesse.
Wyświetl ile jest wszystkich książek.
Wyświetl po ile książek ma każde wydawnictwie.
Wyświetl wszystkie książki, których tytuł zaczyna się od słowa „HTML”.
Wyświetl wszystkie książki wydane przez wydawnictwo „O’Reilly”.
Wyświetl wszystkich autorów bez powtórzeń.
Wyświetl książki, których autor ma na imię „Matthew”.
Wyświetl książki posortowane malejąco według numeru id_ksiazki.
Wyświetl książki, w których tytule znajduje się słowo „PHP”.
Wyświetl tytuły i wydawnictwa książek, które mają identyfikator większy niż 200.
Wyświetl liczbę książek wydanych przez wydawnictwo „Helion”.
Jakie książki wypożyczyła pani Izabela Skała
Ile książek wypożyczyła pani Izabela Skała.
Wyjmij dane klientow, ktorzy wypożyczyli książkę pt. Responsive Web Design. Projektowanie elastycznych witryn w HTML5 i CSS3.
Kto i kiedy wypożyczał książki wydawnictwa Wrox Press
Wyświetl wszystkich studentów, którzy wypożyczyli książki wydane przez „Addison-Wesley”.
Wyświetl, ile książek wypożyczyli studenci z województwa „małopolskie”.
Wyświetl tytuły książek wypożyczonych przez studentów, którzy mają status „urlop”.
Wyświetl nazwiska studentów oraz tytuły książek, które wypożyczyli w październiku 2018.
Wyświetl studentów, którzy wypożyczyli więcej niż jedną książkę.
Wyświetl najwcześniej wypożyczoną książkę (tytuł, imię i nazwisko studenta oraz datę wypożyczenia).
Wyświetl listę studentów, którzy nie wypożyczyli żadnej książki.
Wyświetl tytuły książek wypożyczonych przez studentów urodzonych przed 1998 rokiem.
Do czego służy zapytanie SELECT?
Jak można posortować wyniki po jakiejś kolumnie rosnąco?
Co oznacza klauzula LIKE?
Do czego w zapytaniu SELECT służy BETWEEN?
Co oznacza LIMIT 1?
W jaki sposób łączymy dwie lub więcej tabel ze sobą?
Co oznacza klauzula GROUP BY?
Co oznacza klauzula HAVING?
Co oznacza klauzula DISTINCT? Podaj przykład.
Co to są aliasy i jak je zastosować?