(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 2: Język bazy danych - SQL Proste zapytania
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Wprowadzenie do języka SQL język dostępu do bazy danychjęzyk dostępu do bazy danych język deklaratywnyjęzyk deklaratywny grupy poleceń języka:grupy poleceń języka: –DQL (ang. Data Query Language) –DML (ang. Data Manipulation Language) –DDL (ang. Data Definition Language) –DCL (ang. Data Control Language) polecenie SQL może być zapisane:polecenie SQL może być zapisane: –w jednym bądź wielu wierszach –dużymi lub małymi literami polecenie SQL kończymy średnikiempolecenie SQL kończymy średnikiem SELECT * FROM pracownicy; pracownicy;
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Projekcja SELECT nazwisko, etat FROM pracownicy; SELECT nazwisko, etat FROM pracownicy; wybór wartości określonych atrybutów relacjiwybór wartości określonych atrybutów relacji Wyrażenia arytmetyczne operatory arytmetyczneoperatory arytmetyczne –+, -, *, / SELECT nazwisko, placa_pod*12, placa_dod+200 FROM pracownicy; SELECT nazwisko, placa_pod*12, placa_dod+200 FROM pracownicy;
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Aliasy atrybutów relacji alias - alternatywna nazwa atrybutualias - alternatywna nazwa atrybutu SELECT nazwisko, placa_pod*12 roczna_placa, placa_dod+200 "nowe dodatki" FROM pracownicy; SELECT nazwisko, placa_pod*12 roczna_placa, placa_dod+200 "nowe dodatki" FROM pracownicy; Operator konkatenacji - || umożliwia łączenie wartości wyświetlanych atrybutówumożliwia łączenie wartości wyświetlanych atrybutów SELECT 'Pracownik ' || nazwisko FROM pracownicy; SELECT 'Pracownik ' || nazwisko FROM pracownicy;
(c) 1999, Instytut Informatyki Politechniki Poznańskiej funkcja NVL o następującej specyfikacjifunkcja NVL o następującej specyfikacji NVL (wyrażenie, wartość) Obsługa wartości pustych SELECT nazwisko, placa_pod*12 + placa_dod FROM pracownicy; SELECT nazwisko, placa_pod*12 + placa_dod FROM pracownicy; SELECT nazwisko, placa_pod*12 + NVL (placa_dod, 0) FROM pracownicy; SELECT nazwisko, placa_pod*12 + NVL (placa_dod, 0) FROM pracownicy; Eliminowanie duplikatów SELECT etat FROM pracownicy; SELECT DISTINCT etat FROM pracownicy; słowo kluczowe DISTINCTsłowo kluczowe DISTINCT
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Edycja poleceń input tekst rozszerza bufor o wiersz tekst change /stary/nowy zamienia łańcuch znaków stary na nowy w bieżącym wierszu bufora listwyświetla zawartość bufora list n wyświetla wiersz bufora o numerze n delkasuje bieżący wiersz bufora poleceń runwyświetla i wykonuje polecenie przechowywane w buforze
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Edycja poleceń cd. save nazwa_plikuzapisuje zawartość bufora w pliku tekstowym get nazwa_plikuwczytuje do bufora zawartość pliku editumożliwia edycję zawartości bufora za pomocą edytora tekstowego (zmienna _EDITOR) start nazwa_plikuwykonuje polecenia zawarte w polecenia zawarte w pliku describe nazwa_relacji wyświetla schemat relacji exitkończy sesję użytkownika spool nazwa_plikuzapisuje w pliku informacje pojawiające się na ekranie spool offkończy zapisywanie do pliku
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Porządkowanie wyników zapytania klauzula ORDER BYklauzula ORDER BY kolejność sortowania - słowo kluczowe ASC lub DESCkolejność sortowania - słowo kluczowe ASC lub DESC ORDER BY występuje zawsze jako ostatnia klauzula zapytaniaORDER BY występuje zawsze jako ostatnia klauzula zapytania SELECT nazwisko, etat FROM pracownicy ORDER BY etat DESC, nazwisko ASC; SELECT nazwisko, etat FROM pracownicy ORDER BY etat DESC, nazwisko ASC;
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Selekcja krotek relacji klauzula WHEREklauzula WHERE składnia poleceniaskładnia polecenia SELECT atrybut 1, atrybut 2,... FROM relacja WHERE atrybut m operator wartość SELECT atrybut 1, atrybut 2,... FROM relacja WHERE atrybut m operator wartość Operatory operatory matematyczneoperatory matematyczne =,!=, <>,>,>=,,>,>=,<,<= SELECT nazwisko, placa_pod, etat FROM pracownicy WHERE placa_pod > 400; SELECT nazwisko, placa_pod, etat FROM pracownicy WHERE placa_pod > 400;
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Operatory cd. operatory SQLoperatory SQL –BETWEEN... AND... SELECT nazwisko, placa_pod, etat FROM pracownicy WHERE placa_pod BETWEEN 900 AND 1200; SELECT nazwisko, placa_pod, etat FROM pracownicy WHERE placa_pod BETWEEN 900 AND 1200; –IN SELECT nazwisko, placa_pod, id_zesp FROM pracownicy WHERE etat IN ('PROFESOR', 'DYREKTOR'); SELECT nazwisko, placa_pod, id_zesp FROM pracownicy WHERE etat IN ('PROFESOR', 'DYREKTOR');
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Operatory cd. –LIKE SELECT nazwisko, placa_pod, id_zesp FROM pracownicy WHERE nazwisko LIKE 'M%'; SELECT nazwisko, placa_pod, id_zesp FROM pracownicy WHERE nazwisko LIKE 'M%'; –IS NULL SELECT nazwisko, placa_pod FROM pracownicy WHERE placa_dod IS NULL; SELECT nazwisko, placa_pod FROM pracownicy WHERE placa_dod IS NULL;
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Operatory cd. negacje operatorów SQLnegacje operatorów SQL –NOT BETWEEN... AND... –NOT IN –NOT LIKE –IS NOT NULL SELECT nazwisko, placa_pod, id_zesp FROM pracownicy WHERE etat NOT IN ('PROFESOR', 'DYREKTOR'); SELECT nazwisko, placa_pod, id_zesp FROM pracownicy WHERE etat NOT IN ('PROFESOR', 'DYREKTOR');
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Warunki złożone klauzuli WHERE operatory logiczne w klauzuli WHEREoperatory logiczne w klauzuli WHERE –AND –OR SELECT nazwisko, placa_pod, id_zesp FROM pracownicy WHERE etat = 'ASYSTENT' AND placa_pod > 400; SELECT nazwisko, placa_pod, id_zesp FROM pracownicy WHERE etat = 'ASYSTENT' AND placa_pod > 400;
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Warunki złożone klauzuli WHERE cd. operatory logiczne mogą być stosowane jednocześnie w tej samej klauzuli WHEREoperatory logiczne mogą być stosowane jednocześnie w tej samej klauzuli WHERE AND posiada wyższy priorytet niż ORAND posiada wyższy priorytet niż OR zmiana priorytetu jest możliwa za pomocą nawiasówzmiana priorytetu jest możliwa za pomocą nawiasów SELECT nazwisko, etat FROM pracownicy WHERE placa_pod > 500 AND etat = 'ADIUNKT' OR etat = 'ASYSTENT'; SELECT nazwisko, etat FROM pracownicy WHERE placa_pod > 500 AND etat = 'ADIUNKT' OR etat = 'ASYSTENT';