Systemy baz danych
4. Manipulowanie danymi w relacyjnych bazach danych (język SQL)
Funkcje realizowane przez SQL:
§ definicja struktury bazy danych
§ odczyt danych
§ modyfikacja danych
§ kontrola dostępu
§ współużytkowanie danych
§ integralność danych.
Instrukcje języka SQL są wkładane do programu napisanego w innych językach programowania jak
pascal, C, COBOL. .
SQL używany może być:
§ jako element aplikacji i narzędzi programowych,
§ jako interakcyjny język zapytań
§ jako język komunikacji pomiędzy różnymi DBMS
Instrukcja SELECT
Służy do przeglądania bazy danych. Składa się z 6 fraz, z których dwie pierwsze są obowiązkowe:
Ø SELECT
Ø FROM
Ø WHERE
Ø GROUP BY
Ø HAVING
Ø ORDER BY
Fraza SELECT – służy do wyspecyfikowania kolumn w tablicy odpowiedzi.
Fraza FROM – służy do podania nazw tablic.
Np.: SELECT IMIE, NAZWISKO, DATA_UR FROM STUDENCI
Wybór wszystkich kolumn z tablicy:
SELECT * FROM STUDENCI
Fraza WHERE – służy do eliminowania wierszy w tablicy odpowiedzi przy pomocy warunku przeszukiwania. Podstawowe warunki to:
Ø Predykat porównania (operatory: =,>,<, …)
Ø Predykat zakresu (BETWEEN … AND
Ø Predykat występowania (IN)
Ø Predykat wzoru (LIKE)
Ø Predykat wartości pustych (IS NULL)
Ø Predykat istnienia (EXISTS)
Warunki złożone buduje się przy pomocy operatorów logicznych (AND, OR i NOT) lub zdań podwyboru (subquery).
Predykat porównania - przykłady:
§ SELECT NAZWA_TOWAR, CENA FROM PRODUKTY WHERE CENA> 200
§ SELECT *.
FROM PRODUKTY: WHERE ROK_PROD ='1995'
Predykat zakresu - przykład:
§ SELECT NAZWA_TOWAR, CENA
FROM PRODUKTY
WHERE CENA BETWEEN 200 AND 400
Predykat występowania - przykład:
SELECT NR_STUDENTA, NAZWISKO
FROM STUDENCI
WHERE NR_STUDENTA IN (240, 354, 521)
Predykat wzorca -wykorzystywane są dwa znaki
specjalne:. .
§ % - zastępuje dowolny,ciąg znaków
§ _ - zastępuje pojedynczy znak.
Przykład:
SELECT NR_PRODUKTU,NAZWA, CENA
WHERE NAZWA LlKE 'HP%'
Predykat wartości pustych - przykład:
FROM STUDENCI .
WHERE OCENA IS NULL
Złożone wyrażenia logiczne - przykład:
SELECT NAZWA_PROD, CENA
FROM TOWARY
WHERE (CENA < 100) AND (ROK_PROD='1995')
Usuwanie zduplikowanych wierszy (DISTINCT) przykład: .
SELECT DISTINCT NAZWISKO
FROM OCENY
WHERE OCENA = 'NDST'
Fraza ORDER BY - służy do uporządkowania wierszy w tablicy odpowiedzi. Należy podać zestaw kolumn definiujący porządek. SQL przez domniemanie porządkuje według kolejności rosnącej. Słowo kluczowe DESC po nazwie kolumny zmienia porządek na malejący. Zamiast nazw kolumn można podawać numer kolejny na liście frazy SELECT
Przykłady:
SELECT NR STUDENTA, NAZWISKO FROM STUDENCI . WHERE ROK_URODZ = '1970' ORDER BY NAZWISKO
SELECT NAZWA_PROD,CENA,ROK_PROD
ORDER BY 3, 2 DESC
Fraza UNION - służy do łączenia rezultatów dwóch
lub więcej instrukcji SELECT w jedną tablicę odpowiedzi. Łączone instrukcje SELECT muszą spełniać określone warunki:
§ muszą zawierać tą samą liczbę kolumn,
§ odpowiednie kolumny ze wszystkich
połączonych instrukcji SELECT muszą mieć
zgodne typy
§ fraza ORDER BY może wystąpić tylko w
ostatniej instrukcji SELECT. :
SELECT NAZWISKO, OCENA_KON FROM STUDENCI93
WHERE GRUPA = 'C52'
UNION
SELECT NAZWISKO, OCENA_KON
FROM STUDENCI94
..,
Instrukcja SELECT z wieloma tablicami:
przy formułowaniu zapytań z kilku tablic należy
pamiętać o: .
§ umieszczeniu nazw wszystkich tablic we
frazie FROM, .
§ stosowaniu kwalifikowanych nazw pól
w celu uniknięcia niejednoznaczności,
§ umieszczeniu we frazie WHERE warunku
wiążącego zbiory.
Nazwa kwalifikowana kolumny to:
§ nazwa kolumny poprzedzona nazwą tablicy:
np.: STUDENCI.NR_STUDENTA,
§ nazwa kolumny poprzedzona. aliasem tablicy:
np.: S.NR_STUDENTA, .
alias tablicy należy zdefiniować we frazie FROM: np. : FROM STUDENCI S, PRZEDMIOTY P.
SELECT STUDENCI.NAZWISKO, WYNIKI.PRZEDMIOT, WYNIKI.OCENA
FROM STUDENCI, WYNIKI
SELECT S.NAZWISKO, P.PRZEDMIOT, OCENA
FROM STUDENCI S, PRZEDMIOT P, WYNIKI W ...
moloniewicz