Advertisement
Guest User

Untitled

a guest
May 24th, 2019
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 7.27 KB | None | 0 0
  1. Temat 5
  2. SQL – proste zapytania
  3. 1.  Wybierz numery departamentów, nazwiska pracowników oraz numery pracownicze ich szefów z tabeli EMP.
  4. SELECT ename, deptno, mgr
  5. FROM emp;
  6. 2.  Wybierz wszystkie kolumny z tabeli EMP.
  7. SELECT  *
  8. FROM emp;
  9. 3.  Wylicz roczną pensję podstawową dla każdego pracownika.
  10. SELECT ename, sal * 12
  11. FROM emp;
  12. 4.  Wylicz roczną pensję podstawową dla każdego pracownika gdyby każdemu dać podwyżkę o 250.
  13. SELECT ename, (sal + 250) * 12
  14. FROM emp;
  15. 5.  Wybrane wyrażenie SAL*12 zaetykietuj nagłówkiem ROCZNA.
  16. SELECT ename, sal*12 AS roczna
  17. FROM emp;
  18. 6.  Wybrane wyrażenie SAL*12 zaetykietuj nagłówkiem R PENSJA.
  19. SELECT ename, sal*12 AS ”r pensja”
  20. FROM emp;
  21. Jeżeli chcemy użyć spacji lub innych znaków specjalnych w etykiecie kolumny, to używamy cudzysłowu.
  22. 7.  Połącz EMPNO i nazwisko, opatrz je nagłówkiem EMPLOYEE.
  23. SELECT  empno || ename AS employee
  24. FROM emp;
  25. W MS SQL istnieje konieczność konwertowania wartości numerycznych do tekstowych (w Oracle nie). Operatorem konkatenacji jest w tym wypadku + a nie ||
  26. SELECT  CONVERT(VARCHAR, empno) + ename AS employee
  27. FROM emp;
  28. 8.  Utwórz zapytanie zwracające wynik w postaci np. „Kowalski pracuje w dziale 20”.
  29. SELECT ename || ‘ pracuje w dziale nr ' || deptno
  30. FROM emp;
  31. MS SQL:
  32. SELECT ename + ‘ pracuje w dziale nr ' + CONVERT(VARCHAR,deptno)
  33. FROM emp;
  34. 9.  Wylicz roczną pensję całkowitą dla każdego pracownika (z uwzględnieniem prowizji).
  35. SELECT ename, (sal * 12 + NVL(comm,0))
  36. FROM emp;
  37. Użycie funkcji NVL jest niezbędne, gdyż kolumna comm u niektórych pracowników zawiera wartość NULL. Wykonywanie operacji arytmetycznych na wartości NULL daje również NULL np. 2 + NULL = NULL, natomiast 2 + NVL(NULL, 0) = 2.
  38. W MS SQL odpowiednikiem funkcji NVL jest ISNULL:
  39. SELECT ename, (sal * 12 + ISNULL(comm,0))
  40. FROM emp;
  41. 10. Wyświetl wszystkie numery departamentów występujące w tabeli EMP.
  42. SELECT deptno
  43. FROM Emp;
  44. 11. Wyświetl wszystkie różne numery departamentów występujące w tabeli EMP.
  45. SELECT DISTINCT deptno
  46. FROM Emp;
  47. 12. Wybierz wszystkie wzajemnie różne kombinacje wartości DEPTNO i JOB.
  48. SELECT DISTINCT deptno, job
  49. FROM Emp;
  50. 13. Posortuj wszystkie dane tabeli EMP według ENAME.
  51. SELECT *
  52. FROM emp
  53. ORDER BY ename;
  54. 14. Posortuj malejąco wszystkie dane tabeli EMP według daty ich zatrudnienia począwszy od ostatnio zatrudnionych.
  55. SELECT * FROM emp ORDER BY hiredate DESC;
  56. 15. Posortuj dane tabeli EMP według wzrastających wartości kolumn DEPTNO oraz malejących wartości kolumny SAL (bez wypisywania kolumny SAL).
  57. SELECT empno, ename, job, mgr
  58. FROM emp
  59. ORDER BY deptno, sal DESC;
  60. Domyślnie przyjęty jest porządek rosnący i dlatego nie musimy pisać ASC po deptno.
  61. 16. Wybierz nazwiska, numery, stanowiska pracy i numery departamentów wszystkich pracowników zatrudnionych na stanowisku CLERK.
  62. SELECT ename, job, sal, deptno FROM emp
  63. WHERE job = 'CLERK';
  64. 17. Wybierz  wszystkie nazwy i numery departamentów większe od nr 20.
  65. SELECT deptno, dname
  66. FROM dept
  67. WHERE deptno > 20;
  68. 18. Wybierz pracowników, których prowizja przekracza miesięczną pensję.
  69. SELECT *
  70. FROM emp
  71. WHERE comm > sal;
  72. 19. Wybierz dane tych pracowników, których zarobki mieszczą się pomiędzy 1000 a 2000.
  73. SELECT *
  74. FROM emp
  75. WHERE sal BETWEEN 1000 AND 2000;
  76. 20. Wybierz dane pracowników, których bezpośrednimi szefami  są 7902,7566 lub 7788.
  77. SELECT *
  78. FROM emp
  79. WHERE mgr IN (7902, 7566, 7788);
  80. Rozwiązanie bez użycia IN:
  81. SELECT * FROM emp WHERE mgr = 7902 OR  mgr = 7566 OR mgr = 7788;
  82. 21. Wybierz dane tych pracowników, których nazwiska zaczynają się na S.
  83. SELECT *
  84. FROM emp
  85. WHERE ename LIKE 'S%';
  86. 22. Wybierz dane tych pracowników, których nazwiska są czteroliterowe.
  87. SELECT *
  88. FROM emp
  89. WHERE LENGTH(ename) = 4;
  90. MS SQL:
  91. SELECT *
  92. FROM emp
  93. WHERE LEN(ename) = 4;
  94. Inne rozwiązanie:
  95. SELECT *
  96. FROM emp
  97. WHERE ename LIKE ‘____’
  98. 23. Wybierz dane tych pracowników, którzy nie posiadają szefa.
  99. SELECT *
  100. FROM emp
  101. WHERE mgr IS NULL;
  102. 24. Wybierz dane tych pracowników, których zarobki są poza przedziałem <1000,2000>.
  103. SELECT *
  104. FROM emp
  105. WHERE NOT sal BETWEEN 1000 AND 2000;
  106. Rozwiązanie bez użycia BETWEEN:
  107. SELECT * FROM emp
  108. WHERE sal < 1000 OR sal > 2000;
  109. 25. Wybierz dane tych pracowników, których nazwiska nie zaczynają się na M.
  110. SELECT *
  111. FROM emp
  112. WHERE NOT ename LIKE 'M%';
  113. Lub:
  114. SELECT * FROM emp
  115. FROM emp
  116. WHERE ename  NOT LIKE 'M%';
  117. 26. Wybierz dane tych pracowników, którzy mają szefa.
  118. SELECT *
  119. FROM emp
  120. WHERE mgr IS NOT NULL;
  121. 27. Wybierz dane tych pracowników zatrudnionych na stanowisku CLERK których zarobki SAL mieszczą się w przedziale <1000.2000).
  122. SELECT *
  123. FROM emp
  124. WHERE job = 'CLERK' AND sal >= 1000 AND sal < 2000;
  125. 28. Wybierz dane pracowników zatrudnionych na stanowisku CLERK albo takich, których zarobki SAL mieszczą się w przedziale <1000.2000).
  126. SELECT *
  127. FROM emp
  128. WHERE job = 'CLERK' OR (sal >= 1000 AND sal < 2000);
  129. 29. Wybierz wszystkich pracowników zatrudnionych na stanowisku MANAGER z pensją powyżej 1500 oraz wszystkich pracowników na stanowisku  SALESMAN, niezależnie od pensji.
  130. SELECT *
  131. FROM emp
  132. WHERE (sal > 1500 AND job = 'MANAGER') OR job = 'SALESMAN';
  133. 30. Wybierz wszystkich pracowników zatrudnionych na stanowisku MANAGER lub na stanowisku SALESMAN lecz zarabiających powyżej 1500.
  134. SELECT *
  135. FROM emp
  136. WHERE job = 'MANAGER' OR (job = 'SALESMAN' AND sal >1500);
  137. 31. Wybierz wszystkich pracowników zatrudnionych na stanowisku MANAGER ze wszystkich departamentów wraz ze wszystkimi pracownikami zatrudnionymi na stanowisku CLERK w departamencie 10.
  138. SELECT *
  139. FROM emp
  140. WHERE job = ‘MANAGER’ OR (job = ‘CLERK’ AND deptno = 10);
  141. 32. Wybierz wszystkie dane z tabeli SALGRADE.
  142. SELECT *
  143. FROM salgrade;
  144. 33. Wybierz wszystkie dane z tabeli DEPT.
  145. SELECT *
  146. FROM dept;
  147. 34. Wybierz numery i nazwy departamentów sortując według numerów departamentów.
  148. SELECT deptno, dname
  149. FROM dept
  150. ORDER BY deptno;
  151. 35. Wybierz wszystkie wzajemnie różne stanowiska pracy.
  152. SELECT DISTINCT job
  153. FROM emp;
  154. 36. Wybierz dane pracowników zatrudnionych w departamentach 10 i 20 we kolejności alfabetycznej ich nazwisk.
  155. SELECT *
  156. FROM emp
  157. WHERE deptno = 10 OR deptno = 20
  158. ORDER BY ename;
  159. 37. Wybierz nazwiska pracowników, w których nazwisku występuje ciąg „TH” lub „LL”.
  160. SELECT ename
  161. FROM emp
  162. WHERE  ename LIKE%TH%OR ename LIKE%LL%
  163. 38. Wybierz ENAME, DEPTNO i HIREDATE  tych pracowników, którzy zostali zatrudnieni w 1980 r.
  164. SELECT ename, deptno, hiredate
  165. FROM emp
  166. WHERE hiredate >=01/01/80AND hiredate <=31/12/80
  167. Format daty może zależeć od ustawień serwera. Warto wcześniej sprawdzić, jaki format jest ustawiony na serwerze lub lepiej,yć funkcji konwertujących / porównujących daty. MS SQL:
  168. SELECT ename, deptno, hiredate
  169. FROM emp
  170. WHERE YEAR(hiredate) = 1980;
  171. Oracle:
  172. SELECT ename, deptno, hiredate
  173. FROM emp
  174. WHERE EXTRACT (YEAR FROM hiredate) = 1980;
  175. 39. Wybierz nazwiska, roczną pensję oraz prowizję tych wszystkich sprzedawców, których miesięczna pensja przekracza prowizję. Wyniki posortuj według malejących zarobków, potem nazwisk.
  176. SELECT ename, sal * 12, comm
  177. FROM emp
  178. WHERE sal > NVL(comm,0)
  179. ORDER BY sal DESC, ename;
  180. MS SQL
  181. SELECT ename, sal * 12, comm
  182. FROM emp
  183. WHERE sal > ISNULL(comm,0)
  184. ORDER BY sal DESC, ename;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement