SQL - Przykłady z wykładów, uwm-geodezjaZOD, ROKII, semIII, SIP, SIP ćwiczenia


Przykłady z wykładów - MySQL

Przykład 1.1

Wyświetl zawartość tablicy PRAC.

SELECT  * FROM  PRAC  ;

Przykład 1.2

Sporządź listę pracowników zatrudnionych w firmie (lista zawiera: numer pracownika , nazwisko pracownika , imię pracownika).

SELECT  NumP , NazwP , ImieP FROM  PRAC  ;

Przykład 1.3

Oblicz przychody pracowników w roku podatkowym (lista zawiera: numer, imię i nazwisko pracownika, jego pobory miesięczne i prowizję roczną oraz przychody roczne).

SELECT  NumP , ImieP , NazwP , Zasad , Prow , 12*Zasad+Prow

FROM  PRAC  ;

Przykład 1.4

Podaj pobory pracowników porządkując listę alfabetycznie wg. nazwisk pracowników (lista zawiera: imię i nazwisko pracownika oraz jego pobory miesięczne).

SELECT  ImieP , NazwP , Zasad FROM  PRAC ORDER BY NazwP  ;

Przykład 1.5

Podaj uporządkowaną listę stanowisk, na których można zatrudnić w firmie pracowników:

a). z powtórzeniami

SELECT Stan FROM  PRAC ORDER BY Stan  ;

b). bez powtórzeń

SELECT DISTINCT  Stan FROM  PRAC ORDER BY Stan  ;

Przykład 1.6

Podaj najniższe, najwyższe i średnie pobory pracowników firmy oraz odpowiedz, jaki procent najwyższych poborów stanowią pobory najniższe:

a). bez przypisania etykiet nagłówkom tabeli wynikowej

SELECT  MIN( Zasad ) , MAX( Zasad ) , AVG( Zasad ) , MIN( Zasad ) / MAX( Zasad ) * 100.00

FROM  PRAC  ;

b). z przypisaniem etykiet nagłówkom tabeli wynikowej

SELECT  MIN( Zasad ) AS Najnizsze , MAX( Zasad ) AS Najwyzsze ,

AVG( Zasad ) AS Srednie , MIN( Zasad ) / MAX( Zasad ) * 100.00 AS MinDoMax

FROM  PRAC  ;

Przykład 2.1

Zdefiniuj tablicę pracowników PRAC.

CREATE TABLE  PRAC

( NumP  INT(4)  KEY NOT NULL , NazwP  CHAR(20)  NOT NULL ,

ImieP  CHAR(15)  NOT NULL , Stan CHAR(10) , Kier  INT(4) ,

DZatrud  DATE  NOT NULL , Zasad  DECIMAL(7,2) ,

Prow  DECIMAL(7,2) , NumDz  INT(2)  )  ;

Przykład 2.2

Zdefiniuj tablicę działów w firmie DZIAL.

CREATE TABLE   DZIAL

( NumDz  INT(2)  KEY NOT NULL  , NazwaDz  CHAR(15)  NOT NULL  , Lok  CHAR(10)  )  ;

Przykład 2.3

Do tablicy DZIAL dodaj kolejną kolumnę, w której będzie zapisany numer telefonu.

ALTER TABLE   DZIAL

ADD ( Tel  CHAR(14)  )  ;

Przykład 3.1

Podaj listę osób zatrudnionych w dziale oznaczonym numerem 10, uporządkuj listę alfabetycznie wg. nazwisk pracowników.

SELECT  NumP , NazwP , ImieP , Zasad , NumDz , Stan

FROM  PRAC WHERE NumDz = 10 ORDER BY NazwP ASC;

Przykład 3.2

Podaj listę zatrudnionych w firmie osób, które zarabiają powyżej 1750 €, uporządkuj wynik począwszy od osób najlepiej zarabiających.

SELECT  NumP , NazwP , ImieP , Zasad FROM  PRAC

WHERE Zasad > 1750 ORDER BY Zasad DESC ;

Przykład 3.3

Podaj listę zatrudnionych w firmie osób, których zarobki mieszczą się w przedziale od 1750 € do 3000 € włącznie (zastosuj warunek wielokrotny). Uporządkuj listę wg. numerów pracowników rosnąco.

SELECT  NumP , ImieP , NazwP , Zasad FROM  PRAC

WHERE Zasad >= 1750 AND Zasad <= 3000 ORDER BY NumP ASC ;

Przykład 3.4

Podaj listę zatrudnionych w firmie osób, których zarobki mieszczą się w przedziale od 1750 € do 3000 € włącznie (zastosuj warunek zakresowy). Uporządkuj listę wg. numerów pracowników rosnąco.

SELECT  NumP , ImieP , NazwP , Zasad FROM  PRAC

WHERE Zasad BETWEEN 1750 AND 3000 ORDER BY NumP ASC ;

Przykład 3.5

Przygotuj listę agentów z proponowanymi poborami zasadniczymi wyższymi o 35% od dotychczas otrzymywanych. Uporządkuj listę alfabetycznie wg. nazwisk.

SELECT  NazwP , ImieP , Zasad AS P_teraz , Zasad*1.35 AS P_nowe , Stan

FROM  PRAC WHERE Stan = ”AGENT” ORDER BY NazwP ASC ;

Przykład 3.6

Przygotuj listę analityków i informatyków z proponowanymi poborami zasadniczymi wyższymi o 35% od dotychczas otrzymywanych (zastosuj warunek złożony - alternatywny). Uporządkuj listę alfabetycznie wg. nazwisk i imion.

SELECT  NazwP , ImieP , Zasad AS P_teraz , Zasad*1.35 AS P_nowe , Stan

FROM  PRAC WHERE Stan = ”INFORMATYK” OR Stan = ”ANALITYK”

ORDER BY NazwP ASC , ImieP DESC ;

Przykład 3.7

Przygotuj listę analityków i informatyków z proponowanymi poborami zasadniczymi wyższymi o 35% od dotychczas otrzymywanych (zastosuj warunek wykorzystujący porównanie ze zbiorem wartości). Uporządkuj listę alfabetycznie wg. nazwisk.

SELECT  NazwP , ImieP , Zasad AS P_teraz , Zasad*1.35 AS P_nowe , Stan

FROM  PRAC WHERE Stan IN ( ”INFORMATYK” , ”ANALITYK” )

ORDER BY NazwP ASC ;

Przykład 3.8

Podaj listę osób, których imiona zaczynają się na literę J. Uporządkuj listę alfabetycznie wg. imion.

SELECT  ImieP , NazwP FROM  PRAC

WHERE ImieP LIKE ”J%” ORDER BY ImieP ASC ;

Przykład 3.9

Podaj listę osób, których druga litera imienia to litera W. Uporządkuj listę alfabetycznie wg. imion.

SELECT  ImieP , NazwP FROM  PRAC WHERE ImieP LIKE ”_W%” ORDER BY ImieP ASC ;

Przykład 3.10

Podaj listę pracowników, którzy nie mają ustalonych przełożonych (nieustalone wartości pola kolumny Kier).

SELECT   NazwP , ImieP , Stan FROM  PRAC WHERE  Kier  IS  NULL  ;

Przykład 3.11

Podaj uporządkowaną malejąco według prowizji listę tych pracowników (w porządku alfabetycznym), którzy wypracowali w bieżącym roku prowizję.

SELECT   NazwP , ImieP , Prow FROM  PRAC

WHERE  Prow  IS  NOT NULL ORDER BY Prow DESC , NazwP ASC ;

Przykład 4.1

Oblicz średnie pobory zasadnicze dla wszystkich stanowisk pracy w firmie wyłączając osoby zatrudnione na stanowisku PREZES. Podaj również liczbę osób zatrudnionych na tych stanowiskach.

SELECT  Stan , AVG( Zasad ) AS ”Śr. pobory” , COUNT( * )  AS ”liczba pracowników”

FROM  PRAC WHERE  Stan  <> ”PREZES”

GROUP BY  Stan ORDER BY Stan ;

Przykład 4.2

Podaj listę tych stanowisk pracy w firmie (wyłączając z listy stanowisko PREZES), dla których średnie pobory zasadnicze są wyższe niż 2.500,00 €.

SELECT  Stan , AVG( Zasad ) AS ”Śr. pobory” , COUNT( * )  AS ”liczba pracowników”

FROM  PRAC WHERE  Stan  <> ”PREZES”

GROUP BY  Stan HAVING  AVG( Zasad )  >  2500

ORDER BY Stan ;

Przykład 5.1

Dołącz do tabeli DZIAL informację o dziale, którego nazwa brzmi SPRZEDAŻ lokalizacja to BYDGOSZCZ, numer telefonu 500-333-444, a nadany numer działu to 50:

a). pełna wersja polecenia (nie wymaga się wiedzy o rzeczywistej kolejności kolumn w tabeli, można również pomijać niektóre pola we wprowadzanym wierszu tabeli)

INSERT  INTO  DZIAL   ( NazwaDz , Lok , Tel , NumDz )

VALUES  ( ”SPRZEDAŻ” , ”BYDGOSZCZ” , ”500333444” , 50 ) ;

b). skrócona wersja polecenia (znamy kolejność kolumn w tabeli, musimy podać wartości dla wszystkich pól wprowadzanego wiersza tabeli, a jeżeli którejś nie znamy a dopuszczalna jest wartość pusta podajemy NULL)

INSERT  INTO  DZIAL  VALUES  ( 50 , ”SPRZEDAŻ” , ”BYDGOSZCZ” , ”500333444” )  ;

Przykład 5.2

Dołącz do tabeli PRAC informację o nowym pracowniku ANDRZEJU PIWNYM zatrudnionym na stanowisku KIEROWNIKA w dniu 18 stycznia 2007 roku w dziale numer 50 z poborami zasadniczymi 2500, któremu przydzielono numer 5965, i którego przełożony ma numer 5516:

a). pełna wersja polecenia (nie wymaga się wiedzy o rzeczywistej kolejności kolumn w tabeli, można również pomijać niektóre pola we wprowadzanym wierszu tabeli)

INSERT  INTO  PRAC  ( ImieP , NazwP , Stan , DZatrud , NumDz , Zasad , NumP , Kier )

VALUES  ( ”ANDRZEJ” , ”PIWNY” , ”KIEROWNIK” , ”18-01-2007” , 50 , 2500 , 5965 , 5516 )  ;

b). skrócona wersja polecenia (znamy kolejność kolumn w tabeli, musimy podać wartości dla wszystkich pól wprowadzanego wiersza tabeli, a jeżeli którejś nie znamy a dopuszczalna jest wartość pusta podajemy NULL)

INSERT  INTO  PRAC   VALUES  (  5965 ,”PIWNY” , ”ANDRZEJ” , ”KIEROWNIK” , 5516  ,
”18-01-2007” , 2500 , NULL , 50  )  ;

Przykład 5.3

W tabeli PRAC zmień pobory zasadnicze i prowizję ZOFII JAWORSKIEJ na wartości: 1520 € i 315 € (pamiętaj, że imię i nazwisko to słabe wyróżniki konkretnej osoby!).

UPDATE  PRAC SET  Zasad  =  1520 , Prow  =  315

WHERE  ImieP  =  ”ZOFIA”  AND  NazwP  =  ”JAWORSKA”  ;

Przykład 5.4

Zwolnij osoby zatrudnione w dziale numer 40 usuwając ich dane z tabeli PRAC.

DELETE FROM  PRAC WHERE  NumDz  =  40  ;

Przykład 6.1

Utwórz listę pracowników, których pobory zasadnicze w firmie są wyższe niż pobory średnie.

SELECT  ImieP , NazwP , Stan , Zasad FROM  PRAC

WHERE  Zasad  > (  SELECT  AVG(Zasad)  FROM  PRAC  )  ;

Przykład 6.2

Utwórz listę pracowników, których pobory zasadnicze w firmie są wyższe niż pobory średnie, ograniczając listę pracowników do tych, którzy nie są zatrudnieni na stanowisku PREZES.

SELECT  ImieP , NazwP , Stan , Zasad FROM  PRAC

WHERE  Zasad  > (  SELECT  AVG(Zasad)  FROM  PRAC  ) 

AND  Stan  !=  `PREZES' ;

Przykład 6.3

Utwórz ograniczoną listę pracowników - bez do tych, którzy są zatrudnieni na stanowisku PREZES - których pobory zasadnicze w firmie są wyższe niż pobory średnie, dbając o to by do średniej nie były liczone pobory zasadnicze tych osób, które są zatrudnione na stanowisku PREZES.

SELECT  ImieP , NazwP , Stan , Zasad FROM  PRAC

WHERE  Zasad  > (  SELECT  AVG(Zasad)  FROM  PRAC  WHERE   Stan  !=  `PREZES' ) 

AND  Stan  !=  `PREZES' ;

Przykład 6.4

Utwórz listę wszystkich pracowników, którzy pracują w działach zlokalizowanych w GDYNI. Uporządkuj wynik rosnąco według numerów działów i alfabetycznie według nazwisk oraz imion pracowników.

SELECT  ImieP , NazwP , NumDz FROM  PRAC

WHERE  NumDz  IN (  SELECT  NumDz  FROM  DZIAL WHERE  Lok = `GDYNIA' ) 

ORDER BY NumDz  ASC , NazwP ASC , ImieP ASC;

Przykład 6.5

Napisz polecenie, które odpowie na pytanie: “Którzy pracownicy z tego samego działu co SAWICZ mają pobory zasadnicze niższe niż pobory średnie? ”

SELECT  NazwP , ImieP , Stan , Zasad , NumDz FROM  PRAC

WHERE  Zasad <  (  SELECT  AVG( Zasad)  FROM  PRAC  )

AND  NumDz  IN  (  SELECT  NumDz   FROM  PRAC WHERE  NazwP  =  `SAWICZ'  )  ;

Przykład 6.6

Napisz polecenie, które odpowie na pytanie: “Czyje pobory zasadnicze są wyższe od poborów LECHA ADAMCZYKA wyłączając z tej listy PREZESÓW?”.

a). gdy wiemy, że jest tylko jeden Lech Adamczyk

SELECT  NazwP , ImieP , Stan , Zasad FROM  PRAC

WHERE  Zasad >   (  SELECT  Zasad  FROM  PRAC

WHERE  NazwP  =  `ADAMCZYK' AND ImieP = `LECH' )

AND  Stan  !=  `PREZES'  ;

b). gdy nie wiemy ile osób o tym samym imieniu i nazwisku pracuje w firmie, a pytanie przekształcimy do formy: “Czyje pobory zasadnicze są wyższe od poborów któregokolwiek LECHA ADAMCZYKA wyłączając z tej listy PREZESÓW?”

SELECT  NazwP , ImieP , Stan , Zasad FROM  PRAC

WHERE  Zasad >  ANY (  SELECT  Zasad  FROM  PRAC

WHERE  NazwP  =  `ADAMCZYK' AND ImieP = `LECH' )

AND  Stan  !=  `PREZES'  ;

c). gdy nie wiemy ile osób o tym samym imieniu i nazwisku pracuje w firmie, a pytanie przekształcimy do formy: “Czyje pobory zasadnicze są wyższe od poborów każdego LECHA ADAMCZYKA wyłączając z tej listy PREZESÓW?”

SELECT  NazwP , ImieP , Stan , Zasad FROM  PRAC

WHERE  Zasad >   (  SELECT  MAX( Zasad )  FROM  PRAC

WHERE  NazwP  =  `ADAMCZYK' AND ImieP = `LECH' )

