Advertisement
mali_cox

LV 8

Jan 6th, 2017
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 3.76 KB | None | 0 0
  1. /*Zadatak 1*/
  2. SELECT * FROM zaposleni;
  3.  
  4. ALTER TABLE zaposleni ADD(id NUMBER(4));
  5.  
  6. CREATE SEQUENCE sek
  7. NOCACHE
  8. NOCYCLE;
  9.  
  10. UPDATE zaposleni
  11. SET id = sek.NEXTVAL;
  12.  
  13. COMMIT;
  14.  
  15. ALTER TABLE zaposleni
  16. ADD CONSTRAINT c_zaposleni_id_pk PRIMARY KEY (id);
  17.  
  18. /*Zadatak 2*/
  19. ALTER TABLE odjel
  20. ADD CONSTRAINT c_odjel_id_pk ΒΈPRIMARY KEY (id,datum);
  21.  
  22. /*Drugi nacin
  23.  
  24. CREATE TABLE o2 AS SELECT * FROM departments;
  25.  
  26. ALTER TABLE o2
  27. ADD (id NUMBER(4), datum DATE);
  28.  
  29. UPDATE o2
  30. SET id = sek.NEXTVAL, datum = SYSDATE;
  31.  
  32. COMMIT;
  33.  
  34. ALTER TABLE o2
  35. ADD CONSTRAINT c_o2_id_dat_pk PRIMARY KEY (id, datum);*/
  36.  
  37. /*Zadatak 3*/
  38. SELECT * FROM user_constraints;
  39.  
  40. SELECT * FROM all_constraints
  41. WHERE owner = 'HR'
  42. ORDER BY table_name;
  43.  
  44. SELECT * FROM all_constraints
  45. WHERE owner = 'test';
  46.  
  47. /*Zadatak 5*/
  48. SELECT a.table_name, b.table_name
  49. FROM all_cons_columns a, all_cons_columns b
  50. WHERE a.owner = 'HR' AND b.owner = 'HR' AND a.column_name = b.column_name AND a.table_name <> b.table_name AND
  51.       (a.table_name = 'EMPLOYEES' AND b.table_name <> 'EMPLOYEES' OR a.table_name = 'DEPARTMENTS' AND b.table_name <> 'DEPARTMENTS') AND
  52.       a.constraint_name LIKE '%FK' AND b.constraint_name LIKE '%PK';
  53.  
  54. /*Zadatak 6*/
  55. ALTER TABLE zaposleni
  56. ADD(plata_dodatak NUMBER(12,2));
  57.  
  58. UPDATE zaposleni z
  59. SET z.plata_dodatak = (1 + z.iznos_dodatak_na_platu) * z.plata
  60. WHERE kontinent LIKE 'Americas';
  61.  
  62. COMMIT;
  63.  
  64. /*Zadatak 7*/
  65. ALTER TABLE zaposleni
  66. ADD CONSTRAINT zaposleni_pdodatak_ck CHECK (plata_dodatak BETWEEN 100 AND 5000); --ne radi
  67.  
  68. /*Zadatak 8*/
  69. CREATE VIEW zap_pogled(sifra_zaposlenog, naziv_zaposlenog, naziv_odjela)
  70. AS SELECT e.employee_id, e.first_name || ' ' || e.last_name, d.department_name
  71.    FROM employees e, departments d
  72.    WHERE e.department_id = d.department_id;
  73.  
  74. /*Zadatak 9*/
  75. SELECT * FROM zap_pogled;
  76.  
  77. /*Zadatak 10*/
  78. CREATE VIEW moj_pogled2(naziv_posla, naziv_odjela, prosjecna_plata, iznos_dodatka_na_platu)
  79. AS SELECT j.job_title, d.department_name, Avg(e.salary), Sum(e.salary*e.commission_pct)
  80.    FROM employees e, departments d, jobs j
  81.    WHERE e.department_id = d.department_id AND e.job_id = j.job_id AND
  82.       (Lower(j.job_title) LIKE '%a%' OR Lower(j.job_title) LIKE '%b%' OR Lower(j.job_title) LIKE '%c%') AND
  83.       (Lower(d.department_name) LIKE '%a%' OR Lower(d.department_name) LIKE '%b%' OR Lower(d.department_name) LIKE '%c%')
  84.    GROUP BY j.job_title, d.department_name
  85. WITH READ ONLY;
  86.  
  87. SELECT * FROM moj_pogled;
  88. SELECT * FROM moj_pogled2;
  89.  
  90. -- Zadatak 13
  91. CREATE OR REPLACE VIEW sef_pog (naziv, broj_zaposlenih, min_plata_odjela, max_plata_odjela)
  92. AS
  93. SELECT DISTINCT s.first_name || ' ' || s.last_name,
  94.        (SELECT Count(e1.employee_id)
  95.         FROM employees e1
  96.         WHERE e1.manager_id = s.employee_id),
  97.        (SELECT Min(e1.salary)
  98.         FROM employees e1
  99.         WHERE e1.department_id = s.department_id),
  100.        (SELECT Max(e1.salary)
  101.         FROM employees e1
  102.         WHERE e1.department_id = s.department_id)
  103. FROM employees s, employees z
  104. WHERE s.employee_id = z.manager_id;
  105.  
  106.  
  107. SELECT * FROM sef_pog;
  108.  
  109. -- Zadatak 14
  110. CREATE OR REPLACE VIEW sef_pog (naziv, broj_zaposlenih, min_plata_odjela, max_plata_odjela, sumarna_plata_zaposlenih)
  111. AS
  112. SELECT DISTINCT s.first_name || ' ' || s.last_name,
  113.        (SELECT Count(e1.employee_id)
  114.         FROM employees e1
  115.         WHERE e1.manager_id = s.employee_id),
  116.        (SELECT Min(e1.salary)
  117.         FROM employees e1
  118.         WHERE e1.department_id = s.department_id),
  119.        (SELECT Max(e1.salary)
  120.         FROM employees e1
  121.         WHERE e1.department_id = s.department_id),
  122.        (SELECT Sum((1 + Nvl(e1.commission_pct, 0))*e1.salary)
  123.         FROM employees e1
  124.         WHERE e1.manager_id = s.employee_id)
  125. FROM employees s, employees z
  126. WHERE s.employee_id = z.manager_id
  127. WITH READ ONLY;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement