Wyklad2 2005

background image

SQL - język relacyjnych i

obiektowo-relacyjnych baz

danych

Podstawy

Wykład 2

background image

Historia baz danych i

języka baz danych SQL

• 1961– Integrated Data Store IDS (Charles
Bachman)

pierwszy

SZBD,

początek

sieciowego modelu danych.

• 1965-70 – Information Management System
IMS (IBM) – hierarchiczny model danych.

• 1970 – Edgar Codd – relacyjny model danych.
• 1971 – CODASYL, sieciowy model danych.
• 1976 – Peter Chen – model związków encji
(ERD, ERM).

background image

Historia baz danych i

języka baz danych SQL

• Początek lat siedemdziesiątych

w laboratorium

badawczym IBM w San Jose powstał prototyp języka
SQL o nazwie Sequel.

• 1973

pierwszy system zarządzania relacyjną

bazą danych (System R w firmie IBM).

• 1979

firma Relational Software (później Oracle)

wprowadziła na rynek pierwszą komercyjną wersję
systemu zarządzania relacyjną bazą danych.

• 1987 pierwszy standard języka SQL (ISO),

• Kolejne wersje standardu: 1989, 1992 SQL2, 1999
SQL’1999 – model obiektowo-relacyjny, trwają
prace nad następnymi standardami SQL3 i SQL4.

background image

Historia baz danych i

języka baz danych SQL

Lata osiemdziesiąte – badania nad dedukcyjnymi i

obiektowymi bazami danych.

• 1997 – Standard obiektowych baz danych ODMG
2.0.

• 1999 – Nieoficjalna wersja nowego standardu
języka obiektowo-relacyjnych baz danych (SQL’1999)

• Lata dziewięćdziesiąte – rozszerzenie baz danych o
nowe aspekty: architektury wielowarstwowe,
rozproszenie, równoległość, Internet, hurtownie
danych, OLAP, multimedia, GIS (Geographical
Information Systems), ERP (Enterprise Resource
Planning), MRP (Management Resource Planning).

background image

Programowanie w modelach

sieciowym i hierarchicznym

• Modele sieciowy i hierarchiczny opierały się
na pojęciu pliku jako zbioru rekordów przy
czym rekordy były rozszerzone o pola
wskaźnikowe kierujące do rekordów w innych
plikach.

• Nie było potrzeby wprowadzania nowego
języka programowania – wystarczał Cobol i/lub
PL/I.

background image

Programowanie w modelu

relacyjnym - język SQL

• Specjalny język dostępu i manipulowania
danymi w bazie danych – operujący na obiektach
modelu relacyjnego – relacjach czyli tabelach.

• Potrzeba określenia sposobu użycia instrukcji
tego języka w programach konwencjonalnych
języków programowania jak C, C++, Java, Visual
Basic – również objęte Standardem SQL.

• Powszechne użycie narzędzi generowania
aplikacji klienckich jak Oracle Forms, Visual
Basic, MS Access.

background image

SQL: typy napisowe,

Standard

Stałe są zapisywane w pojedynczych apostrofach np.:

'Jan III', 'Kowalski'

• CHARACTER(N), CHAR(N) – napis znakowy stałej
długości N.

• NATIONAL CHARACTER(N), NATIONAL CHAR(N)

napis znakowy stałej długości N zapisany w

alfabecie narodowym.
• CHARACTER VARYING(N), VARCHAR(N)

napis

znakowy zmiennej długości.
• NATIONAL CHARACTER VARYING(N), NATIONAL
CHAR VARYING(N), NCHAR VARYING(N)

napis

znakowy zmiennej długości zapisany w alfabecie.
• BIT(N)

ciąg bitów długości N. Ciągi bitów są

głównie używane do reprezentowania danych
graficznych i dźwiękowych.
• BIT VARYING(N)

ciąg bitów zmiennej długości.

background image

SQL: typy napisowe,

Oracle

Stałe są zapisywane w pojedynczych apostrofach np.:

'Jan III', 'Kowalski'

• CHAR(N) – napis znakowy stałej długości N
(w Oracle).
• NCHAR(N) – napis znakowy stałej długości N
zapisany w alfabecie narodowym.
• VARCHAR(N) i zalecane (a od 9i jedyne)
VARCHAR2(N) – napis znakowy zmiennej
długości.
• NVARCHAR2(N) – napis znakowy zmiennej
długości zapisany w alfabecie narodowym.
• RAW(n) i LONG RAW – ciąg bitów zmiennej
długości.

background image

Typy numeryczne i typy

dat,

Standard

• NUMERIC, DECIMAL, NUMERIC(P,S) – typ
dziesiętny.

• FLOAT, REAL – typ zmiennopozycyjny.
• INTEGER – typ całkowity.

• DATE – data.
• TIME – godzina.
• TIMESTAMP – data i godzina.

background image

Typy numeryczne,

Oracle

• NUMBER(N), NUMBER(P,S) – typy
numeryczne.

• FLOAT = NUMBER(P,S).
• INTEGER = NUMBER(38).

background image

Typy dat,

Oracle

• DATE – data.

od 9i

TIMESTAMP – data i godzina.

• INTERVAL DAY TO SECOND – dzień,
godzina, minuta i sekunda.

• INTERVAL YEAR TO MONTH – rok i miesiąc.
• TIMESTAMP WITH TIME ZONE – data i
godzina z uwzględnieniem strefy czasowej.

• TIMESTAMP WITH LOCAL TIME – to samo
co poprzednio z przeliczeniem strefy na
lokalną dla klienta.

background image

SQL’1999

• Lob – duże obiekty albo binarne albo tekstowe.
• Blob - duże obiekty binarne – podtyp typu Lob.
• Clob – duże obiekty tekstowe – podtyp typu
Lob.

• Boolean – wartości logiczne true, false i
unknown.

background image

Oracle

• Long - dokumenty tekstowe (tylko jedna
kolumna tego typu w tabeli).

• Blob – duże obiekty binarne.
• Bfile - duże obiekty binarne zapisywane w
plikach.

• Clob – duże obiekty tekstowe.
• NClob – duże obiekty tekstowe zapisane w
alfabecie narodowym.

• Rowid - identyfikatory (adresy) wierszy
tabel.

background image

Oracle i SQL’1999

Oprócz typów standardowych (wbudowanych)
istnieje

możliwość

definiowania

przez

użytkowników

własnych

typów

danych

związanych z opcją obiektową.

background image

Przykładowy schemat z

Oracle

Związek Emp.Sal z
wartościami w tabeli
Salgrade:

Zarobki Emp.Sal są
zaliczane do grupy
Salgrade.Grade takiej,
że:

Emp.Sal należy do
przedziału:
[Salgrade.Losal,
Salgrade.Hisal]

background image

 

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

----- ------- --------- ---- --------- ----- ---- ------

7839 KING PRESIDENT 17-NOV-81 5000 10

7698 BLAKE MANAGER 7839 01-MAY-81 2850 30

7782 CLARK MANAGER 7839 09-JUN-81 2450 10

7566 JONES MANAGER 7839 02-APR-81 2975 20

7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30

7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30

7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30

7900 JAMES CLERK 7698 03-DEC-81 950 30

7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30

7902 FORD ANALYST 7566 03-DEC-81 3000 20

7369 SMITH CLERK 7902 17-DEC-80 800 20

7788 SCOTT ANALYST 7566 09-DEC-82 3000 20

7876 ADAMS CLERK 7788 12-JAN-83 1100 20

7934 MILLER CLERK 7782 23-JAN-82 1300 10

Tabela EMP

background image

Tabele DEPT i SALGRADE

DEPT

DEPTNO DNAME LOC

------ ----------- --------

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERATIONS BOSTON

SALGRADE

GRADE LOSAL HISAL

----- ----- -----

1 700 1200

2 1201 1400

3 1401 2000

4 2001 3000

5 3001 9999

background image

DDL – Data Definition

Language

Tworzenie tabeli

CREATE TABLE nazwa_tabeli(

nazwa_kolumny

typ_danych

więzy_spójności,...);

background image

Tworzenie tabeli Dept i

Salgrade

CREATE TABLE Dept(

Deptno NUMBER(2) PRIMARY KEY,
Dname VARCHAR2(14),
Loc VARCHAR2(13)

);
CREATE TABLE Salgrade(

Grade NUMBER(2) PRIMARY KEY,
Losal NUMBER(7,2) NOT NULL,
Hisal NUMBER(7,2) NOT NULL,
CONSTRAINT chk_salgrade_1 CHECK (Losal

< Hisal)
);

background image

Tworzenie tabeli Emp

CREATE TABLE Emp(

Empno NUMBER(4) PRIMARY KEY,
Ename VARCHAR2(10),
Job VARCHAR2(9),
Mgr NUMBER(4) REFERENCES Emp,
Hiredate DATE,
Sal NUMBER(7,2),
Comm NUMBER(7,2),
Deptno NUMBER(2) NOT NULL REFERENCES

Dept,

CONSTRAINT chk_Emp_1 CHECK (Comm < Sal)

);

background image

Więzy spójności

• NOT NULL – pseudo-wartość Null nie jest

dozwolona w danej kolumnie,

• PRIMARY KEY – kolumna stanowi klucz główny,
• REFERENCES nazwa_tabeli – kolumna stanowi klucz

obcy odwołujący się do klucza głównego podanej
tabeli,

• UNIQUE – kolumna stanowi klucz jednoznaczny

(wartości w kolumnie nie powtarzają się),

• CHECK – warunek jaki ma być spełniony dla

wartości w wierszu.

Opcjonalne słowo kluczowe CONSTRAINT wprowadza

explicite nazwę dla więzów spójności.

background image

SQL*Plus – interfejs do

bazy danych Oracle

describe

tabela - wyświetl schemat tabeli

SQL>

describe dept

Name Null? Type

------------------ -------------- ---------------------

DEPTNO NOT NULL NUMBER(2)

DNAME VARCHAR2(14)

LOC VARCHAR2(13)

Przedrostek

SQL>

sygnalizuje linię poleceń w

programie SQL*Plus.

background image

Wyświetlenie zawartości

tabeli Dept

SELECT * FROM Dept;

DEPTNO DNAME LOC

------------

--------------------

----------------

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERATIONS BOSTON

background image

DDL – Data Definition

Language

Usuwanie tabeli

DROP TABLE

nazwa_tabeli;

Przy istniejących więzach spójności referencyjnej:

DROP TABLE

nazwa_tabeli

CASCADE

CONSTRAINTS;

(samo

CASCADE

w Standardzie)

background image

Usuwanie tabeli - przykłady

• DROP TABLE Emp;

 Gdy inne tabele mają klucze obce odwołujące
się do danej tabeli, jej usunięcie się nie
powiedzie np.

• DROP TABLE Dept;

gdy w tabeli Emp jest klucz obcy Deptno
odwołujący się do klucza głównego tabeli Dept
trzeba użyć:

• DROP TABLE Dept CASCADE CONSTRAINTS;

background image

DDL – Data Definition

Language

Zmiana schematu tabeli

W Standardzie

ALTER TABLE Emp ADD COLUMN Pesel CHAR(11);

Podobnie

MODIFY COLUMN, DROP COLUMN

.

W Oracle

ALTER TABLE Emp ADD (Pesel CHAR(11));

ALTER

TABLE

Emp

MODIFY

(Pesel

VARCHAR2(11));

ALTER TABLE Emp DROP (Pesel);

background image

Dodawanie nowych więzów
spójności

W Standardzie

ALTER TABLE Emp

ADD CONSTRAINT Emp_Sal_comm

CHECK (Sal + Comm <=10000);

W Oracle (nawiasy są opjonalne)

ALTER TABLE Emp

ADD (CONSTRAINT Emp_Sal_comm

CHECK (Sal + Comm <=10000));

background image

Definiowanie kluczy

obcych

Jeśli klucz obcy w tabeli A odwołuje się do klucza

głównego w tabeli B, a klucz obcy w tabeli B

odwołuje się do klucza głównego w tabeli A, to

mamy do czynienia z cyklicznymi powiązaniami

REFERENCES.
• Wykonujemy instrukcje CREATE TABLE nie

definiując kluczy obcych.
• Za pomocą instrukcji ALTER TABLE wprowadzamy

więzy REFERENCES odwołujące się do istniejących

już tabel.

ALTER TABLE Emp
ADD CONSTRAINT fk_Emp_dept
FOREIGN KEY (Deptno) REFERENCES Dept;

background image

Indeksy

• Indeksy stanowią podstawową strukturę
danych w bazach danych umożliwiającą:

– sprawdzanie warunku jednoznaczności
klucza (głównego, jednoznacznego);

– szybkie wyszukiwanie informacji w
tabelach.

Nie ma ich w Standardzie SQL2!

background image

Zakładanie indeksów

(Oracle)

CREATE [UNIQUE] INDEX nazwa_indeksu
ON nazwa_tabeli
(kolumna [ASC|DESC] ,...);

UNIQUE

wartości

pozycji

indeksu

jednoznacznie muszą określać wiersz tabeli;
indeks

taki

nazywa

się

indeksem

jednoznacznym; opcja ta umożliwia realizację
więzów spójności UNIQUE;

• ASC (domyślne) i DESC – w jakiej kolejności
utrzymywać pozycje indeksu: rosnącej czy
malejącej. Może to przyśpieszyć wypisywanie
wierszy tabeli w wymaganym porządku.

background image

Przykłady

CREATE UNIQUE INDEX Ind_Emp_Num
ON Emp(Empno);

tworzy indeks jednoznaczny na kolumnie Empno tabeli
Emp.

– System będzie zapewniać, że wartości w kolumnie
Empno nie będą się powtarzały.

CREATE INDEX Ind_Emp_Naz
ON Emp(Ename DESC);

tworzy zwykły indeks na kolumnie Ename tabeli Emp.

– Wartości w kolumnie Ename mogą się powtarzać.

– Pozycje indeksu są trzymane w odwrotnym
porządku leksykograficznym (DESC).

background image

Usuwanie Indeksów

Indeks można usunąć z bazy danych za pomocą
następującej instrukcji:

 

DROP INDEX

nazwa_indeksu;

 

System zarządzania bazą danych zwykle sam
zakłada indeksy dla kluczy głównych i
jednoznacznych.

background image

DML - Data Modification

Language

Wstawianie danych

INSERT INTO

nazwa_tabeli

VALUES

(wartość,...);

 Przykład:

INSERT INTO

Emp

VALUES

(9901, 'Kowalski', 'SALESMAN', 9345, '23-JAN-

90',300,100,12);

background image

DML - Data Modification

Language

Wstawianie danych

Można też dokonywać wstawienia ograniczając się
do kolumn o podanych nazwach - do nie
wymienionych system sam wstawia pseudo-wartości
Null:

INSERT INTO

nazwa_tabeli(nazwa_kolumny,...)

VALUES

(wartość,...);

 

 Przykład:

INSERT INTO

Emp

(Empno, Ename, Deptno)

VALUES (9901, 'Kowalski', 10);

background image

DML - Data Modification

Language

Modyfikowanie danych

UPDATE

nazwa_tabeli

SET

nazwa_kolumny = wyrażenie,...

[

WHERE

warunek];

 

 Przykład:

np. aby zwiększyć wszystkim sprzedawcom (Job =
'SALESMAN') Sal o 10%:

UPDATE

Emp

SET Sal = Sal*1.1

WHERE Job = 'SALESMAN';

background image

DML - Data Modification

Language

Usuwanie danych

DELETE FROM

nazwa_tabeli

[

WHERE

warunek];

Przykład:

np. aby usunąć wszystkich pracowników, którzy nie

mają określonego stanowiska (Job IS NULL):

DELETE FROM

Emp

WHERE Job IS NULL;

background image

DCL - Data Control

Language

Zatwierdzanie i wycofywanie zmian

w bazie danych

Instrukcje INSERT, DELETE i UPDATE nie dokonują
same trwałych zmian w bazie danych. Aby zmiany
wprowadzone przez nie utrwalić:

COMMIT [WORK];

Można też zrezygnować z wprowadzenia zmian do
bazy danych, wycofując je za pomocą instrukcji:

ROLLBACK [WORK];

background image

Zapytania

wybierające

• Instrukcja SELECT określa:

– z jakich tabel w bazie danych mają być

sprowadzone dane,
– jakie warunki mają spełniać dane i
– w jakiej postaci mają się pojawić przed

użytkownikiem (aplikacją użytkownika).

• Instrukcja SELECT składa się z kilku części
nazywanych klauzulami.

SELECT [DISTINCT]
nazwa_kolumny
,...

FROM nazwa_tabeli
[WHERE warunek];

background image

Przykład - klauzule

SELECT i FROM

Aby wypisać nazwiska,
zarobki i stanowiska
pracowników firmy piszemy:

SELECT Ename,
Sal, Job
FROM Emp;

Aby wypisać całą tabelę
piszemy:

SELECT *
FROM Emp;

lub

TABLE Emp;

(Standard,

Oracle nie

)

ENAME SAL JOB

---------- ---------- ---------
SMITH 800 CLERK
ALLEN 1600 SALESMAN
WARD 1250 SALESMAN
JONES 2975 MANAGER
MARTIN 1250 SALESMAN
BLAKE 2850 MANAGER
CLARK 2450 MANAGER
SCOTT 3000 ANALYST
KING 5000 PRESIDENT
TURNER 1500 SALESMAN
ADAMS 1100 CLERK
JAMES 950 CLERK
FORD 3000 ANALYST
MILLER 1300 CLERK

background image

Przykład - klauzula

WHERE

Wypisz dane o nazwiskach, zarobkach i
stanowiskach tych pracowników firmy, którzy
pracują w dziale o numerze 10.

ENAME SAL JOB

---------- ---------- ---------

CLARK 2450 MANAGER

KING 5000 PRESIDENT

MILLER 1300 CLERK

SELECT Ename, Sal,
Job
FROM Emp
WHERE Deptno= 10;

background image

Przykład - klauzula

WHERE

Przy SELECT wypisywane są tylko te wiersze, dla
których warunek WHERE przyjmuje wartość True
(ani False ani Null).

 

SELECT Ename, Sal, Comm
FROM Emp
WHERE Sal <= Comm;

 

ENAME SAL COMM

---------- ---------- ----------

MARTIN 1250 1400

background image

Operatory logiczne

• Warunek WHERE może też być koniunkcją (AND),

alternatywą (OR) bądź negacją (NOT) innych warunków

logicznych.
• Priorytety: NOT, AND, OR.

Wypisz wiersze pracowników, których zarobki są
większe lub równe 1100 i którzy pracują na
stanowisku 'CLERK'.

SELECT Empno, Ename, Job, Sal
FROM Emp
WHERE Sal>=1100 AND Job='CLERK';

EMPNO ENAME JOB SAL

---------- ---------- --------- ----------
7876 ADAMS CLERK 1100
7934 MILLER CLERK 1300

background image

DISTINCT

• Powtarzające się wiersze nie są automatycznie
eliminowane z wyników zapytania.

• Słowo DISTINCT oznacza eliminację powtarzających
się wierszy - wymaga posortowania wierszy
wynikowych, aby można było wyznaczyć grupy
powtarzających się wierszy.

Wypisz

identyfikatory

osób,

które

mają

podwładnych.

MGR

----------
7566
7698
7782
7788
7839
7902

SELECT DISTINCT Mgr
FROM Emp;

background image

Aliasy

• W miejscu nazwy kolumny może wystąpić
wyrażenie.

• Wyrażeniom na liście SELECT mogą zostać
nadane nazwy czyli aliasy:

prosty identyfikator - napis złożony z liter,
cyfr i znaków podkreślenia

ograniczony identyfikator - dowolny napis
ograniczony podwójnymi cudzysłowami, np.

"Zarobki pracownika:"

W

ograniczonym

identyfikatorze

mogą

występować spacje, które są niedozwolone w
prostym identyfikatorze.

background image

Wyrażenia

Oblicz okres zatrudnienia pracownika od daty jego
zatrudnienia do dnia dzisiejszego – w pełnych
latach:

SELECT Empno, Ename,
Trunc(Months_Between(Sysdate,Hiredate)/1
2) Zatrudnienie
FROM Emp;

EMPNO ENAME ZATRUDNIENIE

---------- ---------- ------------

7369 SMITH 19

7499 ALLEN 19

7521 WARD 19

7698 BLAKE 19

7782 CLARK 19

7566 JONES 19

7654 MARTIN 18

7934 MILLER 18

7902 FORD 18

7839 KING 18

7844 TURNER 18

7900 JAMES 18

7788 SCOTT 17

7876 ADAMS 17

Alias
prosty

background image

ORDER BY

• Wyniki zapytania mogą zostać posortowane
w porządku rosnącym - ASC (domyślnie) lub
malejącym – DESC.

 

SELECT [DISTINCT] wyrażenie [[AS]

alias],...

FROM nazwa_tabeli
[WHERE warunek]
[ORDER BY wyrażenie
[ASC|DESC],...];

• Wartości NULL są ustawiane na końcu przy
ASC oraz na początku przy DESC.

background image

Semantyka prostego

zapytania

1. Weź tabelę podaną w klauzuli FROM.

2. Jeśli występuje klauzula WHERE, do każdego

wiersza danej tabeli zastosuj warunek WHERE.
Pozostaw wiersze dające wartość True (usuwając
wiersze dające False lub Null).

3. Dla każdego pozostającego wiersza oblicz wartości

wyrażeń na liście SELECT.

4. Jeśli po SELECT występuje DISTINCT, usuń

duplikaty wśród wynikowych wierszy.

5. Jeśli występuje klauzula ORDER BY, wykonaj

sortowanie wynikowych wierszy zgodnie ze
specyfikacją.

background image

Operatory

1. Operatory arytmetyczne +, -, *, /

2. Operator konkatenacji (łączenia) napisów ||

np. zestawienie nazwiska pracownika z
zajmowanym przez niego stanowiskiem

'Osoba '|| Ename || ' pracuje na

stanowisku ' || Job

3. Operatory porównań =, <>, <, <=, >, >= W

Oracle argumenty operatorów porównań muszą
być wyrażeniami, w Standardzie mogą być
listami wyrażeń (ale tej samej długości) -
wówczas porównania odbywają się po
składowych.

4. Operator testujący Null

x IS [NOT] NULL

5. Operatory logiczne NOT, AND, OR

background image

Operatory

1. Operator przynależności do listy wartości:

x

[NOT] IN (x1,....)

np.

Kolor IN ('Czarny',

'Biały', 'Czerwony')

Przykład

Wypisz nazwiska pracowników

pracujących na stanowisku CLERK, ANALYST

lub SALESMAN.

SELECT Ename
FROM Emp
WHERE Job IN(

’CLERK’, ’ANALYST’,

’SALESMAN'

);

background image

Operatory

1. Operator zawierania się “między”

x [NOT]

BETWEEN z AND y,

np.

Sal BETWEEN 1000 AND

2000

Przykład

Wypisz dane pracowników, których

pensja mieści się w przedziale między 1000

a 2000.

SELECT *
FROM Emp
WHERE

Sal BETWEEN 1000 AND 2000

;

W Oracle x,y,z,x1,… muszą być wyrażeniami, w

Standardzie mogą być listami wyrażeń tej samej

długości - porównania odbywają się po

składowych.

background image

Operatory

3. Operator wzorca w tekście

x [NOT] LIKE y

gdzie y

zawiera:

znak podkreślenia

_

oznaczający dowolny jeden

znak oraz

znak

%

oznaczający dowolny ciąg znaków np.

Np. gdy Ename = 'Kowalski' to

Ename LIKE 'Kowal

%'

i

Ename LIKE 'Kowalsk_'

są spełnione.

 

Przykład

Wypisz dane pracowników, których

nazwiska kończą się ma

'

TH '

.

SELECT *
FROM Emp
WHERE

Ename like

'

%

TH '

;

background image

Specjalne funkcje Oracle

Funkcja interpretująca Null:

NVL(V1,V2)

-

wartością jest V2 jeśli V1 jest Null, w przeciwnym

razie V1

• NVL(Sal,0)

i

NVL(Stopień, 'Brak')

umożliwiają zinterpretowanie wartości Null jako

odpowiednio 0 bądź 'Brak'.
Funkcje konwersji:

TO_CHAR, TO_DATE, TO_NUMBER

TO_DATE('03-27-01', 'mm-dd-yy')

zmienia typ napisowy na datowy, przy czym

informacja o dacie ma być odczytywana zgodnie z

formatem podanym jako drugi argument: numer

miesiąca, dzień i rok reprezentowany przez dwie

cyfry.

Funkcje bez argumentów:

Sysdate, User

background image

Funkcja NVL (Oracle)

• Wybierz nazwiska i roczne zarobki wszystkich
pracowników

(uwzględnij

prowizję

pracowników, którzy ją mają)

SELECT Empno, 12* Sal + NVL(Comm, 0)
“Roczne zarobki”
FROM Emp
ORDER BY Sal DESC;

EMPNO RoczneZarobki
7839

60000

7902

36000

7788

36000

7566

35700

7698

34200

7782

29400

7499

19500

7844

18000

7934

15600

7654

16400

7521

15050

7876

13200

7900

11400

7369

9600

background image

Funkcja NVL (Oracle)

• Gdybyśmy nie użyli funkcji NVL,
uzyskalibyśmy taką odpowiedź:

SELECT Empno, 12* Sal + Comm “Roczne
zarobki”
FROM Emp
ORDER BY Sal DESC;

EMPNO RoczneZarobki
7839
7902
7788
7566
7698
7782
7499

19500

7844

18000

7934
7654

16400

7521

15050

7876
7900
7369

Tu widać konsekwencje tego,
że wypisywane są tylko te
wiersze, dla których
warunek WHERE przyjmuje
wartość True (ani False ani

Null

).

W Accessie zamiast funkcji
NVL jest funkcja nz.


Document Outline


Wyszukiwarka

Podobne podstrony:
Wyklad3 2005
Wyklad6 2005
Stosowana wyklad 6 2005
C Wykład V 2005 2006 s
Farmakogenetyka wyklad 2005 ze srodowiskiem i chronofarmakoterapia 2
Wyklad7 2005
Wyklad1 2005
Integracja Europejska - Wykłady - 2005 - Mucha-Leszko (44), Nowy folder
Analiza Finansowa - wyklady 2005, FIR UE Katowice, SEMEST
rmf wykład2 (9 3 2005) MNZMYDR5RVWYSYOFGM4WYTKCOAN52ECPQCE2JJI
Wyklad4 2005
POSTĘPOWANIE KARNE – wykład 2005 BULSIEWICZ, III rok, postępowanie karne
Wyklad8 2005

więcej podobnych podstron