SQL – Structured Query Language

28
SQL – Structured Query Language obejmuje następujące grupy poleceń:

description

SQL – Structured Query Language. obejmuje następujące grupy poleceń:. DML – Data Manipulation Language Select Insert Update Delete DDL - Data Definition Language Create Alter Drop. Instrukcje zarządzania i administrowania bazą danych Tworzenie i usuwanie użytkowników (grant, revoke) - PowerPoint PPT Presentation

Transcript of SQL – Structured Query Language

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 ARYTMETYCZNEABS – 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ąć.