Bazy danych. Plan wykáadu. Diagramy ER. Podstawy modeli relacyjnych. Wykáad 3: Relacyjny model danych. SQL - zmienne podstawienia, funkcje

Podobne dokumenty
Funkcja INITCAP. SQL> select initcap(dname), initcap(loc) from dept; Funkcja SUBSTR

Bazy danych. Plan wykładu. Podstawy modeli relacyjnych. Diagramy ER. Wykład 3: Relacyjny model danych. SQL

Bazy danych. Plan wykładu. Definicja zalenoci funkcyjnych. Zalenoci funkcyjne. Wykład 4: Relacyjny model danych - zalenoci funkcyjne.

Bazy danych. Plan wykładu. Dekompozycja relacji. Anomalie. Wykład 5: Projektowanie relacyjnych schematów baz danych. SQL - funkcje grupujce

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

Bazy danych. Plan wykáadu. Proces modelowania i implementacji bazy danych. Elementy ERD

PL/SQL. Funkcje wbudowane

Bazy danych. Plan wykáadu. Zale*noci funkcyjne. Wykáad 4: Relacyjny model danych - zale*noci funkcyjne. A B

Bazy danych. Plan wykáadu. Powtórzenie BCNF i 3NF. Nowa forma redundancji. Wykáad 6: Postaci normalne. SQL - zapytania záo*one.

Język SQL. Rozdział 3. Funkcje wierszowe

Funkcje. Rozdział 3a Funkcje wierszowe. Funkcje znakowe (1) Funkcje wierszowe

Bazy danych. Plan wykładu. Proces modelowania i implementacji bazy danych. Elementy ERD. Wykład 2: Diagramy zwizków encji (ERD)

Technologie baz danych

Bazy danych. Plan wykładu. Proces modelowania i implementacji bazy danych. Elementy ERD. Wykład 2: Diagramy zwizków encji (ERD)

Bazy danych. Plan wykładu. Zalenoci funkcyjne. Wykład 4: Relacyjny model danych - zalenoci funkcyjne. SQL - podzapytania A B

Bazy danych. Plan wykładu. Podzapytania - wskazówki. Podzapytania po FROM. Wykład 5: Zalenoci wielowartociowe. Sprowadzanie do postaci normalnych.

Plan wykładu. Elementy ERD BAZY DANYCH. Proces modelowania i implementacji bazy danych. Diagramy związków encji. SQL podzapytania

Technologie baz danych

TECHNOLOGIE BAZ DANYCH

Bazy danych. Plan wykładu. Zależności funkcyjne. Wykład 2: Relacyjny model danych - zależności funkcyjne. Podstawy SQL.

Oracle PL/SQL. Paweł Rajba.

Funkcje. Rozdział 3. Funkcje. Funkcje znakowe (1) Funkcje wierszowe

Bazy danych Podstawy teoretyczne

Materiały szkoleniowe. Podstawy jzyka SQL. Prowadzcy Anna Pijanowska - Kunierz Paweł ołnierczyk

Zadania SELECT do schematu EDS (EMP, DEPT, SALGRADE)

Szkolenie Oracle SQL podstawy. Terminy lutego 2010 First Minute! 1100zł!

PL/SQL. Część 1 Oracle SQL. Piotr Medoń

Technologie baz danych

Bazy danych. Plan wykładu. Pierwsza posta normalna. Druga posta normalna. Wykład 7: Sprowadzanie do postaci normalnych. DDL, DML

Bazy danych. Plan wykładu. Operacje w algebrze relacji. Pojcie algebry relacji. Wykład 8: Algebra relacji. SQL - cd

Zagadnienia podstawowe

Bazy danych. Plan wykładu. Złczenia tabel. Perspektywy cd. Wykład 9: Programowanie aplikacji baz danych po stronie serwera. Sekwencje Wyzwalacze

Materiały szkoleniowe. Podstawy języka SQL

Funkcje analityczne SQL CUBE (1)

Bazy danych. Plan wykładu. Przetwarzanie zapyta. Etapy przetwarzania zapytania. Wykład 12: Optymalizacja zapyta. Etapy przetwarzanie zapytania

Hurtownie danych - przegląd technologii

Wprowadzenie do baz danych

Plan wykładu. Problemy w bazie danych. Problemy w bazie danych BAZY DANYCH

Przykłady wyrae uywanych w kwerendach i filtrach

Bazy danych. Zaliczenie. Literatura. Strony WWW. Wykáad 1: Wprowadzenie do baz danych

Tworzenie bazy danych Biblioteka tworzenie tabel i powiza, manipulowanie danymi. Zadania do wykonani przed przystpieniem do pracy:

Laboratorium Baz Danych. Zapytania SQL (część 3)

Podstawowe zapytania SELECT (na jednej tabeli)

osiągnął długość podaną jako drugi parametr. Jeśli wynik jest dłuższy niż zadeklarowana długość, zostaje ucięty z prawej strony.

Bazy danych. Zaliczenie. Literatura. Strony WWW. Wykáad 1: Wprowadzenie do baz danych

PROWIZJE Menad er Schematy rozliczeniowe

kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli

Język SQL. Rozdział 3. Zaawansowana selekcja danych

Bazy Danych i Usługi Sieciowe

Wybór EUROPEAN będzie rozpoznawał dzień przed miesiącem, natomiast US miesiąc przed dniem.

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Ogólny plan przedmiotu. Strony WWW. Literatura BAZY DANYCH. Materiały do wykładu:

Standard SQL/XML. Wprowadzenie do XQuery

Administracja i programowanie pod Microsoft SQL Server 2000

a) Polecenie: Wyświetl wszystkie rekordy z tabeli Pracownicy (wszystkie atrybuty)

Zbiór pytań nr 2. 1 Tabela DEPARTMENTS ma następującą strukturę:

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Plan wykładu: Relacyjny model danych: opis modelu, podstawowe pojęcia, ograniczenia, więzy.

Laboratorium Bazy danych SQL 2

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji

SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel

PLAN WYKŁADU BAZY DANYCH MODEL DANYCH. Relacyjny model danych Struktury danych Operacje Integralność danych Algebra relacyjna HISTORIA

BAZY DANYCH JĘZYK ZAPYTAŃ BAZ DANYCH SQL. Microsoft Access. Adrian Horzyk. Akademia Górniczo-Hutnicza

Podstawy języka SQL Co to jest SQL? Możliwości SQL SQL*Plus

.! $ Stos jest list z trzema operacjami: dodawanie elementów na wierzch stosu, zdejmowanie elementu z wierzchu stosu, sprawdzanie czy stos jest pusty.

Język SQL. Rozdział 9. Język definiowania danych DDL, cześć 1. Tworzenie relacji, typy danych, wartości domyślne atrybutów, słownik bazy danych.

Język SQL. Rozdział 2. Proste zapytania

1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

Autor: dr inż. Katarzyna Rudnik

opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy)

Bazy danych SQL. Wstp. SQL (Structured( Query Language) strukturalny jzyk zapyta

Wykład 5. SQL praca z tabelami 2

Systemy GIS Tworzenie zapytań w bazach danych

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

IV Powiatowy Konkurs Matematyka, Fizyka i Informatyka w Technice Etap finałowy 1 kwietnia 2016

WYKŁAD 1. Wprowadzenie do problematyki baz danych

Obliczenia arytmetyczne. Konkatenacja pól. Aliasy kolumn. Aliasy tabel. Co dalej? Rozdział 4. Korzystanie z funkcji. Zastosowanie funkcji

Krzysztof Kadowski. PL-E3579, PL-EA0312,

Temat: Technika zachłanna. Przykłady zastosowania. Własno wyboru zachłannego i optymalnej podstruktury.

Oracle 12c: Nowości w SQL i PL/SQL

SIECI KOMPUTEROWE I BAZY DANYCH

Bazy danych i usługi sieciowe

Projektowanie i analiza zadaniowa interfejsu na przykładzie okna dialogowego.

Zadania do wykonaj przed przyst!pieniem do pracy:

Marek Rakowski Podstawy zdania SELECT Strona 1 z 12

Relacyjne bazy danych. Podstawy SQL

3. Podzapytania, łączenie tabel i zapytań

Ściągawka z funkcji i właściwości systemowych VBA. Opis działania i parametrów. Nazwa funkcji. Składnia zwracanej wartości

RELACYJNE BAZY DANYCH TEORIA. Bazy danych to uporzdkowany zbiór informacji z okrelonej dziedziny lub tematyki przeznaczony do wyszukiwania

Bazy danych wykład trzeci. trzeci Modelowanie schematu bazy danych 1 / 40

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Wybór wszystkich danych: SELECT * FROM employee Wybór określonych kolumn lub wyrażeń: SELECT first_name, last_name, salary FROM employee

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

Przestrzenne bazy danych Podstawy języka SQL

2. Język SQL SQL jest językiem deklaratywnym (Charakterystyczną cechą języków

Wykład 7 Implementacja języka SQL w systemach baz danych Oracle sortowanie, funkcje agregujące i podzapytania.

Oracle PL/SQL. Paweł Rajba.

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

Laboratorium nr 8. Temat: Podstawy języka zapytań SQL (część 2)

Transkrypt:

Plan wykáadu Bazy danych Wykáad 3: Relacyjny model danych. SQL - zmienne podstawienia, funkcje Diagramy E/R - powtórzenie Relacyjne bazy danych Od diagramów E/R do relacji SQL - zmienne podstawienia, funkcje Maágorzata Krtowska Wydziaá Informatyki Politechnika Biaáostocka Bazy danych 2 Podstawowe elementy ERD zbiory encji encje atrybuty zwizki Licznoci Klucze Podklasy Zbiory sáabych encji Diagramy ER Podstawy modeli relacyjnych Reprezentacja danych: dwuwymiarowa tabela, zwana relacj Przykáad: Atrybuty Tytuá Rok Czas Rodzaj )XUHN 2003 95 Kolor Kingsajz 1987 100 Kolor Seksmisja 1985 110 Kolor Krotki Bazy danych 3 Bazy danych 4

Podstawy modeli relacyjnych Podstawy modeli relacyjnych Schemat relacji - nazwa relacji oraz jej zbiór atrybutów Film (tytuá, rok, czas, rodzaj) W modelu relacyjnym projekt skáada si z jednego lub kilku schematów relacji. Zbiór schematów relacji jest okrelany schematem relacyjnym bazy danych lub schematem bazy danych. Krotki - wiersze relacji, poza wierszem nagáówka, zawierajcym atrybuty relacji W krotce ka*dy atrybut ma swój odpowiednik w postaci skáadowej krotki Przykáad: (Gwiezdne wojny, 1977, 124, kolor) Jedna krotka nie mo*e wystpiü w relacji wicej ni* jeden raz. Dziedziny -pewien okrelony typ elementarny, powizany z ka*dym atrybutem relacji W modelu relacyjnym ka*da skáadowa ka*dej relacji musi mieü okrelony typ atomowy (elementarny) np. typ caákowity, znakowy. Wartoü atrybutu nie mo*e byü ani rekordem, ani list, ani zbiorem... Przykáad: Film (tytuá, rok, czas, rodzaj) Bazy danych 5 Bazy danych 6 Równowa*ne sposoby reprezentowania relacji Schematy i krotki relacji s zbiorami, std porzdek w jakim je przedstawimy nie ma znaczenia. Tytuá Rok Czas Rodzaj )XUHN 2003 95 Kolor Kingsajz 1987 100 Kolor Seksmisja 1985 110 Kolor ()urek, 2003, 95, kolor) Rodzaj Tytuá Rok Czas Kolor )XUHN 2003 95 Kolor Kingsajz 1987 100 Kolor Seksmisja 1985 110 (Kolor, )urek, 2003, 95) Bazy danych 7 Formalny zapis krotki Instancje Krotka - funkcja przeprowadzajca atrybuty ze schematu relacji do ich zbiorów wartoci - do skáadowych tych krotek: tytuá -> )urek rok -> 2003 czas -> 95 rodzaj -> Kolor Instancja relacji - zbiór krotek danej relacji Instancja bie*ca - zbiór krotek, które s w relacji teraz Bazy danych 8

Proces modelowania i implementacji bazy danych Analiza informacji, które bd zawarte w bazie danych Diagram E/R System zarzdzania relacyjn baz danych Schemat bazy danych (Model relacyjny) Od diagramów ERD do relacji Zbiory encji przeksztaácamy w relacj z takim samym zbiorem atrybutów: Zwizki z diagramów encji przyjmuj postaü relacji. Relacja danego zwizku R ma nastpujce atrybuty: dla ka*dego zbioru encji uczestniczcego w R umieszczamy w schemacie relacji odpowiadajcej R klucze tych zbiorów jako atrybuty tej relacji jeli zwizek ma wáasny klucz, to te* doáczamy jego atrybuty do zbioru atrybutów relacji Uwaga: w przypadku powtarzania si nazw atrybutów nale*y zmieniü ich nazwy Bazy danych 9 Bazy danych 10 Od zbiorów encji do relacji Od zwizków do relacji tytuá rok tytuá rok nazwisko adres Filmy Filmy Wystpuje Aktorzy czas rodzaj czas rodzaj Tabela Filmy: Tytuá Rok Czas Rodzaj )XUHN 2003 95 Kolor Kingsajz 1987 100 Kolor Seksmisja 1985 110 Kolor Bazy danych 11 Tytuá Rok nazwiskoaktora Potop 1982 Daniel Olbrychski )XUHN 2003 Katarzyna Figura Kingsajz 1987 Katarzyna Figura Kingsajz 1987 Jerzy Stuhr Seksmisja 1985 Jerzy Stuhr Bazy danych 12

Zwizki wieloargumentowe Záo*enie relacji Filmy Kontrakty Aktorzy Dopuszcza si mo*liwoü záo*enia dwóch relacji: relacji zwizanej z danym zbiorem encji E z relacj powstaá ze zwizku R wiele do jeden z E do innego zbioru encji. Studio producenta Studio aktora tytuá rok nazwa Studia Filmy Posiada Studia Tabela kontrakty: Klucz dla zbioru Filmy: tytuá, rok Klucz dla zbioru Aktorzy: nazwiskoaktora Klucz dla Studia producenta: studioproducenta Klucz dla Studia aktora: studioaktora czas rodzaj Filmy(tytuá, rok, czas, rodzaj) Studia (nazwa, adres) Posiada (tytuá, rok, nazwa) adres Filmy(tytuá, rok, czas, rodzaj, nazwast) Studia (nazwa, adres) Bazy danych 13 Bazy danych 14 Zbiory sáabych encji Relacja odpowiadajca sáabemu zbiorowi encji E powinna zawieraü wszystkie atrybuty, które wchodz w skáad klucza tego zbioru (tj. atrybuty ze zbioru sáabego, jak te* atrybuty z innych wspomagajcych zbiorów encji) oraz pozostaáe atrybuty zbioru sáabego. Zwizki oznaczone podwójnym rombem nie tworz oddzielnych relacji. Trzy podejcia: Reprezentacja zwizków isa w modelu relacyjnym zorientowane obiektowo - ka*da krotka nale*y tylko do jednej klasy; tworzenie relacji dla ka*dej klasy biorc pod uwag wszystkie jej atrybuty styl E/R - relacje s tworzone dla ka*dej podklasy; zawieraj atrybuty kluczowe i te atrybuty, które sa powizane z podklas Wykorzystujc NULL - nale*y utworzyü tylko jedn relacje; encje przyjmuj wartoci NULL dla tych atrybutów, które nie wchodz w skáad danego zbioru encji Bazy danych 15 Bazy danych 16

Porównanie metod Zapytania: Koszt zapyta zwizanych z wieloma relacjami jest du*y, std podejcie wykorzystujce NULL jest lepsze. Podejscie zorientowane obiektowo jest lepsze dla zapyta typu jaka bro jest wykorzystywana w kreskówkach trwajcych dáu*ej ni* 150 minut Styl E/R jest lepszy dla zapyta typu jakie filmy z roku 1999 trwaáy dáu*ej ni* 150 minut Preferuje si schematy z mo*liwie maá liczb relacji (E/R - 1 relacja na 1 zbiór encji; o-o - majc korze i n podklas otrzymujemy 2 n klas) Minimalizacja zajtoci dysku: najlepsza metoda o-o; metoda NULL - w zale*noci od liczby elementów brakujcych mo*e byü lepsza lub gorsza od metody E/R. SQL: zmienne podstawiania funkcje Bazy danych 17 Bazy danych 18 Zmienne podstawiania Zmienne podstawiania Zmienne podstawiania sáu* do reprezentowania wartoci wprowadzanych dopiero w trakcie wykonywania. Reprezentacja zmiennej: &nazwa_zmiennej SQL> select ename, sal from emp where sal>&min_placa; Prosz podaü wartoü dla min_placa: 2000 stare 1: select ename, sal from emp where sal>&min_placa nowe 1: select ename, sal from emp where sal>2000 ENAME SAL ---------- ---------- JONES 2975 BLAKE 2850 CLARK 2450 SCOTT 3000 KING 5000 FORD 3000 Bazy danych 19 SQL> select ename, sal from emp where job=&stanowisko; Prosz podaü wartoü dla stanowisko: MANAGER stare 1: select ename, sal from emp where job=&stanowisko nowe 1: select ename, sal from emp where job=manager select ename, sal from emp where job=manager * BàD w linii 1: ORA-00904: "MANAGER": niepoprawny identyfikator SQL> select ename, sal from emp where job='&stanowisko'; Prosz podaü wartoü dla stanowisko: MANAGER SQL> select ename, sal from emp where job=&stanowisko; Prosz podaü wartoü dla stanowisko: MANAGER ENAME SAL ---------- ---------- JONES 2975 BLAKE 2850 CLARK 2450 Bazy danych 20

Zmienne podstawiania Je*eli zmienna jest poprzedzona dwoma ampersandami SQL* Plus *da wprowadzenia jej wartoci tylko raz i przechowuje j wykorzystujc przy ka*dym wykonaniu polecenia: SQL> select ename, sal from emp where sal<&&max_placa; Prosz podaü wartoü dla max_placa: 2000 stare 1: select ename, sal from emp where sal<&&max_placa nowe 1: select ename, sal from emp where sal<2000 ENAME SAL ---------- ---------- SMITH 800 ALLEN 1600 SQL> select ename, sal from emp where sal<&&max_placa; stare 1: select ename, sal from emp where sal<&&max_placa nowe 1: select ename, sal from emp where sal<2000 DEFINE Polecenia DEFINE (DEF) u*ywamy do sprawdzenia, czy dana zmienna zostaáa ju* zdefiniowana, lub je*eli chcemy zdefiniowaü now zmienn. Tak zmienn mo*emy wówczas wykorzystaü w poleceniu SELECT oznaczajc j pojedynczym ampersandem. Zmienn mo*emy usunü poleceniem UNDEFINE SQL> DEF DEFINE MAX_PLACA = "2000" (CHAR) SQL> UNDEFINE MAX_PLACA SQL> DEFINE roczne_zarobki='sal*12'; SQL> select ename, job, &roczne_zarobki from emp order by &roczne_zarobki; stare 1: select ename, job, &roczne_zarobki from emp order by &roczne_zarobki nowe 1: select ename, job, sal*12 from emp order by sal*12 ENAME JOB SAL*12 ---------- --------- ---------- SMITH CLERK 9600 JAMES CLERK 11400 Bazy danych 21 Bazy danych 22 Funkcje dziaáajce na pojedynczych wartociach Dziaáaja na ka*dym wierszu wybranym przez zapytanie Zwracaj jeden wynik dla ka*dego wiersza S jedno- lub wieloargumentowe Mo*na je zagnie*d*aü Mo*na ich u*ywaü wszdzie tam, gdzie stosuje si zmienne, kolumny, wyra*enia, w klauzulach SELECT, WHERE, ORDER BY Funkcje znakowe Funkcje liczbowe Funkcje dziaáajce na datach Funkcje konwersji Funkcje polimorficzne Bazy danych 23 Funkcje znakowe Funkcja LOWER LOWER (wartoü) - zmienia wielkie litery na odpowiadajce im maáe litery alfabetu. Inne znaki pozostawia bez zmian. SQL> select lower(dname) from dept; LOWER(DNAME) -------------- accounting research sales operations Bazy danych 24

Funkcja UPPER UPPER (wartoü) - zmienia maá litery na odpowiadajce im wielkie litery alfabetu. Inne znaki pozostawia bez zmian. SQL> select ename from emp where ename =upper('&ename'); Prosz podaü wartoü dla ename: smith stare 1: select ename from emp where ename =upper('&ename') nowe 1: select ename from emp where ename =upper('smith' ) ENAME ---------- SMITH Funkcja INITCAP INITCAP (wartoü) - zamienia pierwsz liter ka*dego sáowa na wielk, pozostaáe litery na maáe. Inne znaki pozostawia bez zmian. SQL> select initcap(dname), initcap(loc) from dept; INITCAP(DNAME) INITCAP(LOC) -------------- ------------- Accounting New York Research Dallas Sales Chicago Operations Boston Bazy danych 25 Bazy danych 26 Funkcja LPAD LPAD (wartoü, n, [ cig ]) - uzupeánia kolumny lub literaáy z lewej strony do dáugoci n za pomoc zadanego wyra*enia napisowego cig. Jeli ostatni argument jest opuszczony, nastpuje uzupeánienie spacjami. Funkcja RPAD RPAD (wartoü, n, [ cig ]) - uzupeánia kolumny lub literaáy z prawej strony do dáugoci n za pomoc zadanego wyra*enia napisowego cig. Jeli ostatni argument jest opuszczony, nastpuje uzupeánienie spacjami. SQL> select lpad(dname, 20,'*'), lpad(dname, 20), lpad(deptno, 20,'.') from dept; LPAD(DNAME,20,'*') LPAD(DNAME,20) LPAD(DEPTNO,20,'.') -------------------- -------------------- -------------------- **********ACCOUNTING ACCOUNTING...10 ************RESEARCH RESEARCH...20 ***************SALES SALES...30 **********OPERATIONS OPERATIONS...40 SQL> select rpad(dname, 20,'*'), rpad(dname, 20), rpad(deptno, 20,'.') from dept; RPAD(DNAME,20,'*') RPAD(DNAME,20) RPAD(DEPTNO,20,'.') -------------------- -------------------- -------------------- ACCOUNTING********** ACCOUNTING 10... RESEARCH************ RESEARCH 20... SALES*************** SALES 30... OPERATIONS********** OPERATIONS 40... Bazy danych 27 Bazy danych 28