AND  Stan  !=  `PREZES'  ;

Przykład 6.7

Napisz polecenie, które odpowie na pytanie: “Czyje pobory zasadnicze są wyższe od poborów któregokolwiek ADAMCZYKA wyłączając z tej listy PREZESÓW?”.

SELECT  NazwP , ImieP , Stan , Zasad FROM  PRAC

WHERE  Zasad >  ANY  (  SELECT  Zasad  FROM  PRAC WHERE  NazwP  =  `ADAMCZYK' )

AND  Stan  !=  `PREZES'  ;

Przykład 7.1

Wypisz listę pracowników, których pobory zasadnicze są niższe niż wynoszą średnie pobory zasadnicze wszystkich osób zatrudnionych w firmie na identycznym stanowisku.

SELECT  *  FROM  PRAC  GLOWNE

WHERE  GLOWNE.Zasad  < ( SELECT  AVG( PODZAP.Zasad )  FROM  PRAC  PODZAP

WHERE   PODZAP.Stan  =  GLOWNE.Stan )  ;

Przykład 7.2

Wypisz listę pracowników, którzy mają najwyższą pensję w swoim dziale.

SELECT  NumP , NazwP , NumDz , Stan , Zasad FROM  PRAC  Z

WHERE  Zasad  =  ( SELECT  MAX( Zasad ) FROM  PRAC  W WHERE   W.NumDz  =  Z.NumDz ) ;

Przykład 7.3

Wypisz listę działów, które mają co najmniej pięciu pracowników.

SELECT  NumDz , NazwaDz , Lok FROM  DZIAL  D

WHERE  5  <=  (  SELECT  COUNT( * ) FROM  PRAC  P WHERE  P.NumDz  =  D.NumDz  ) ;

Przykład 7.4

Wypisz listę działów z tabeli DZIAL, w których są zatrudnieni pracownicy otrzymujący prowizję.

SELECT  *  FROM  DZIAL  D

WHERE  EXISTS (  SELECT  *  FROM  PRAC  P WHERE  P.NumDz  =  D.NumDz

AND  Prow  IS  NOT  NULL  ) ;

Przykład 7.5

Sprawdź poprawność wprowadzenia danych do tabel PRAC i DZIAL ( znajdź te wiersze tabeli PRAC, w których wpisana w polu NumDz wartość nie ma odpowiednika w polu NumDz tabeli DZIAL ):

a). chcemy poznać błędne wiersze

SELECT  *  FROM  PRAC  P

WHERE  NOT  EXISTS (  SELECT  *  FROM  DZIAL  D WHERE  D.NumDz  =  P.NumDz  )  ;

wynik (brak błędnych wierszy):

0x01 graphic

b). interesuje nas tylko liczba błędnych wierszy

SELECT   COUNT(*) AS ”Błędów”  FROM  PRAC  P

WHERE  NOT  EXISTS (  SELECT  *  FROM  DZIAL  D WHERE  D.NumDz  =  P.NumDz  )  ;

wynik (brak błędnych wierszy):

0x01 graphic

Przykład 8.1

Wypisz listę pracowników, których stanowiska rozpoczynają się na literę A.

SELECT  TP.NazwP , TP.Stan , TD.Lok  FROM  PRAC  TP , DZIAL  TD

WHERE  TP.NumDz = TD.NumDz AND  TP.Stan  LIKE  `A%' ;

Przykład 8.2

Wypisz listę pracowników, których kierownikiem jest BOROWA:

a). użyj konstrukcji podzapytania

SELECT  NazwP , ImieP , Kier FROM  PRAC

