P
ODSTAWY J
Ę
ZYKA
SQL
Rodzaje zapyta
ń
S
P
IS
T
R
E
Ś
C
I
Strona tytułowa
Spis tre
ś
ci
Wst
ę
p
J
ę
zyk SQL
Historia SQL
Cele
Bezpiecze
ń
stwo
Terminologia
Zasady SQL
Zapisywanie polece
ń
SQL
Podstawowe zapytania w SQL
Wyra
ż
enia arytmetyczne
Priorytet działa
ń
Aliasy kolumn
Operator konkatenacji
Literały
Warto
ś
c null
NVL
Zmiana warto
ś
ci null
Eliminacja duplikatów
Eliminacja duplikatów
Distinct
Wyspecyfikowanie wzajemne list
Sortowanie:
Order by
Kolejno
ś
c sortowania
Sortowanie wg kolumn
Where
Operatory:
Operatory logiczne
Operatory SQL
Between…and
In
Like
Is null
Operatory negacji
Tworzenie zło
ż
onych kryteriów
Hierarchia operatorów
SQL*Plus
Poł
ą
czenie prze MySQL
Bibliografia
W
ST
Ę
P
Podstawy j
ę
zyka SQL
J
Ę
Z
Y
K
S
Q
L
•
Czym jest?
•
Sposób
przechowywania i
pobrania danych
SQL (
ang.
Structured Query
Language) – strukturalny
j
ę
zyk
zapyta
ń
u
ż
ywany do tworzenia,
modyfikowania
baz danych
oraz do
umieszczania i pobierania danych z
baz danych.
J
ę
zyk SQL jest
j
ę
zykiem
deklaratywnym
. Decyzj
ę
o sposobie
przechowywania i pobrania danych
przechowywania i pobrania danych
pozostawia si
ę
systemowi
zarz
ą
dzania baz
ą
danych
(DBMS).
H
IS
T
O
R
IA
S
Q
L
Miejsce i czas
powstania
SQL został opracowany w
latach 70. w firmie
IBM
. Stał
si
ę
standardem
w komunikacji
z
serwerami
relacyjnych
baz
danych
.
C
E
L
E
•
Do czego słu
ż
y
j
ę
zyk SQL?
•
Składnia
J
ę
zyk SQL słu
ż
y do nast
ę
puj
ą
cych
celów:
specyfikowania zapyta
ń
,
operowania danymi — DML (Data
Modification Language) —
wstawiania, modyfikowania i
usuwania danych z bazy danych,
definiowania danych — DDL (Data
definiowania danych — DDL (Data
Definition Language) — dodawania
do bazy nowych obiektów,
sterowania danymi — DCL (Data
Control Language) — okre
ś
lania praw
dost
ę
pu do danych.
D
M
L
Najwa
ż
niejsze
polecenia ze zbioru
DML
DML (Data Manipulation Language)
słu
ż
y do wykonywania operacji na
danych – do ich umieszczania w
bazie, kasowania, przegl
ą
dania,
zmiany. Najwa
ż
niejsze polecenia z
tego zbioru to:
SELECT
– pobranie danych z bazy,
INSERT
– umieszczenie danych w
bazie,
bazie,
UPDATE
– zmiana danych,
DELETE
– usuni
ę
cie danych z bazy.
Dane tekstowe musz
ą
by
ć
zawsze
uj
ę
te w znaki pojedynczego
cudzysłowu (').
D
D
L
Najwa
ż
niejsze
polecenia ze zbioru
DDL
Dzi
ę
ki DDL (Data Definition
Language) mo
ż
na operowa
ć
na
strukturach, w których dane s
ą
przechowywane – czyli np. dodawa
ć
,
zmienia
ć
i kasowa
ć
tabele lub bazy.
Najwa
ż
niejsze polecenia tej grupy
to:
CREATE
(np. CREATE TABLE,
CREATE DATABASE, ...) – utworzenie
CREATE DATABASE, ...) – utworzenie
struktury (bazy, tabeli, indeksu itp.),
DROP
(np. DROP TABLE, DROP
DATABASE, ...) – usuni
ę
cie struktury,
ALTER
(np. ALTER TABLE ADD
COLUMN ...) – zmiana struktury
(dodanie kolumny do tabeli, zmiana typu
danych w kolumnie tabeli).
D
C
L
Najwa
ż
niejsze
polecenia ze zbioru
CDL
DCL (Data Control Language) ma
zastosowanie do nadawania
uprawnie
ń
do obiektów
bazodanowych. Najwa
ż
niejsze
polecenia w tej grupie to:
GRANT
(np. GRANT ALL PRIVILEGES
ON EMPLOYEE TO PIOTR WITH
GRANT OPTION) – przyznanie
wszystkich praw do tabeli EMPLOYEE
wszystkich praw do tabeli EMPLOYEE
u
ż
ytkownikowi PIOTR z opcj
ą
pozwalaj
ą
c
ą
mu nadawa
ć
prawa do tej
tabeli.
REVOKE
– odebranie u
ż
ytkownikowi
wszystkich praw do tabeli, które zostały
przyznane poleceniem GRANT.
DENY
.
B
E
Z
P
IE
C
Z
E
Ń
S
T
W
O
Jak unikn
ą
c SQL
injection
Jako,
ż
e SQL jest j
ę
zykiem
interpretowanym, istnieje mo
ż
liwo
ść
nadu
ż
y
ć
w przypadku konstruowania
zapyta
ń
z wykorzystaniem parametrów
pochodz
ą
cych z zewn
ą
trz aplikacji.
Szczególnie podatne na ten typ ataku
s
ą
tworzone dynamicznie w oparciu o
SQL-ow
ą
baz
ę
danych serwisy
internetowe. Je
ś
li twórca aplikacji nie
zadba o sprawdzenie poprawno
ś
ci (tzw.
zadba o sprawdzenie poprawno
ś
ci (tzw.
walidacj
ę
) danych wej
ś
ciowych
stanowi
ą
cych cz
ęść
zapytania,
atakuj
ą
cy mo
ż
e by
ć
w stanie dopisa
ć
do
zapytania („wstrzykn
ąć
”) dodatkowe
komendy lub zmieni
ć
ich sposób
działania. Atak taki nosi nazw
ę
SQL
injection
(wstrzykni
ę
cie kodu za
pomoc
ą
SQL).
T
ERMINOLOGIA
Termin SQL
Porównywalna
cz
ęść
mowy
Definicja
Przykład
identyfikator
rzeczownik
Nazwa identyfikuj
ą
ca
obiekt bazy danych,
na przykład nazwa
pola.
Klienci.[Numer
telefonu]
operator
czasownik lub
Słowo kluczowe
reprezentuj
ą
ce lub
AS
operator
przysłówek
reprezentuj
ą
ce lub
modyfikuj
ą
ce akcj
ę
.
AS
stała
rzeczownik
Warto
ść
nie
ulegaj
ą
ca zmianie,
na przykład liczba
albo warto
ść
NULL.
42
wyra
ż
enie
przymiotnik
Kombinacja
identyfikatorów,
operatorów, stałych i
funkcji, która w
wyniku daje
pojedyncz
ą
warto
ść
.
>= Produkty.[Cena
jednostkowa]
Z
ASADY
SQL
Rodzaje zapyta
ń
Z
A
P
IS
Y
W
A
N
IE
P
O
L
E
C
E
Ń
S
Q
L
Zasady
zapisywania
polece
ń
w SQL
Zapisywanie polece
ń
SQL:
Polecenia SQL mog
ą
by
ć
rozmieszczone w kilku liniach. Koniec
polecenia SQL zaznacza si
ę
ś
rednikiem.
Zaleca si
ę
umieszczanie klauzul od
nowej linii.
Mo
ż
na u
ż
ywa
ć
tabulacji.
S
Q
L
Mo
ż
na u
ż
ywa
ć
tabulacji.
Nie wolno dzieli
ć
słowa pomi
ę
dzy
linie.
Oboj
ę
tne, czy u
ż
ywamy małych czy
wielkich liter, chyba
ż
e sprawdzamy
zawarto
ść
pola.
P
O
D
S
T
A
W
O
W
E
Z
A
P
Y
T
A
N
IA
W
Podstawowe
zapytania w SQL
Podstawowy blok zapyta
ń
SQL:
Za pomoc
ą
polecenia SELECT
uzyskujemy informacje z bazy.
Polecenie SELECT składa si
ę
co
najmniej z klauzuli SELECT i klauzuli
FROM.
W klauzuli SELECT wymieniamy
interesuj
ą
ce nas kolumny.
S
Q
L
interesuj
ą
ce nas kolumny.
W klauzuli FROM wskazujemy, sk
ą
d
pobra
ć
dane.
W
Y
R
A
Ż
E
N
IA
A
R
Y
T
M
E
T
Y
C
Z
N
E
•
Klauzula select
•
Wyra
ż
enia
arytmetyczne
W klauzuli SELECT mog
ę
te
ż
by
ć
u
ż
yte:
wyra
ż
enia arytmetyczne,
aliasy (nazwy zast
ę
pcze) kolumn,
konkatenacja,
literały.
Wyra
ż
enia arytmetyczne
W wyra
ż
eniu arytmetycznym mog
ą
W wyra
ż
eniu arytmetycznym mog
ą
wyst
ę
powa
ć
nazwy kolumn, stałe
warto
ś
ci liczbowe oraz operatory
arytmetyczne:
+
dodawanie
-
odejmowanie
*
mno
ż
enie
/
dzielenie
P
R
IO
R
Y
T
E
T
D
Z
IA
Ł
A
Ń
Priotytet działa
ń
W wyra
ż
eniach zachowywany jest
nast
ę
puj
ą
cy priorytet działa
ń
:
mno
ż
enie,
dzielenie,
dodawanie,
odejmowanie.
A
L
IA
S
Y
K
O
L
U
M
N
Aliasy kolumn:
Domy
ś
lne nagłówki kolumn mo
ż
emy
zast
ą
pi
ć
innymi nazwami, które b
ę
d
ą
bardziej znacz
ą
ce.
Mo
ż
na u
ż
ywa
ć
polskich liter. Alias
podaje si
ę
bezpo
ś
rednio po nazwie
kolumny, której nazw
ę
chcemy
zmieni
ć
. Spacje w aliasie nie s
ą
dopuszczane, mo
ż
na natomiast
dopuszczane, mo
ż
na natomiast
utworzy
ć
alias ze spacj
ą
bior
ą
c cało
ść
w podwójne apostrofy.
P
RZYKŁAD
SELECT ENAME NAZWISKO, SAL*12 WYNAGR, COMM PROWIZJA
FROM EMP;
NAZWISKO WYNAGR PROWIZJA
____________________________________
KING
60000
BLAKE
34200
CLARK
29400
JONES
35700
MARTIN 15000
1400
ALLEN 19200 300
TURNER 18000
0
JAMES 11400
WARD 15000
500
FORD 36000
SMITH 9600
SCOTT 36000
ADAMS 13200
MILLER 15600
O
P
E
R
A
T
O
R
K
O
N
K
A
T
E
N
A
C
J
I
Operator
konkatenacji:
•
Czym jest?
•
Przykład
Operator konkatenacji
Operator konkatenacji (||) pozwala na
ł
ą
czenie kolumny z kolumn
ą
,
literałem, wyra
ż
eniem arytmetycznym
lub warto
ś
ci
ą
stał
ą
. Argumenty s
ą
ł
ą
czone i tworz
ą
jedna kolumn
ę
wynikow
ą
.
Aby poł
ą
czy
ć
kolumny EMPNO i
ENAME i opatrzy
ć
je tytułem
ENAME i opatrzy
ć
je tytułem
PRACOWNIK, napiszemy:
P
RZYKŁAD
:
SELECT EMPNO||ENAME PRACOWNIK
FROM EMP;
PRACOWNIK
--------------------------------------------------
7839KING
7698BLAKE
7782CLARK
7782CLARK
7566JONES
7654MARTIN
7499ALLEN
7844TURNER
7900JAMES
7521WARD
7902FORD
7369SMITH
7788SCOTT
7876ADAMS
7934MILLER
L
IT
E
R
A
Ł
Y
Co to s
ą
literały?
Literały
Oprócz kolumn na li
ś
cie SELECT
mog
ą
znajdowa
ć
si
ę
literały (ci
ą
gi
znaków lub liczby). Wtedy dla
ka
ż
dego wiersza zostanie wypisana
ta sama warto
ść
literału:
P
RZYKŁAD
:
SELECT ENAME PRACOWNIK, ' PRACUJE W DEPARTAMENCIE', DEPTNO DEPARTAMENT
FROM EMP;
PRACOWNIK 'PRACUJE W DEPARTAMENCIE' DEPARTAMENT
______________________________________________________
KING 'PRACUJE W DEPARTAMENCIE'
10
BLAKE 'PRACUJE W DEPARTAMENCIE'
30
CLARK 'PRACUJE W DEPARTAMENCIE'
10
CLARK 'PRACUJE W DEPARTAMENCIE'
10
JONES 'PRACUJE W DEPARTAMENCIE'
20
MARTIN 'PRACUJE W DEPARTAMENCIE'
30
ALLEN 'PRACUJE W DEPARTAMENCIE'
30
TURNER 'PRACUJE W DEPARTAMENCIE'
30
JAMES 'PRACUJE W DEPARTAMENCIE'
30
WARD 'PRACUJE W DEPARTAMENCIE'
30
FORD 'PRACUJE W DEPARTAMENCIE'
20
SMITH 'PRACUJE W DEPARTAMENCIE'
20
SCOTT 'PRACUJE W DEPARTAMENCIE'
20
ADAMS 'PRACUJE W DEPARTAMENCIE'
20
MILLER 'PRACUJE W DEPARTAMENCIE'
10
O
B
S
Ł
U
G
A
W
A
R
T
O
Ś
C
I
N
U
L
L
Null
Obsługa warto
ś
ci NULL
Je
ś
li warto
ść
wiersza w kolumnie jest
nieokre
ś
lona, to mówimy,
ż
e na ona
warto
ść
NULL. Nie jest to to
ż
same z
warto
ś
ci
ą
0.
Warto
ść
wyra
ż
enia w którym b
ę
dzie
wyst
ę
powa
ć
warto
ść
NULL równie
ż
b
ę
dzie NULL. Dlatego te
ż
wyra
ż
enie
SAL*12+COMM zwróci NULL tam,
SAL*12+COMM zwróci NULL tam,
gdzie COMM było równe NULL.
P
RZYKŁAD
:
SELECT ENAME, SAL*12+COMM
FROM EMP;
ENAME SAL*12+COM
______________________
KING
BLAKE
CLARK
CLARK
JONES
MARTIN
16400
ALLEN 19500
TURNER 18000
JAMES
WARD 15500
FORD
SMITH
SCOTT
ADAMS
MILLER
F
UNKCJA
NVL
SELECT ENAME, SAL*12+NVL(COMM,0) ROCZNE_WYN
FROM EMP;
ENAME ROCZNE_WYN
________________________
KING
60000
Aby w wyra
ż
eniu potraktowa
ć
warto
ść
NULL jako warto
ść
ró
ż
n
ą
od NULL,
trzeba u
ż
y
ć
funkcji NVL.
KING
60000
BLAKE
34200
CLARK 29400
JONES 35700
MARTIN 16400
ALLEN
19500
TURNER 18000
JAMES 11400
WARD 15500
FORD
36000
SMITH 9600
SCOTT 36000
ADAMS 13200
MILLER 15600
Z
MIANA WARTO
Ś
CI NULL
W powy
ż
szym przykładzie warto
ś
ci ró
ż
ne od NULL
zachowuj
ą
swoj
ą
warto
ść
, za
ś
warto
ś
ci NULL zostan
ą
potraktowane jak 0.
Drugi parametr funkcji NVL okre
ś
la, na jak
ą
warto
ść
nale
ż
y
zamieni
ć
warto
ść
NULL:
NVL(DATA,'85/09/01')
NVL(NUMBER, 10)
NVL(MIASTO,'KRAKÓW')
E
LIMINACJA DUPLIKATÓW
SELECT DEPTNO
FROM EMP;
DEPTNO
----------
10
30
10
20
Eliminacja duplikatów
Domy
ś
lnie
wy
ś
wietlane s
ą
20
30
30
30
30
30
20
20
20
20
10
wy
ś
wietlane s
ą
wyniki zapytania bez
eliminowania
powtarzaj
ą
cych si
ę
warto
ś
ci, np.:
D
ISTINCT
SELECT DISTINCT DEPTNO
Słowo kluczowe DISTINCT
Eliminacj
ę
powtarzaj
ą
cych si
ę
warto
ś
ci uzyskujemy
stosuj
ą
c słowo kluczowe DISTINCT w klauzuli SELECT.
SELECT DISTINCT DEPTNO
FROM EMP;
DEPTNO
----------
10
20
30
W
Y
S
P
E
C
Y
F
IK
O
W
A
N
IE
W
Z
A
J
E
M
N
E
Klauzula select,
słowo kluczowe
distinct
Mo
ż
na te
ż
za
żą
da
ć
wyspecyfikowania
wzajemnie ró
ż
nych list warto
ś
ci
poprzez podanie w klauzuli SELECT
wielu nazw kolumn.
Słowo kluczowe DISTINCT odnosi si
ę
do wszystkich nazw kolumn
wyst
ę
puj
ą
cych w klauzuli SELECT.
W
Z
A
J
E
M
N
E
L
IS
T
P
RZYKŁAD
:
SELECT DISTINCT JOB, DEPTNO
FROM EMP;
JOB
DEPTNO
_____________________
ANALYST
20
ANALYST
20
CLERK
10
CLERK 20
CLERK 30
MANAGER 10
MANAGER 20
MANAGER 30
PRESIDENT 10
SALESMAN 30
O
R
D
E
R
B
Y
Klauzula order by
Klauzula ORDER BY
Aby okre
ś
li
ć
kolejno
ść
, w jakiej b
ę
d
ą
zwracane wyniki, nale
ż
y u
ż
y
ć
klauzuli
ORDER BY (uporz
ą
dkuj wg).
Klauzula ORDER BY musi by
ć
ostatni
ą
klauzul
ą
polecenia SELECT.
P
RZYKŁAD
:
SELECT ENAME, JOB
FROM EMP
ORDER BY ENAME;
ENAME JOB
_______________________
ADAMS CLERK
ALLEN SALESMAN
ALLEN SALESMAN
BLAKE MANAGER
CLARK MANAGER
FORD ANALYST
JAMES CLERK
JONES MANAGER
KING
PRESIDENT
MARTIN SALESMAN
MILLER CLERK
SCOTT ANALYST
SMITH CLERK
TURNER SALESMAN
WARD SALESMAN
K
O
L
E
J
N
O
Ś
C
S
O
R
T
O
W
A
N
IA
Jak zmienic
kolejno
ś
c
sortowania?
Domy
ś
lnie dane s
ą
sortowane w
porz
ą
dku rosn
ą
cym (ASCENDING)
— od najmniejszych do najwi
ę
kszych
liczb, od wcze
ś
niejszych do
pó
ź
niejszych dat, za
ś
ci
ą
gi znakowe
s
ą
sortowane wg ustawie
ń
NLS
(okre
ś
lanych przy tworzeniu bazy
danych).
Aby odwróci
ć
kolejno
ść
sortowania
Aby odwróci
ć
kolejno
ść
sortowania
nale
ż
y u
ż
y
ć
słowa DESC
(DESCENDING) u
ż
ytego
bezpo
ś
rednio po nazwie kolumny
wyspecyfikowanej w klauzuli ORDER
BY.
P
RZYKŁAD
:
SELECT ENAME, JOB, HIREDATE
FROM EMP
ORDER BY HIREDATE DESC;
ENAME JOB
HIREDATE
________________________________________
ADAMS CLERK
83/01/12
SCOTT ANALYST
82/12/09
SCOTT ANALYST
82/12/09
MILLER CLERK
82/01/23
JAMES CLERK
81/12/03
FORD ANALYST
81/12/03
KING
PRESIDENT
81/11/17
MARTIN SALESMAN
81/09/28
TURNER SALESMAN
81/09/08
CLARK MANAGER
81/06/09
BLAKE MANAGER
81/05/01
JONES MANAGER
81/04/02
WARD SALESMAN
81/02/22
ALLEN SALESMAN
81/02/20
SMITH CLERK
80/12/17
S
O
R
T
O
W
A
N
IE
W
G
K
O
L
U
M
N
Sortowanie
Mo
ż
na sortowa
ć
według kilku
kolumn, wtedy po słowie kluczowym
ORDER BY nale
ż
y poda
ć
nazwy
kolumn, po których chcemy sortowa
ć
.
Nazwy kolumn, po których sortujemy,
musz
ą
by
ć
wyspecyfikowane
w klauzuli SELECT.
Sortowanie dotyczy tylko wyniku
zapytania wy
ś
wietlanego na ekranie.
zapytania wy
ś
wietlanego na ekranie.
Dane w tabelach nie s
ą
sortowane.
P
RZYKŁAD
:
SELECT ENAME, JOB, DEPTNO
FROM EMP
ORDER BY DEPTNO, ENAME;
ENAME
JOB
DEPTNO
__________________________________
CLARK
MANAGER 10
KING
PRESIDENT 10
MILLER
CLERK 10
MILLER
CLERK 10
ADAMS
CLERK 20
FORD
ANALYST 20
JONES
MANAGER 20
SCOTT
ANALYST 20
SMITH
CLERK 20
ALLEN
SALESMAN 30
BLAKE
MANAGER 30
JAMES
CLERK 30
MARTIN
SALESMAN 30
TURNER
SALESMAN 30
WARD
SALESMAN 30
W
H
E
R
E
•
Klauzula where
•
Operatory where
Klauzula WHERE
Klauzula WHERE odpowiada operacji
selekcji.
Klauzula ta specyfikuje kryteria
doboru wierszy. Klauzula WHERE, o
ile jest, musi wyst
ę
powa
ć
bezpo
ś
rednio po klauzuli FROM.
Operatory w klauzuli WHERE mog
ą
Operatory w klauzuli WHERE mog
ą
by
ć
dwojakiego rodzaju:
operatory logiczne,
operatory SQL.
O
P
E
R
A
T
O
R
Y
L
O
G
IC
Z
N
E
Dane znakowe i
ci
ą
gi znaków w
where
Operatory logiczne
Dane znakowe i ci
ą
gi znaków w
klauzuli WHERE musz
ą
by
ć
uj
ę
te w
pojedyncze apostrofy. Przy
porównywaniu znaków Oracle
rozró
ż
nia małe i wielkie litery.
O
PERATORY LOGICZNE
SELECT ENAME, JOB, DEPTNO
FROM EMP
Aby wybra
ć
nazwiska, zawód i numer departamentu dla
wszystkich zatrudnionych na stanowisku CLERK,
napiszemy:
FROM EMP
WHERE JOB='CLERK';
ENAME
JOB DEPTNO
________________________________
JAMES
CLERK 30
SMITH
CLERK 20
ADAMS
CLERK 20
MILLER
CLERK 10
O
PERATORY LOGICZNE
SELECT ENAME, JOB, DEPTNO
FROM EMP
Aby wybra
ć
wszystkich zatrudnionych po 01.01.1982r.,
napiszemy:
FROM EMP
WHERE HIREDATE>'82/01/01'
ENAME
JOB
DEPTNO
______________________________
SCOTT
ANALYST
20
ADAMS
CLERK 20
MILLER
CLERK 10
O
PERATORY LOGICZNE
SELECT ENAME, JOB, DEPTNO
Mo
ż
na w klauzuli WHERE porównywa
ć
dla ka
ż
dego wiersza
warto
ś
ci dwóch kolumn. Np.
ż
eby wybra
ć
wszystkich, którzy
otrzymuj
ą
wy
ż
sz
ą
prowizj
ę
ni
ż
pensj
ę
, napiszemy:
FROM EMP
WHERE COMM>SAL;
ENAME JOB
DEPTNO
_______________________________
MARTIN SALESMAN 30
O
P
E
R
A
T
O
R
Y
S
Q
L
Operatory SQL
działaj
ą
ce na
wszystkich typach
danych
Operatory SQL
Wyró
ż
niamy 4 operatory SQL,
działaj
ą
ce na wszystkich typach
danych:
BETWEEN... AND,
IN (lista),
LIKE,
IS NULL.
B
E
T
W
E
E
N
…
A
N
D
Between…and:
Do czego słu
ż
y?
Operator BETWEEN...AND
Operator BETWEEN...AND słu
ż
y do
sprawdzenia, czy warto
ść
znajduje si
ę
w podanym przedziale (wliczaj
ą
c w to
kra
ń
ce przedziału). Górna granica
musi nast
ę
powa
ć
po dolnej.
Aby wybra
ć
wszystkich, którzy
zarabiaj
ą
od 1000 do 1500, wliczaj
ą
c
w to tych, którzy zarabiaj
ą
1000 i
w to tych, którzy zarabiaj
ą
1000 i
1500, napiszemy:
P
RZYKŁAD
:
SELECT ENAME, JOB, DEPTNO
FROM EMP
WHERE SAL BETWEEN 1000 AND 1500;
ENAME JOB
DEPTNO
ENAME JOB
DEPTNO
__________________________________
MARTIN SALESMAN 30
TURNER SALESMAN 30
WARD
SALESMAN 30
ADAMS CLERK 20
MILLER
CLERK 10
I
N
Operator In
Do czego słu
ż
y?
Operator IN
Operator IN słu
ż
y do sprawdzania,
czy dana warto
ść
znajduje si
ę
na
wyspecyfikowanej li
ś
cie. Aby wybra
ć
podwładnych osób o identyfikatorach
7839 i 7902, napiszemy:
Dane znakowe wyst
ę
puj
ą
ce na li
ś
cie
nale
ż
y uj
ąć
w pojedyncze apostrofy.
P
RZYKŁAD
:
SELECT ENAME, JOB, DEPTNO
FROM EMP
WHERE MGR IN (7839,7902);
ENAME JOB
DEPTNO
ENAME JOB
DEPTNO
_____________________________
BLAKE
MANAGER 30
CLARK
MANAGER 10
JONES
MANAGER 20
SMITH
CLERK 20
L
IKE
SELECT ENAME, JOB, DEPTNO
FROM EMP
WHERE ENAME LIKE '_A%';
ENAME JOB DEPTNO
___________________________
Operator LIKE
Operator LIKE słu
ż
y do
wybierania warto
ś
ci
odpowiadaj
ą
cych podanemu
wzorcowi. Wzorzec tworz
ą
dwa
specjalne symbole:
___________________________
MARTIN SALESMAN 30
JAMES CLERK 30
WARD SALESMAN 30
% (znak procent) — odpowiada
dowolnemu ci
ą
gowi znaków,
_ (znak podkre
ś
lenia) —
odpowiada dokładnie jednemu
dowolnemu znakowi.
Aby wybra
ć
osoby, które jako
drug
ą
liter
ę
w nazwisku maj
ą
liter
ę
"A", napiszemy:
L
IKE
SELECT ENAME, JOB,
DEPTNO
FROM EMP
WHERE ENAME LIKE '_____';
ENAME JOB DEPTNO
_________________________
Aby wybra
ć
osoby,
których nazwisko składa
_________________________
BLAKE MANAGER 30
CLARK MANAGER 10
JONES MANAGER 20
ALLEN SALESMAN 30
JAMES CLERK 30
SMITH CLERK 20
SCOTT ANALYST 20
ADAMS CLERK 20
których nazwisko składa
si
ę
z pi
ę
ciu liter,
napiszemy:
I
S
N
U
L
L
Operator is null
Do czego słu
ż
y?
Operator IS NULL
Operator IS NULL słu
ż
y do
wyszukiwania warto
ś
ci NULL.
Aby wybra
ć
dane o osobach, które nie
posiadaj
ą
szefa, napiszemy:
Nie mo
ż
na napisa
ć
w klauzuli
WHERE warunku MGR=NULL, gdy
ż
wtedy Oracle nie wyszuka
ż
adnych
wtedy Oracle nie wyszuka
ż
adnych
warto
ś
ci.
P
RZYKŁAD
:
SELECT ENAME, JOB, DEPTNO
FROM EMP
WHERE MGR IS NULL;
ENAME JOB
DEPTNO
____________________________
KING
PRESIDENT 10
O
P
E
R
A
T
O
R
Y
N
E
G
A
C
J
I
Do czego słu
żą
operatory negacji?
Operatory negacji
Operatory negacji słu
żą
do
zaprzeczania warunkom w klauzuli
WHERE.
!=
nie jest równy (VAX, UNIX, PC)
^=, _=
nie jest równy (IBM)
<>
nie jest równy (wszystkie systemy operacyjne)
NOT kolumna=
nie jest równy
NOT kolumna>
nie jest wi
ę
kszy
NOT BETWEEN
nie jest w podanym przedziale
NOT IN
nie jest w zbiorze
NOT LIKE
nie jest zgodny z mask
ą
IS NOT NULL
nie jest NULL
P
RZYKŁAD
:
Aby wybra
ć
wszystkie osoby, które nie zarabiaj
ą
wi
ę
cej ni
ż
2000,
napiszemy:
SELECT ENAME, SAL
FROM EMP
WHERE NOT SAL>2000;
ENAME
SAL
_______________________
MARTIN
1250
ALLEN
1600
TURNER
1500
JAMES
950
WARD
1250
SMITH
800
ADAMS
1100
MILLER
1300
P
RZYKŁAD
:
Aby wybra
ć
osoby, które nie otrzymuj
ą
prowizji,
napiszemy:
SELECT ENAME, JOB, COMM
FROM EMP
WHERE COMM IS NOT NULL
ENAME
JOB
COMM
_______________________________
MARTIN
SALESMAN 1400
ALLEN
SALESMAN 300
TURNER SALESMAN 0
WARD
SALESMAN 500
T
W
O
R
Z
E
N
IE
Z
Ł
O
Ż
O
N
Y
C
H
K
R
Y
T
E
R
IÓ
W
Budowa warunków
zło
ż
onych:
Jakie operatory do
tego słu
żą
?
Tworzenie zło
ż
onych kryteriów
Do budowania warunków zło
ż
onych
słu
żą
operatory AND (i) oraz OR
(lub).
Warunek (X AND Y) jest prawdziwy
wtedy i tylko wtedy, gdy X jest
prawdziwy i Y jest prawdziwy.
Warunek (X OR Y) jest prawdziwy wtedy
i tylko wtedy, gdy X jest prawdziwy lub Y
K
R
Y
T
E
R
IÓ
W
i tylko wtedy, gdy X jest prawdziwy lub Y
jest prawdziwy.
Operator AND ma wi
ę
kszy priorytet ni
ż
operator OR.
Aby wybra
ć
wszystkich pracowników
zatrudnionych na stanowisku
'MANAGER' i zarabiaj
ą
cych wi
ę
cej ni
ż
2000, napiszemy:
P
RZYKŁAD
:
SELECT ENAME, JOB, SAL
FROM EMP
WHERE SAL>2000
AND JOB='MANAGER'
NAME
JOB
SAL
________________________________
BLAKE
MANAGER
2850
CLARK
MANAGER
2450
JONES
MANAGER
2975
P
RZYKŁAD
:
Poniewa
ż
operator AND ma wy
ż
szy priorytet ni
ż
operator OR, to poni
ż
szy przykład
znajdzie nam wszystkie osoby zatrudnione na stanowisku 'CLERK' oraz te osoby
zatrudnione na stanowisku 'MANAGER', których zarobki przekraczaj
ą
1000.
SELECT ENAME, JOB, SAL
FROM EMP
WHERE SAL>1000
AND JOB='MANAGER' OR JOB='CLERK';
AND JOB='MANAGER' OR JOB='CLERK';
ENAME
JOB
SAL
_____________________________________
BLAKE MANAGER
2850
CLARK MANAGER
2450
JONES MANAGER
2975
JAMES CLERK
950
SMITH CLERK
800
ADAMS CLERK
1100
MILLER CLERK
1300
P
RZYKŁAD
:
Poni
ż
szy przykład, w którym zastosowano nawiasy zmieniaj
ą
ce
kolejno
ść
wykonywania działa
ń
wybierze tylko osoby zatrudnione
na stanowisku 'CLERK' lub na stanowisku 'MANAGER', które
przy tym zarabiaj
ą
wi
ę
cej ni
ż
1000.
SELECT ENAME, JOB, SAL
FROM EMP
FROM EMP
WHERE SAL>1000
AND (JOB='MANAGER' OR JOB='CLERK');
ENAME
JOB
SAL
_____________________________________
BLAKE
MANAGER 2850
CLARK
MANAGER 2450
JONES
MANAGER 2975
ADAMS
CLERK
1100
MILLER
CLERK
1300
H
IE
R
A
R
C
H
IA
O
P
E
R
A
T
O
R
Ó
W
Priorytety
Hierarchia operatorów
=, <>, <=, >=, >,<, BETWEEN…AND,
IN, LIKE, IS NULL
NOT
AND
OR
Aby zapis był bardziej przejrzysty i w
celu unikni
ę
cia bł
ę
dów, zaleca si
ę
celu unikni
ę
cia bł
ę
dów, zaleca si
ę
stosowanie nawiasów.
S
Q
L
*
P
L
U
S
Polecenia w
SQL*Plus
Krótki opis polece
ń
wła
ś
ciwych dla
SQL*Plus
Pod SQL*Plus najcz
ęś
ciej
uruchamiamy skrypty SQL-owe.
Najcz
ęś
ciej u
ż
ywane polecenia:
SPOOL plik;
wszystkie polecenia SQL do czasu wydania rozkazu SPOOL
OFF b
ę
d
ą
zapisywane do pliku plik
@plik
uruchomienie skryptu plik
ed plik
edycja pliku plik w domy
ś
lnym edytorze
SPOOL OFF
ko
ń
czy wysyłanie danych do pliku
DESC
wy
ś
wietla opis struktury tabeli
CONNECT
zmiana podł
ą
czenia do bazy
EXIT
wyj
ś
cie z programu
P
O
Ł
Ą
C
Z
E
N
IE
P
R
Z
E
Z
M
Y
S
Q
L
Poł
ą
czenie z baz
ą
danych przez
klienta MySQL
Do połaczenia z baza uzyjemy
klienta mysql wywołanie z linii
polecen jest nastepujace:
mysql -u root
aby zakonczyc połaczenie nalezy
wpisac polecenie exit.
B
IB
L
IO
G
R
A
F
IA
Podstawy j
ę
zyka
SQL
http://bazyall.wordpress.com/
http://pl.wikipedia.org/wiki/SQL
http://www.google.pl/url?sa=t&source
=web&cd=7&ved=0CEcQFjAG&url=ht
tp%3A%2F%2Fservi.icis.pcz.pl%2Ffil
es%2FKursSQL.doc&rct=j&q=Podsta
wy%20j%EAzyka%20SQL&ei=yCubT
ZvvE9DzsgbVy4GuBg&usg=AFQjCN
HifbQqTH-
NFmXUW25LKxxXjIlY4w&sig2=A5Ur
HifbQqTH-
NFmXUW25LKxxXjIlY4w&sig2=A5Ur
zbd58p4tV2Bf-KTlgA&cad=rja
http://office.microsoft.com/pl-
pl/access-help/jezyk-access-sql-
podstawowe-pojecia-sownictwo-i-
skadnia-HA010256402.aspx
http://ektanet.pl/pobieralnia/podstawy
_sql.pdf