[ Pobierz całość w formacie PDF ]
.Unikanie powtórzeń pozwala na łatwiejsze i w wielu przypadkach szybszeposługiwanie się bazą danych.Mechanizmy języków stosowanych w bazach danychpozwalają ukryć złożoność struktury bazy przed użytkownikiem i operować na danych wsposób efektywny zapewniając spójność informacji.49 Bazy danych Robert Chwastek4.Warunki i wyrażeniaWarunki i wyrażenia składają się z operatorów, funkcji oraz danych, na którychdziałają.4.1.OperatorySpis wszystkich operatorów stosowanych w języku SQL podzielonych ze względuna zastosowanie przedstawiają kolejne podrozdziały.4.1.1.Operatory arytmetyczneOperatory arytmetyczne działają zasadniczo na danych typu numerycznego.Jednakniektóre z tych operatorów mogą być użyte do danych typu DATE.Spis operatorówarytmetycznych podzielonych według priorytetu przedstawia tabela:Operator Opis Przykład( ) Zmienia normalną kolejność wykonywania SELECT (X+Y)/(Y+Z).działań.Wszystkie działania wewnątrznawiasów są wykonywane przeddziałaniami poza nawiasami.+, - Operatory jednoargumentowe zachowania i.WHERE NR = -1zmiany znaku.WHERE -PLACA Y/2+, - Dodawanie, odejmowanie SELECT 2*X+1.WHERE X > Y-Z4.1.2.Operatory znakoweJedynym operatorem działającym na ciągach znaków jest operator konkatenacji.Rezultatem działania tego operatora jest ciąg znakó będący połączeniem operandów.Należy pamiętać, że ciągi znaków typu CHAR nie mogą być dłuższe niż 255 znaków.Ograniczenie to dotyczy również ciągu znakowego będącego wynikiem działaniaoperatora konkatenacji.Operator Opis Przykład|| Konkatenacja ciągów znaków SELECT Nazwa: || ENAME.50 Bazy danych Robert Chwastek4.1.3.Operatory porównaniaOperatory porównania są wykorzystywane w wyrażeniach i warunkach doporównywania dwóch wyrażeń.Wynikiem działania operatorów porównania jest zawszewartość logiczna (TRUE lub FALSE).Operator Opis Przykład( ) Zmienia normalną kolejność.NOT (A=1 OR B=1)wykonywania działań= Sprawdza, czy dwa wyrażenia są.WHERE PLACA = 1000równe!=, ^=, Sprawdza, czy dwa wyrażenia są.WHERE PLACA != 1000różne> Większe niż.WHERE PLACA > 1000= 1000, 15, nazw => Nowak );END;Można używać równocześnie przyporządkowania przez pozycję i przez nazwę, należywtedy jednak pamiętać, że parametry przyporządkowywanej przez pozycję musząwystąpić przed parametrami przyporządkowywanymi przez nazwę.6.7.2.Rozkaz CLOSERozkaz CLOSE służy do zamknięcia aktualnie otwartego kursora.Każdy kursorprzed ponownym otrwarciem musi zostać zamknięty.Rozkaz CLOSE zwalnia wszystkiezasoby przydzielone do obsługi kursora.Składnia:CLOSE cursor_name ;Parametry:cursor_name - nazwa aktualnie otwartego kursora.6.7.3.Rozkaz FETCHRozkaz FETCH zwraca następny wiersz danych z aktywnego zbioru (danychspełniających warunek rozkazu SELECT w kursorze).Odczytane informacjeprzechowywane są w zmiennych.Zwrócone dane odpowiadają zawartości kolejnychkolumn w aktualnym wierszu.Składnia:FETCH cursor_name INTO{ record_name |variable_name [, variable_name].} ;Parametry:76 Bazy danych Robert Chwastekcursor_name - nazwa aktualnie otwartego kursora.variable_name - prosta zmienna, do której zostaną zapisane dane.Wszystkie zmiennena liście muszą być uprzednio zadeklarowane.Dla każdej kolumny w kursorze, musiwystąpić odpowiadająca jej zmienna.W dodatku typy kolumn muszą być takie samejak odpowiadające im typy zmiennych lub konwertowalne do nich.record_name - nazwa zmiennej będącej rekordem (deklarowanej z użyciem atrybutu%ROWTYPE).Przykład:.OPEN prac_kursor;.LOOPFETCH prac_kursor INTO prac_rek;EXIT WHEN prac_kursor%NOTFOUND;.END LOOP;6.7.4.Rozkaz SELECT.INTORozkaz SELECT.INTO odczytuje informacje z bazy danych i zapisuje je dozmiennych.W jęzuku PL/SQL standardowy (z SQL) rozkaz SELECT został rozszerzonyo klauzulę INTO.Aby rozkaz ten działał poprawnie konieczne jest by SELECT zwracałtylko jeden wiersz (w przypadku wielu wierszy należy zadeklarować kursor i za jegopomocą odczytywać dane).Składnia rozkazu SELECT z klauzulą INTO:SELECT select_list_item [, select_list_item].INTO{ record_name |variable_name [, variable_name].}rest_of_select_statement ;Parametry:Zobacz opis rozkazu FETCH.Przykład:SELECT nazwisko, placa*12 INTO pnazw, plac_sumFROM pracownicyWHERE pracownik_nr = 12345;6.7.5
[ Pobierz całość w formacie PDF ]