Funkcja SUBSTR SUBSTR (wartoü, m, [n]) - wybiera podcig skáadajcy si z n znaków z kolumny, wyra*enia lub literaáu, poczwszy od znaku o numerze m. Jeli n nie jest podane, wynikiem jest podcig od pozycji m do koca wartoci, z której wycinamy. SQL> select substr('oracle',2,4), substr(dname, 2), substr(dname, 3, 5) from dept; SUBS SUBSTR(DNAME, SUBST ---- ------------- ----- RACL CCOUNTING COUNT RACL ESEARCH SEARC RACL ALES LES RACL PERATIONS ERATI Funkcja INSTR INSTR (wartoü, ciag ) - wskazuje miejsce pierwszego wystpienia wzorca cig ; INSTR (wartoü, ciag,m,n) - wskazuje miejsce poáo*enia n-tego wystpienia wzorca cig, poczwszy od pozycji m. SQL> select dname, instr(dname,'a'), instr(dname,'es'), instr(dname, 'C', 1,2) from dept; DNAME INSTR(DNAME,'A') INSTR(DNAME,'ES') INSTR(DNAME,'C',1,2) -------------- ---------------- ----------------- -------------------- ACCOUNTING 1 0 3 RESEARCH 5 2 0 SALES 2 4 0 OPERATIONS 5 0 0 Bazy danych 29 Bazy danych 30 Funkcje LTRIM i RTRIM LTRIM (wartoü, znaki ); RTRIM(wartoü, znaki ) - usuwa z lewej (RTRIM z prawej) strony wystpienia dowolnych kombinacji znaków nale*cych do argumentu znaki. Jeli drugi argument nie jest podany, usuwa spacje. SQL> select dname, ltrim(dname, 'A'), ltrim(dname,'as'), ltrim(dname, 'ASOP') from dept; DNAME LTRIM(DNAME,'A LTRIM(DNAME,'A LTRIM(DNAME,'A -------------- -------------- -------------- -------------- ACCOUNTING CCOUNTING CCOUNTING CCOUNTING RESEARCH RESEARCH RESEARCH RESEARCH SALES SALES LES LES OPERATIONS OPERATIONS OPERATIONS ERATIONS SQL> select dname, rtrim(dname, 'G'), rtrim(dname,'ghs') from dept; DNAME RTRIM(DNAME,'G RTRIM(DNAME,'G -------------- -------------- -------------- ACCOUNTING ACCOUNTIN ACCOUNTIN RESEARCH RESEARCH RESEARC SALES SALES SALE Bazy danych 31 Funkcja LENGTH LENGTH (wartoü) - zwraca dáugoü cigu zawartego w argumencie SQL> select length('sql'), length(deptno), length(dname) from dept; LENGTH('SQL') LENGTH(DEPTNO) LENGTH(DNAME) ------------- -------------- ------------- 3 2 10 3 2 8 3 2 5 3 2 10 Bazy danych 32

Funkcja TRANSLATE TRANSLATE ((ródáo, z, na) - w (ródáowym cigu znaków ka*de wystpienie dowolnego znaku wystpujacego w cigu z, zostanie zastpione odpowiadajcym (wedáug pozycji) znakiem z cigu na. Pozostaáe znaki nie s zmieniane. Jeli nie ma odpowiadajacego znaku (argument na jest krótszy ni* argument z), wystpienie znaku (ródáowego zostanie usunite. Funkcja REPLACE REPLACE ((ródáo, wzorzec, cig_zastpujcy) - w (ródáowym cigu wszystkie wystpienia danego cigu wzorzec zostaj zastpione przez cig_zastpujcy. Jeli argument cig_zastpujcy nie jest podany, wszystkie wystpienia cig zostan usunite. UWAGA: Funkcja REPLACE stanowi uzupeánienie funkcji TRANSLATE. TRANSLATE realizuje zamian znaków typu jeden na jeden. REPLACE pozwala na zamian, wzgdnie usuwanie caáych cigów znaków. Wzorzec i cig_zastepujcy mog byü ró*nej dáugoci. Bazy danych 33 Bazy danych 34 Funkcje liczbowe Funkcja ROUND ROUND (wartoü, n) - zaokrgla wartoci do -tego miejsca po przecinku. Jeli n jest ujemne, zaokrglenie natepuje do n-tego miejsca przed przecinkiem. Jeli n nie jest podane, zaokrgla si do jednoci. Funkcja TRUNC TRUNC (wartoü, n) - obcina podan wartoü do n-tego miejsca po przecinku. Jeli n jest ujemne, n cyfr przed przecinkiem zostaje zamienione na 0. Jeli n nie jest podane, obcicie nastpuje z dokáadnoci do jednoci. SQL> SELECT ROUND(45.932,1), ROUND(45.932), ROUND(45.932,-1), ROUND(SAL/32,2) FROM EMP WHERE DEPTNO=10; ROUND(45.932,1) ROUND(45.932) ROUND(45.932,-1) ROUND(SAL/32,2) --------------- ------------- ---------------- --------------- 45,9 46 50 76,56 45,9 46 50 156,25 45,9 46 50 40,63 SQL> SELECT TRUNC(45.932,1), TRUNC(45.932), TRUNC(45.932,-1), TRUNC(SAL/32,2) FROM EMP WHERE DEPTNO=10; TRUNC(45.932,1) TRUNC(45.932) TRUNC(45.932,-1) TRUNC(SAL/32,2) --------------- ------------- ---------------- --------------- 45,9 45 40 76,56 45,9 45 40 156,25 45,9 45 40 40,62 Bazy danych 35 Bazy danych 36

Funkcja CEIL CEIL (wartoü) - wynikiem jest najmniejsza liczba caákowita wiksza lub równa podanej wartoci. Funkcja FLOOR FLOOR (wartoü) - najwiksza liczba caákowita mniejsza lub równa podanej wartoci. SQL> SELECT CEIL(SAL),CEIL(99.9), CEIL(101.76),CEIL(-11.1) FROM EMP WHERE SAL BETWEEN 3000 AND 5000; CEIL(SAL) CEIL(99.9) CEIL(101.76) CEIL(-11.1) ---------- ---------- ------------ ----------- 3000 100 102-11 5000 100 102-11 3000 100 102-11 SQL> SELECT FLOOR(SAL),FLOOR(99.9), FLOOR(101.76),FLOOR(-11.1) FROM EMP WHERE SAL BETWEEN 3000 AND 5000; FLOOR(SAL) FLOOR(99.9) FLOOR(101.76) FLOOR(-11.1) ---------- ----------- ------------- ------------ 3000 99 101-12 5000 99 101-12 3000 99 101-12 Bazy danych 37 Bazy danych 38 Funkcja POWER POWER(wartoü, n) - podnosi podan wartoü do n-tej potgi. SQL> SELECT SAL, POWER(SAL, 2), POWER(SAL,3),POWER(50,5) FROM EMP WHERE DEPTNO=10; SAL POWER(SAL,2) POWER(SAL,3) POWER(50,5) ---------- ------------ ------------ ----------- 2450 6002500 1,4706E+10 312500000 5000 25000000 1,2500E+11 312500000 1300 1690000 2197000000 312500000 Funkcja SQRT SQRT(wartoü) - pierwiastek kwadratowy z wartoci kolumny lub zadanej wartoci. SQL> SELECT SAL,SQRT(SAL), SQRT(40), SQRT(COMM) FROM EMP WHERE COMM>0; SAL SQRT(SAL) SQRT(40) SQRT(COMM) ---------- ---------- ---------- ---------- 1600 40 6,32455532 17,3205081 1250 35,3553391 6,32455532 22,3606798 1250 35,3553391 6,32455532 37,4165739 Bazy danych 39 Bazy danych 40

Funkcja SIGN SIGN(wartoü) - funkcja zwraca -1, jeli argument jest ujemny, 0. jeli jest zerem oraz +1 jeli jest dodatni. SQL> SELECT SAL-COMM, SIGN(SAL-COMM), COMM-SAL, SIGN(COMM-SAL) FROM EMP WHERE DEPTNO=30; SAL-COMM SIGN(SAL-COMM) COMM-SAL SIGN(COMM-SAL) ---------- -------------- ---------- -------------- 1300 1-1300 -1 750 1-750 -1-150 -1 150 1 1500 1-1500 -1 Funkcja ABS ABS(wartoü) zwraca wartoü bezwzgldn argumentu. SQL> SELECT SAL, COMM, COMM-SAL, ABS(COMM-SAL), ABS(-35) FROM EMP WHERE DEPTNO=30; SAL COMM COMM-SAL ABS(COMM-SAL) ABS(-35) ---------- ---------- ---------- ------------- ---------- 1600 300-1300 1300 35 1250 500-750 750 35 1250 1400 150 150 35 2850 35 1500 0-1500 1500 35 950 35 MOD(wartoü1, wartoü2) - reszta z dzielenia wartoci1 przez wartoü2. Bazy danych 41 Bazy danych 42 Typ DATE Typ danych DATE W formacie DATE mo*na wyró*nic: identyfikator stulecia, rok; miesic; dzie; godzin; minut; sekund Daty mog wystpowaü w przedziale od 1-ego stycznia 4712 p.n.e. do 31-ego grudnia 4712 n.e. Bazy danych 43 Pseudokolumna SYSDATE SYSDATE - pseudokolumna zawierajaca dat systemow - bie*c dat i godzin. Mo*na j u*ywaü jak ka*d inn kolumn, np. mo*na j umieciü na licie klauzuli SELECT i wybraü z dowolnej tabeli. Mo*na j traktow jako 0 argumentow funkcj, która zwraca wynik typu DATE. SQL> SYSDATE SP2-0042: nieznane polecenie "SYSDATE" - reszta linii pomijana. SQL> SELECT SYSDATE FROM DUAL; SYSDATE -------- 05/10/21 Tabela DUAL - istnieje w ka*dej bazie ORACLE i jest dostpna do odczytu dla wszystkich u*ytkowników. Skáada si z jednej kolumny i jednego wiersza. Jest u*ytecza wówczas, gdy chcemy wybraü jak pojedyncz wartoü, która nie zale*y od zawartoci naszych tabel. Bazy danych 44

Wyra*enia arytmetyczne dla dat data + liczba - dodanie do daty pewnej liczby dni - wynikiem jest data data-liczba - odjcie od daty pewnej liczby dni - wynikiem jest data data-data - odjecie od daty innej daty, wynikiem jest liczba dni midzy nimi UWAGA: liczba mo*e byü uáamkiem, wówczas do daty dodana zostanie odpowiednia liczba godzin, minut, sekund. SQL> SELECT HIREDATE, HIREDATE+7, HIREDATE-7, SYSDATE-HIREDATE FROM EMP WHERE HIREDATE LIKE'%06%'; HIREDATE HIREDATE HIREDATE SYSDATE-HIREDATE -------- -------- -------- ---------------- 81/06/09 81/06/16 81/06/02 8900,56752 Funkcja MONTHS_BETWEEN MONTHS_BETWEEN (data1, data2) - zwraca odstp pomidzy wyspecyfikowanymi datami wyra*ony w miesicach. Wynik dodatni, jeli data1 pó(niejsza od data2, lub ujemny w przeciwnym przypadku. SQL> SELECT MONTHS_BETWEEN(SYSDATE, HIREDATE), MONTHS_BETWEEN('82/01/01','88/11/05') FROM EMP WHERE MONTHS_BETWEEN(SYSDATE, HIREDATE)>288; MONTHS_BETWEEN(SYSDATE,HIREDATE) MONTHS_BETWEEN('82/01/01','88/11/05') -------------------------------- ------------------------------------- 298,147399-82,129032 296,050625-82,129032 295,986109-82,129032 294,63127-82,129032 Bazy danych 45 Bazy danych 46 Funkcja ADD_MONTHS ADD_MONTHS (data, n) - zwraca dat plus n miesicy kalendarzowych, n- caákowite, ale mo*e byü ujemne. Jeli otrzymamy bádn dat (np. 30 lutego) wynikiem bdzie ostatnia sensowna data w otrzymanym miesicu. Funkcja NEXT_DAY NEXT_DAY(data1, dzie_tygodnia) - zwraca pierwsz po wskazanej dat, której dzie tygodnia jest taki jak wskazuje drugi argument. W argumencie podajemy numer lub nazw dnia tygodnia. SQL> SELECT HIREDATE, ADD_MONTHS(HIREDATE, 3), ADD_MONTHS(HIREDATE,-3) FROM EMP WHERE DEPTNO=20; HIREDATE ADD_MONT ADD_MONT -------- -------- -------- 80/12/17 81/03/17 80/09/17 81/04/02 81/07/02 81/01/02 87/04/19 87/07/19 87/01/19 87/05/23 87/08/23 87/02/23 81/12/03 82/03/03 81/09/03 SQL> SELECT HIREDATE, NEXT_DAY(HIREDATE, 'PITEK'), NEXT_DAY(HIREDATE, 6) FROM EMP WHERE DEPTNO=20; HIREDATE NEXT_DAY NEXT_DAY -------- -------- -------- 80/12/17 80/12/19 80/12/20 81/04/02 81/04/03 81/04/04 87/04/19 87/04/24 87/04/25 87/05/23 87/05/29 87/05/30 Bazy danych 47 Bazy danych 48

Funkcja LAST_DAY LAST_DAY(data1) - wynikiem jest data ostatniego dnia w miesicu, do którego nale*y data1. SQL> SELECT SYSDATE, LAST_DAY(SYSDATE), HIREDATE, LAST_DAY(HIREDATE), LAST_DAY(TO_DATE('03/10/2005', 'DD/MM/YYYY')) FROM EMP WHERE DEPTNO=20; SYSDATE LAST_DAY HIREDATE LAST_DAY LAST_DAY -------- -------- -------- -------- -------- 05/10/21 05/10/31 80/12/17 80/12/31 05/10/31 05/10/21 05/10/31 81/04/02 81/04/30 05/10/31 05/10/21 05/10/31 87/04/19 87/04/30 05/10/31 05/10/21 05/10/31 87/05/23 87/05/31 05/10/31 05/10/21 05/10/31 81/12/03 81/12/31 05/10/31 Funkcja ROUND ROUND(data1) - wynikiem jest data1 ze wska(nikiem godzinowym ustalonym na póánoc, jeli data1 wskazuje na godzin przed poáudniem, lub na póánoc dnia nastpnego, gdy data1 wskazuje na godzin przed poáudniem ROUND(data1, MONTH ) - wynikiem jest data pierwszego dnia miesica zawierajcego data1, gdy jest ona z pierwszej poáowy miesica, lub pierwszego dnia nastpnego miesica w przeciwnym przypadku. ROUND(data1, YEAR ) - zaokrglenie do pierwszego dnia roku. SQL> SELECT SYSDATE, ROUND(SYSDATE,'MONTH'), ROUND(SYSDATE,'YEAR') FROM DUAL; SYSDATE ROUND(SY ROUND(SY -------- -------- -------- 05/10/21 05/11/01 06/01/01 Bazy danych 49 Bazy danych 50 Funkcja TRUNC TRUNC(data1, dokáadnoü) - wynikiem jest data pierwszego dnia miesiaca zawierajacego data1, jeli dokáadnoü jest MONTH lub pierwszego dnia roku, jeli dokáadnoü jest YEAR. Bez drugiego argumentu funkcja powoduje usunicie skáadnika godzinowego z daty. Bazy danych 51