Transcript Slajd 1

SQL –
Structured Query Language
obejmuje następujące grupy
poleceń:
1. DML – Data Manipulation Language
•
•
•
•
Select
Insert
Update
Delete
2. DDL - Data Definition Language
•
•
•
Create
Alter
Drop
3. Instrukcje zarządzania i administrowania
bazą danych
• Tworzenie i usuwanie użytkowników (grant,
revoke)
• Przydzielanie i usuwanie ról
• (grant, revoke)
• Przydzielanie uprawnień do poszczególnych
obiektów (grant, revoke)
4. Inne
•
•
•
•
•
Tabele tymczasowe
Kursory
Procedury składowane
Wyzwalacze i transakcje
Zanurzony SQL (statyczny i dynamiczny)
Skrócona składnia języka SQL
•
Główna postać zapytania:
SELECT [DISTINCT] nazwy(a)_kolumny / *
FROM nazwa_tabeli
•
Sortowanie wierszy wynikowych:
SELECT [DISTINCT] nazwy(a)_kolumny/*
FROM nazwa_tabeli
ORDER BY nazwy(a)_kolumny / numer(y)_kolumn
ASC / DESC
• Wybór wierszy z tabeli – selekcja
SELECT [DISTINCT] nazwy(a)_kolumny/*
FROM nazwa_tabeli
WHERE nazwa_kolumny operator wartość
Operatory porównania:
= równe
!= nie równe
<= mniejsze niż lub równe
>= więlsze niż lub równe
> wieksze
< mniejsze
• Wielokrotne warunki selekcji
SELECT [DISTINCT] nazwy(a)_kolumny
FROM nazwa_tabeli
WHERE warunek OR / AND warunek
• Warunek może być zanegowany operatorem NOT
• Wyszukiwanie wartości NULL
SELECT [DISTINCT] nazwy(a)_kolumny
FROM nazwa_tabeli
WHERE nazwa_kolumny IS [NOT] NULL
• Zakresowe wyszukiwanie
SELECT [DISTINCT] nazwy(a)_kolumny
FROM nazwa_tabeli
WHERE nazwa_kolumny
[NOT] BETWEEN wartość1 AND wartość2
• Wielokrotne alternatywne warunki selekcji – operatory porównania
zbioru
SELECT [DISTINCT] nazwy(a)_kolumny
FROM nazwa_tabeli
WHERE nazwa_kolumny
[NOT] IN
(wartość1, wartość2, ….)
• Uzgadnianie wzorców znakowych:
SELECT [DISTINCT] nazwy(a)_kolumny
FROM nazwa_tabeli
WHERE nazwa_kolumny [NOT] LIKE
‘wzorzec’
 Znak % - zastępuje ciąg pusty lub dowolny ciąg
znaków
 Znak _ - zastępuje jeden dowolny znak
 [K-P] – akceptuje w określonym miejscu wzorca znak
z zakresu od ‘K’ do ‘P’
 [^c] - akceptuje w określonym miejscu wzorca
dowolny znak z wyjątkiem ‘c’
• Obliczenia
SELECT nazwy(a)_kolumny, wyrażenie_arytmetyczne
FROM nazwa_tabeli
WHERE warunek
ORDER BY nazwy(a)_kolumny
• Operatory arytmetyczne:
 * mnożenie
 / dzielenie
 + dodawanie
 - odejmowanie
• Grupowanie wierszy i funkcje wbudowane
SELECT nazwy(a)_kolumny, funkcja(e)_wbudowana(e)
FROM nazwa_tabeli
[WHERE warunek]
GROUP BY nazwy(a)_kolumny
[HAVING warunek]
[ORDER BY nazwy(a)_kolumny / numer(y)_kolumn
ASC / DESC]
• Funkcje wbudowane (inaczej zw. sumaryczne,grupowe lub kolumnowe):
AVG, SUM, MIN, MAX, COUNT
• Złączanie naturalne tabel – złączenie równymi wartościami kolumn
SELECT nazwy(a)_kolumny/*
FROM nazwa_tabeli1,nazwa_tabeli2
WHERE warunek_złączenia
[ORDER BY nazwy(a)_kolumny ASC / DESC]
• Złączenie wewnętrzne
SELECT nazwy(a)_kolumny/*
FROM nazwa_tabeli1 INNER JOIN nazwa_tabeli2
ON warunek_złączenia
• Złączenie zewnętrzne lewostronne
SELECT nazwy(a)_kolumny/*
FROM nazwa_tabeli1 LEFT OUTER JOIN
nazwa_tabeli2
ON warunek_złączenia
• Złączenie zewnętrzne prawostronne
RIGHT OUTER JOIN
• Pełne złączenie zewnętrzne
FULL OUTER JOIN
OPERATORY MNOGOŚCIOWE
• UNION i UNION ALL – (suma)
Operator Union (suma)zwraca połączony wynik dwu
zapytań z wyłączeniem powtarzających się wierszy.
• INTERSECT – (przecięcie)
Operator Intersect zwraca wyłącznie rekordy znalezione
przez oba zapytania.
• MINUS – (różnica)
Operator Minus zwraca te rekordy z pierwszego
zapytania, które nie występują w drugim zapytaniu.
PODZAPYTANIA
Zapyt.gł.
SELECT nazwy(a)_kolumn(y)
FROM nazwa_tabeli
WHERE nazwa_kolumny
operator_porównania/
operator_porównania_zbioru
Podzapytanie
(SELECT nazwa_kolumny
FROM nazwa_tabeli
[WHERE warunek])
FUNKCJE ZWIĄZANE Z DATĄ I CZASEM
• ADD_MONTHS – dodaje podaną liczbę miesięcy do
określonej daty,
• LAST_DAY – zwraca ostatni dzień podanego miesiąca,
• MONTHS_BETWEEN – zwraca ilość miesięcy, jaka jest
pomiędzy dwoma określonymi datami,
• NEXT_DAY – podaje pierwszy dzień tygodnia, który jest
większy lub równy, niż podana data,
• SYSDATE – zwraca systemowe wartości daty i czasu,
FUNKCJE ARYTMETYCZNE
ABS – zwraca wartość bezwzględną podanej liczby,
• CEIL – zwraca najmniejszą liczbę całkowitą, większą lub równą niż
podany argument,
• FLOOR - zwraca największą liczbę całkowitą, mniejszą lub równą
niż podany argument,
• COS, SIN, TAN – zwracają wartości trygonometryczne podanych
kątów (argument musi być wyrażony w radianach)
• EXP – zwraca wartość stałej e podniesioną do podanej potęgi,
• LN i LOG – LN zwraca wartość logarytmu naturalnego dla podanego
argumentu, LOG posiada dwa argumenty i zwraca logarytm
pierwszego argumentu przy podstawie równej drugiemu
argumentowi,
• MOD – zwraca resztę z dzielenia pierwszego argumentu przez
drugi,
• POWER – pierwszy argument jest podnoszony do potęgi określonej
przez drugi argument,
• SIGN – zwraca -1 jeśli jej argument jest mniejszy od 0, zwraca 0
jeśli jej argument jest równy 0, oraz zwraca 1 jeśli jej argument jest
większy od 0,
• SORT – zwraca pierwiastek kwadratowy z podanego argumentu,
FUNKCJE ZNAKOWE
• CHR – zwraca znak odpowiadający liczbie podanej jako
argument,
• CONCAT – powoduje łączenie dwóch ciągów
znakowych ( jak symbol ||),
• INITCAP – powoduje zamianę pierwszej litery na wielką,
a pozostałych na małe,
• LOWER i UPPER – pierwsza funkcja zmienia wszystkie
wielkie litery na małe, druga odwrotnie,
• LPAD i RPAD – mogą mieć dwa lub trzy argumenty.
Pierwszym argumentem jest ciąg znakowy, na którym
ma być wykonane działanie. Drugim jest długość, do
której ma być wyrównany tekst, natomiast trzecim,
opcjonalnym argumentem jest znak, którym należy
uzupełnić ciąg znakowy. Znakiem domyślnym jest
spacja.
FUNKCJE ZNAKOWE – cd
• LTRIM i RTRIM - mogą mieć jeden lub dwa argumenty.
Pierwszym argumentem jest ciąg znakowy, drugim
opcjonalnym argumentem jest znak, lub ciąg znaków.
Jeśli drugi argument jest pominięty, domyślnie
przyjmowana jest spacja. Funkcje usuwają ten znak z
pierwszego ciągu znaków.
• REPLACE – zastępuje znaki. Pierwszym argumentem
jest ciąg znaków, który ma być przeszukany, drugim jest
szukany tekst. Jeśli trzeci argument jest opuszczony lub
ma wartość NULL, to każde wystąpienie poszukiwanego
tekstu w wejściowym ciągu znakowym jest usuwane i nie
jest niczym zastępowane,
FUNKCJE ZNAKOWE – cd
• SUBSTR – pozwala wybrać wybrany fragment z
podanego tekstu. Pierwszym argumentem jest ciąg
znakowy. Drugim jest pozycja pierwszego znaku, który
ma pojawić się w wyniku, trzecim argumentem jest liczba
znaków, które mają być pokazane,
• TRANSLATE – posiada trzy argumenty: tekst źródłowy,
tekst zastępowany i tekst wynikowy. Na miejsce
elementów tekstu źródłowego występujących w tekście
zastępowanym wchodzą odpowiadające im elementy z
tekstu wynikowego.
FUNKCJE ZNAKOWE – cd
• INSTR – służy do sprawdzenia, gdzie w ciągu
znakowym występuje określony wzorzec. Pierwszym
argumentem jest źródłowy ciąg znaków, drugim jest
wzorzec, który należy odszukać, trzecim i czwartym
argumentem są liczby informujące, od której pozycji
należy szukać i o którym wystąpieniu wzorca należy
raportować,
• LENGTH – zwraca długość argumentu znakowego.
FUNKCJE KONWERTUJĄCE
• TO_CHAR – przekształca liczby w ciągi znaków,
• TO_NUMBER – przekształca ciąg znakowy w liczbę,
FUNKCJE DODATKOWE
• GREATEST i LEAST – znajdują odpowiednio największy
lub najmniejszy element z serii wyrażeń,
• USER – zwraca nazwę bieżącego użytkownika bazy
danych.
TWORZENIE TABEL
CREATE TABLE nazwa_tabeli
(pole1 typ_danych [rozmiar] [NOT NULL],
pole2 typ_danych [rozmiar] [NOT NULL],
pole3 typ_danych [rozmiar] [NOT NULL])
np.
CREATE TABLE OSOBY
(nr_osoby int primary key default autoincrement,
nazwisko char(20) not null,
imie char(15),
data_ur date)
MODYFIKACJA STRUKTURY TABELI
ALTER TABLE [właściciel]. nazwa_tabeli
ADD nazwa_kolumny typ_danych [rozmiar]
MODIFY nazwa_kolumny [nowy_]typ_danych
[nowy_rozmiar]
RENAME stara_nazwa_kolumny TO
nowa_nazwa_kolumny
DROP nazwa_kolumny
RENAME nowa_nazwa_tabeli
USUWANIE TABELI
DROP TABLE nazwa_tabeli
DODAWANIE DANYCH DO TABELI
INSERT INTO [ ( nazwy_kolumn, ... ) ]
VALUES ( wartości , ... )
Podczas wstawiania danych przy użyciu frazy
INSERT ….VALUES ……, muszą być spełnione trzy
warunki:
• Użyte wartości muszą być tego samego typu co pola, do
których są wpisywane.
• Rozmiar poszczególnych danych nie może przekraczać
rozmiaru kolumny.
• Położenie dodawanych danych na liście wartości musi
odpowiadać położeniu kolumn (tzn. pierwsza wartość
musi być wprowadzona do pierwszej kolumny itd.)
INSERT ….. SELECT….
INSERT ….. SELECT…. Umożliwia przekopiowanie
informacji z jednej tabeli lub grupy tabel do innej tabeli .
Zdanie INSERT ….. SELECT….musi spełniać kilka reguł:
• Zdanie SELECT nie może pobierać danych z tabeli, do
której będą wstawiane rekordy.
• Liczba kolumn w zdaniu INSERT INTO musi być równa
liczbie kolumn zwracanych przez zdanie SELECT.
• Typy danych kolumn w zdaniu INSERT INTO muszą być
takie same jak typy danych zwracanych przez zdanie
SELECT.
MODYFIKACJA DANYCH W TABELI
UPDATE nazwa_tabeli SET
nazwa_kolumny1 = wartość1
[,nazwa_kolumny1 = wartość1]..
WHERE warunek_wyszukiwania
Jeżeli opuszczona jest fraza WHERE ,
aktualizowane są wszystkie rekordy użytej
tabeli.
USUWANIE DANYCH
DELETE FROM nazwa_tabeli WHERE
warunek
DELETE usuwa całe rekordy w określonej
tabeli. Zależnie od użytej frazy WHERE
można usunąć pojedynczy wiersz, wiele
wierszy, wszystkie wiersze lub nic nie
usunąć.