WHERE   Kier  =  ( SELECT  NumP  FROM  PRAC WHERE  NazwP  =  `BOROWA'

AND  Stan  =  `KIEROWNIK' )  ;

b). użyj konstrukcji złączenia

SELECT  P.NazwP , P.ImieP , P.Kier FROM  PRAC  P , PRAC  K

WHERE  P.Kier  =  K.NumP AND  K.NazwP  =  `BOROWA' AND  K.Stan  =  `KIEROWNIK'  ;

Przykład 8.3

Wypisz listę działów, których kierownik został przyjęty do pracy później niż przynajmniej jeden z jego podwładnych.

SELECT  NumDz , NazwaDz , Lok  FROM  DZIAL  D

WHERE  EXISTS (  SELECT  K.* FROM  PRAC  K , PRAC  P

WHERE  K.NumP  =  P.Kier

AND  K.NumDz  =  D.NumDz

AND  K.DZatrud  >  P.DZatrud  )  ;

Przykład 8.4

Wypisz bez powtórzeń listę stanowisk, na których pracują osoby zatrudnione w Gdyni:

a). użyj konstrukcji podzapytania

SELECT DISTINCT Stan FROM PRAC

WHERE NumDz IN ( SELECT NumDz FROM DZIAL WHERE Lok = `GDYNIA' ) ;

b). użyj konstrukcji podzapytania skorelowanego z predykatem EXISTS

SELECT DISTINCT Stan FROM PRAC P

WHERE EXISTS ( SELECT * FROM DZIAL D WHERE D.NumDz = P.NumDz

AND Lok = `GDYNIA' ) ;

c). użyj konstrukcji złączenia

SELECT P.Stan , D.Lok FROM PRAC P , DZIAL D

WHERE P.NumDz = D.NumDz AND D.Lok = `GDYNIA' ;

Przykład 8.5

Wypisz listę: ”Po ile osób zatrudnionych w Gdyni pracuje na poszczególnych stanowiskach pracy?”:

a). użyj konstrukcji podzapytania

SELECT Stan , COUNT( * ) AS `Liczba osób' FROM PRAC

WHERE NumDz IN ( SELECT NumDz FROM DZIAL WHERE Lok = `GDYNIA' )

GROUP BY Stan ;

b). użyj konstrukcji złączenia

SELECT P.Stan , COUNT( * ) AS `Liczba osób' FROM PRAC P , DZIAL D

WHERE P.NumDz = D.NumDz AND D. Lok = `GDYNIA'

GROUP BY P.Stan ;



Wyszukiwarka

Podobne podstrony:
Tematyka wykładów, uwm-geodezjaZOD, ROKII, semIII, SIP
test z EGIB, uwm-geodezjaZOD, ROKII, semIII, EGiB
Geodezja wykłady UWM, Studia PG, Semestr 04, Geodezja, Wykłady, UWM Olsztyn
wyklady z kartografii, Geodezja, rok 2, Kartografia
Geodezja wyklad 6 instrumenty geodezyjne (11 04 2011)(1)
3 Bazy danych SQL cz 1 wykład
PROCES INWESTYCYJNY W BUDOWNICTWIE 2, geodezja, UWM Geodezja GiSzN
fiza egz pozostale, UWM Geodezja GiSzN, Fizyka
Test-kolokwium 2-wykład wariant2a, Geodezja, Fotogrametria, Testy
Teodolit wyklady na geodezje
3 wyklad Rysunek geodezyjny
wyklady budownictwo, geodezja, ROK II, Zarys budownictwa
teoria-cw3-44-46, UWM Geodezja GiSzN, Fizyka
teoria-cw5-57, UWM Geodezja GiSzN, Fizyka
teoria-cw4-48, UWM Geodezja GiSzN, Fizyka
Przykładowe zadania, UWM Weterynaria, Chemia
Ćw45, UWM Geodezja GiSzN, Fizyka
teoria-cw5, UWM Geodezja GiSzN, Fizyka

więcej podobnych podstron