Tworzenie tabeli
CREATE TABLE <nazwa tablicy>
(<nazwa kolumny><typ danych>
[,<nazwa kolumny><typ danych>...])
np.
CREATE TABLE Test (aaa CHAR(10), bbb CHAR(12));
Modyfikacja struktury istniejącej tabeli
ALTER TABLE <nazwa>
ADD <nazwa kolumny><typ danych>
[,<nazwa kolumny><typ danych>...],
DROP <nazwa kolumny>;
np.
ALTER TABLE Ilosc
ADD mistrz CHAR(15),
DROP nr_mistrz;
Do tablicy Ilość zostanie dodana kolumna o nazwie mistrz, a usunięta kolumna o nazwie nr_mistrz
Perspektywy są to tablice wirtualne tzn. takie, które fizycznie w pamięci nie istnieją i służą tylko do innej organizacji już istniejących tablic. Perspektywa może zawierać kombinacje wierszy i kolumn wybranych z jednej lub kilku tablic. Może być wykorzystywana do wybrania i wyprowadzenia żądanych informacji analogicznie jak dla tablic. Przy pomocy perspektywy można również wprowadzać i aktualizować informację wtedy, gdy perspektywa powstała z kolumn pojedynczej tablicy. Perspektywę tworzy się przy pomocy instrukcji:
CREATE VIEW <nazwa perspektywy> [(<lista kolumn>)]
AS < podinstrukcja SELECT > [ WITH CHECK OPTION ]
<lista kolumn> podaje nazwy kolumn, które mają wystąpić w tworzonej perspektywie. Jeżeli opcja ta nie wystąpi, perspektywa będzie zawierała nazwy kolumn wyszczególnione w instrukcji SELECT. Podanie nazw kolumn jest konieczne w przypadku, gdy pewna kolumna jest otrzymana w wyniku działania wyrażenia.
Druga część instrukcji CREATE VIEW zawiera instrukcję SELECT definiującą wiersze i kolumny z wyróżnionej tablicy, które będą zawarte w perspektywie. Opcja WITH CHECK OPTION jest wykorzystywana wtedy, gdy chcemy, aby każdy wiersz umieszczony w perspektywie spełniał warunek wyszczególniony w opcji WHERE instrukcji SELECT.
Przykład
FROM Ilość WHERE material =' 'szyby';
Zostanie utworzona perspektywa o nazwie P1 zawierająca kolumny materiał, ilość z tablicy Ilość i wiersze, dla których materiał = 'szyby', Zawartość perspektywy P1 można wyprowadzić przy pomocy instrukcii:
SELECT *FROM P1;
Należy podkreślić, że przy każdej aktualizacji tablicy Ilość zostanie również zaktualizowana perspektywa P1,
Do usunięcia zbędnej perspektywy wykorzystuje się instrukcję DROP VIEW.
Przykład
Zostanie usunięta perspektywa Mag.
Instrukcja SELECT
SELECT <klauzula>
FROM <klauzula>
[WHERE <klauzula>]
[GROUP BY <klauzula>]
[HAVING <klauzula>]
[ORDER BY <klauzula>]
np
SELECT place
FROM pracownik
WHERE place=3000
Wyświetli płace z tabeli pracownik, gdzie płace=300
GROUP BY i HAVING
Klauzula GROUP BY układa wiersze w grupy, w których określona kolumna ma tę samą wartość, a następnie w tablicy wynikowej redukuje tę grupę do pojedynczego wiersza. Dodatkowo klauzula HAVING podaje warunek, który musi spełniać każda grupa wyszczególniona w klauzuli GROUP BY, aby mogła się znaleźć w tabeli wynikowej
Np.
SELECT nr, ksiazka
FROM biblioteka
GROUP BY ksiazka
HAVING nr>3
Wyszukanie nr i ksiazka, z relacji biblioteka. Wcześniej pogrupowanie wg książek , gdzie spełniony mysi być waruneknr>3
DISTINCT
Eliminuje duplikaty w zakresie nazw atrybutów (wyprowadza tylko różne wiersze)
ORDER BY
Określa sposób sortowania wyników zapytania (asc – rosnąco, desc-malejąco). Sortowanie odbywa się albo względem atrybutów albo względem wyrażenia
SELECT [DISTINCT] atrybuty
FROM relacja
WHERE warunek
ORDER BY {atrybut, wyrażenie} {asc,desc}
Warunki
a)BETWEEN AND
Sprawdzenie czy lewy operator wyrażenia zawarty w przedziale ograniczonych wartości spełnia wystąpienie . Wartości od do są podawane po słowach between and
WHERE zarobki BETWEEN 100 AND 900
b)IN
Operator umożliwia sprawdzenie czy lewy operand jest elementem listy będącej prawym operandem. Listę podaje się w nawiasie okrągłym
WHERE student IN („Kowalski”,”Nowak”)
c)LIKE
Sprawdzenie czy operand pasuje do podanego wzorca
WHERE student LIKE „Kow%”
d)IS NULL
umożliwia sprawdzenie, czy operand ma wartość nieokreśloną, pustą
Funkcje agregujące
a)COUNT() – zlicza liczbę krotek
b)SUM() – sumuje wartości w kolumnach numerycznych
c)MIN() - znajduje minimalną wartość tekstową, typu danych daty lub numeryczną
d)MAX() – znajduje wartość maksymalną
e)AVG() – oblicza średnią wartość w kolumnach numerycznych
SELECT AVG(place), SUM(pensja)
FROM pracownik
WHERE MAX(place)=800
Zapytania złożone
Zapytania w SQL mogą być zagnieżdżone – wynik jednego zapytania może być użyty jako warunek selekcji innego zapytania
Zapytanie zagnieżdżone wykonywane przed zapytanie zewn. nazywane jest zagnieżdżonym (sub-query)
SELECT a1,a2
FROM relacja
WHERE a1=
(SELECT a1
FROM relacja2
WHERE warunek);
Np.
SELECT etat, placa
FROM pracownik
WHERE placa=
(SELECT min(placa)
FROM kierownik)
Łączenie tabel
Łączenie dwóch tabel przy pomocy SELECT’a (wykorzystujemy najczęściej, gdy operujemy kodami a nie pełnymi informacjami). Operacja ta polega na łączeniu dwóch lub więcej relacji z zastosowaniem określonego warunku łączenia. Wynikiem połączenia jest podzbiór produktu relacji
SELECT imie, nazwisko, tytul
WHERE autorzy.nazwisko = ‘Mickiewicz’ and autorzy.nr = ksiazki.autor
Wyświetli pola imię, nazwisko, tytuł z połączonych dwóch tabel przy spełnionych warunkach.
Operacje mnogościowe
Suma (Union) krotek dwóch lub więcej relacji (krotki się nie powtarzają). Warunkiem poprawności jest by była wzajemna zgodność pól i ich typów w obu relacjach z których ta suma powstaje
SELECT imie, nazwisko
FROM studenci
UNION
SELECT imie, nazwisko
FROM nauczyciele
Iloczyn krotek – dotyczy dwóch lub więcej relacji, podobnie wymagana jest zgodność typów. Zamiast Union – Intersect
SELECT imie, nazwisko
FROM studenci
INTERSECT
SELECT imie, nazwisko
FROM nauczyciele
Różnica – polega na pobraniu krotek występujących w pierwszej relacji, a nie wyst. w drugiej relacji, podobnie wymagane warunki i podobna składnia. Występuje słowo minus
SELECT imie, nazwisko
FROM studenci
MINUS
SELECT imie, nazwisko
FROM nauczyciele