Advertisement
zerocode77

opbp

Apr 18th, 2018
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 14.93 KB | None | 0 0
  1. 1.Kreirajte funkciju koja uzima naziv odjela te izracunava i ispisuje vrijednost prosjecne
  2. dnevne, mjesecne i godišnje isplacene place u tome odjelu (npr. za odjel Projektiranje)? Za
  3. racunanje koristite 22 radna dana u mjesecu, 8 radnih sati u danu.
  4.  
  5.    CREATE OR REPLACE FUNCTION izracun_placa (odjel odjel.naziv%TYPE)
  6.    RETURN VARCHAR2 IS
  7.    prosjecna_placa VARCHAR2(100);
  8.    
  9.    BEGIN
  10.         SELECT ROUND(AVG(PLACA/22/8),2)||' '||ROUND(AVG(PLACA),2)||' '||ROUND(AVG(PLACA*12),2)  INTO prosjecna_placa  
  11.         FROM RADNIK WHERE SODJEL IN(SELECT SODJEL FROM ODJEL WHERE NAZIV =odjel);
  12.  
  13.         RETURN prosjecna_placa;
  14.    
  15.    END izracun_placa;
  16.    /
  17.  
  18. SELECT izracun_placa('PROJEKTIRANJE') FROM DUAL;
  19.  
  20. _________________________________________________________________________________________________________________
  21. 2.
  22. Kreirajte funkciju koja uzima šifru radnika te vraca ime i prezime tog radnika, kao i ime i
  23. prezime njegovog neposredno nadredenog.
  24.  
  25.    CREATE OR REPLACE FUNCTION ime_radnika(sifra IN RADNIK.SRADNIK%TYPE)
  26.    RETURN VARCHAR2 IS
  27.    ime VARCHAR2(200);
  28.  
  29.    BEGIN
  30.    SELECT r.ime ||' ' || r.prezime ||' ' || m.ime ||' ' || m.prezime INTO ime
  31.    FROM RADNIK r INNER JOIN RADNIK m ON m.SRADNIK = r.SNADR WHERE r.SRADNIK = sifra AND r.SNADR = m.SRADNIK;
  32.    RETURN ime;
  33.    END ime_radnika;
  34.    /
  35.  
  36. SELECT ime_radnika(3220) FROM DUAL;
  37.  
  38.  
  39.  
  40. --------------------------------------------------------------------------------------------
  41. 3.
  42. Kreirati samostalnu proceduru koja ce prihvatiti naziv posla te postotak za koji tim radnicima
  43. želite smanjiti placu. Procedura preko naziva posla selektira trenutne place radnika te ih
  44. smanjuje za unešeni postotak. Ako traženi posao ne postoji, poziva se odgovarajuca greška.
  45. Takoder, najmanja placa radnika ne smije biti manja od 6 000 kn – u tome slucaju ispisati
  46. odgovarajucu (korisnicku) iznimku, korištenjem RAISE naredbe.
  47.  
  48. CREATE OR REPLACE  PROCEDURE smanjenje_place(naziv RADNIK.POSAO%TYPE, postotak IN NUMBER) IS
  49. PLACA RADNIK.PLACA%TYPE;  
  50. min_placa RADNIK.PLACA%TYPE := 6000;
  51. premala_placa EXCEPTION;
  52.  
  53. BEGIN
  54. SELECT MIN(PLACA) INTO PLACA FROM RADNIK WHERE POSAO = naziv;
  55. IF naziv NOT IN ('ANALITICAR','TRG.PUTNIK', 'DIREKTOR', 'SAVJETNIK','VODITELJ') THEN
  56.  RAISE_APPLICATION_ERROR(-20568, 'Posao ne postoji!!!');
  57. ELSIF PLACA < min_placa THEN RAISE premala_placa;
  58.  ELSE
  59. UPDATE RADNIK SET PLACA = PLACA -(PLACA*postotak/100) WHERE POSAO = naziv;
  60. END IF;
  61. EXCEPTION
  62. WHEN premala_placa THEN DBMS_OUTPUT.PUT_LINE('Placa je premala!!!');
  63. END smanjenje_place;
  64. /
  65.  
  66.  
  67. EXECUTE smanjenje_place('TRG.PUTNIK', 1);
  68. EXECUTE smanjenje_place('TRG', 1); --> za provjeru dal ispisuje da posao ne postoji
  69.  
  70. -----------------------------------------------------------------------------------
  71. 4.
  72. Kreirajte samostalnu proceduru PROMJENA_ODJEL koja mijenja naziv odjela u tablici ODJEL
  73. (sodjel, naziv, lokacija). Paziti da šifra odjela mora biti unesena (ne smije biti NULL). U
  74. suprotnom pozvati odgovarajucu iznimku, koristeci RAISE_APPLICATION_ERROR naredbu.
  75. Takoder, neka se ispisuje poruka „Naziv odjela je prekratak!“, ako naziv odjela ima manje od
  76. 3 znaka.
  77. Za test promijenite odjel ODRZAVANJE u TESTIRANJE.
  78.  
  79. CREATE OR REPLACE PROCEDURE promjena_odjela(sifra ODJEL.SODJEL%TYPE, stari_naziv ODJEL.NAZIV%TYPE, novi_naziv ODJEL.NAZIV%TYPE, lokacija ODJEL.LOKACIJA%TYPE) IS
  80.  
  81. BEGIN
  82. IF sifra IS NULL THEN
  83. RAISE_APPLICATION_ERROR(-20145,'Sifra odjela ne moze biti NULL.');
  84. ELSIF LENGTH(novi_naziv) < 3 THEN
  85. DBMS_OUTPUT.PUT_LINE('Naziv odjela je prekratak!!!');
  86. ELSE
  87. UPDATE ODJEL  SET NAZIV = novi_naziv WHERE NAZIV = stari_naziv;
  88. END IF;
  89. END promjena_odjela;
  90. /
  91.  
  92.  
  93. EXECUTE promjena_odjela(50, 'ODRZAVANJE','TESTIRANJE','ZG');
  94. EXECUTE promjena_odjela('', 'TESTIRANJE', 'ZG'); ---> provjera za null
  95. EXECUTE promjena_odjela(50, 'TE', 'ZG'); ----> provjera za manje od 3 slova
  96. ______________________________________________________________________________________________________________________
  97. 5.
  98. Ubacite u paket ZADATAK funkcije i PROCEDURE iz prethodnih zadatka.
  99.  
  100. CREATE OR REPLACE PACKAGE zadatak IS
  101. FUNCTION izracun_placa (odjel odjel.naziv%TYPE) RETURN VARCHAR2;
  102. FUNCTION ime_radnika(sifra IN RADNIK.SRADNIK%TYPE)RETURN VARCHAR2;
  103. PROCEDURE smanjenje_place(naziv RADNIK.POSAO%TYPE, postotak IN NUMBER);
  104. PROCEDURE promjena_odjela(sifra ODJEL.SODJEL%TYPE, novi_naziv ODJEL.NAZIV%TYPE, lokacija ODJEL.LOKACIJA%TYPE);
  105. END ZADATAK;
  106. /
  107.  
  108. CREATE OR REPLACE PACKAGE BODY zadatak IS
  109. FUNCTION izracun_placa (odjel odjel.naziv%TYPE)
  110.    RETURN VARCHAR2 IS
  111.    prosjecna_placa VARCHAR2(100);
  112.    
  113.    BEGIN
  114.         SELECT ROUND(AVG(PLACA/22/8),2)||' '||ROUND(AVG(PLACA),2)||' '||ROUND(AVG(PLACA*12),2)  INTO prosjecna_placa  
  115.         FROM RADNIK WHERE SODJEL IN(SELECT SODJEL FROM ODJEL WHERE NAZIV =odjel);
  116.  
  117.         RETURN prosjecna_placa;
  118.    
  119.    END izracun_placa;
  120.    
  121. FUNCTION ime_radnika(sifra IN RADNIK.SRADNIK%TYPE)
  122.    RETURN VARCHAR2 IS
  123.    ime VARCHAR2(500);
  124.  
  125.    BEGIN
  126.    SELECT r.ime ||' ' || r.prezime ||' ' || m.ime ||' ' || m.prezime INTO ime
  127.    FROM RADNIK r LEFT OUTER JOIN RADNIK m ON m.SRADNIK = r.SNADR WHERE r.SRADNIK = sifra AND r.SNADR = m.SRADNIK;
  128.    RETURN ime;
  129.    END ime_radnika;
  130.    
  131. PROCEDURE smanjenje_place(naziv RADNIK.POSAO%TYPE, postotak IN NUMBER) IS
  132. PLACA RADNIK.PLACA%TYPE;  
  133. min_placa RADNIK.PLACA%TYPE := 6000;
  134. premala_placa EXCEPTION;
  135. BEGIN
  136.  
  137. IF naziv NOT IN ('ANALITICAR','TRG.PUTNIK', 'DIREKTOR', 'SAVJETNIK','VODITELJ') THEN
  138.  RAISE_APPLICATION_ERROR(-20568, 'Posao ne postoji!!!');
  139. ELSIF PLACA < min_placa THEN RAISE premala_placa;
  140.  ELSE
  141. UPDATE RADNIK SET PLACA = PLACA -(PLACA*postotak/100) WHERE POSAO = naziv;
  142. END IF;
  143. EXCEPTION
  144. WHEN premala_placa THEN DBMS_OUTPUT.PUT_LINE('Placa je premala!!!');
  145. END smanjenje_place;
  146.  
  147. PROCEDURE promjena_odjela(sifra ODJEL.SODJEL%TYPE, stari_naziv ODJEL.NAZIV%TYPE, novi_naziv ODJEL.NAZIV%TYPE, lokacija ODJEL.LOKACIJA%TYPE) IS
  148.  
  149. BEGIN
  150. IF sifra IS NULL THEN
  151. RAISE_APPLICATION_ERROR(-20145,'Sifra odjela ne moze biti NULL.');
  152. ELSIF LENGTH(novi_naziv) < 3 THEN
  153. DBMS_OUTPUT.PUT_LINE('Naziv odjela je prekratak!!!');
  154. ELSE
  155. UPDATE ODJEL  SET NAZIV = novi_naziv WHERE NAZIV = stari_naziv;
  156. END IF;
  157. END promjena_odjela;
  158. /
  159.  
  160.  
  161. EXECUTE promjena_odjela(50, 'ODRZAVANJE','TESTIRANJE','ZG');
  162.  
  163. END zadatak;
  164. /
  165.  
  166. SELECT zadatak.ime_radnika(3220) FROM dual; -----> za pozivanje funkcije
  167. EXECUTE zadatak.promjena_odjela(50,'TESTIRANJE', 'ZG'); -----> za procedure
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181. CREATE TABLE RADNIK (SRADNIK NUMBER NOT NULL, IME VARCHAR2(20) NOT NULL, PREZIME VARCHAR2(30) NOT NULL,
  182. POSAO VARCHAR2(20) NOT NULL, SNADR NUMBER, DATZAP DATE NOT NULL, PLACA NUMBER NOT NULL, DODATAK NUMBER,
  183. SODJEL NUMBER NOT NULL);
  184.  
  185. INSERT INTO RADNIK (SRADNIK, IME, PREZIME, POSAO, SNADR, DATZAP,
  186. PLACA, SODJEL)
  187. VALUES(3069, 'JAKOV', 'JAKIC', 'ANALITICAR', 3602, '17.DECEMBER.1981',
  188. 8000, 20);
  189.  
  190. INSERT INTO RADNIK
  191. VALUES (3199, 'LOVRO', 'LOVRIC', 'TRG. PUTNIK', 3398, '22.FEBRUARY.1981',
  192. 16000, 3000, 30);
  193.  
  194. INSERT INTO RADNIK
  195. VALUES (3221, 'PETAR', 'PETRIC', 'TRG. PUTNIK', 3398, '22.FEBRUARY.1981',
  196. 12500, 5000, 30);
  197.  
  198. INSERT INTO RADNIK (SRADNIK, IME, PREZIME, POSAO, SNADR, DATZAP,
  199. PLACA, SODJEL)
  200. VALUES(3266, 'MARKO', 'MARKIC', 'VODITELJ', 3539, '02.APRIL.1981',
  201. 29750, 20);
  202.  
  203. INSERT INTO RADNIK
  204. VALUES (3354, 'JOSIP', 'MARKOVIC', 'TRG. PUTNIK', 3398, '28.SEPTEMBER.1981',
  205. 12500, 14000, 30);
  206.  
  207. INSERT INTO RADNIK (SRADNIK, IME, PREZIME, POSAO, SNADR, DATZAP,
  208. PLACA, SODJEL)
  209. VALUES(3398, 'DANIEL', 'CINDRIC', 'VODITELJ', 3539, '01.JANUARY.1981',
  210. 28500, 30);
  211.  
  212. INSERT INTO RADNIK (SRADNIK, IME, PREZIME, POSAO, SNADR, DATZAP,
  213. PLACA, SODJEL)
  214. VALUES(3482, 'IVAN', 'IVIC', 'VODITELJ', 3539, '09.JUNE.1981',
  215. 24500, 10);
  216.  
  217. INSERT INTO RADNIK (SRADNIK, IME, PREZIME, POSAO, SNADR, DATZAP,
  218. PLACA, SODJEL)
  219. VALUES(3488, 'BOZIDAR', 'BOZIC', 'SAVJETNIK', 3266, '09.NOVEMBER.1981',
  220. 30000, 20);
  221.  
  222. INSERT INTO RADNIK (SRADNIK, IME, PREZIME, POSAO, DATZAP,
  223. PLACA, SODJEL)
  224. VALUES(3539, 'STJEPAN', 'STIPIC', 'DIREKTOR', '17.NOVEMBER.1981',
  225. 50000, 10);
  226.  
  227. INSERT INTO RADNIK
  228. VALUES (3544, 'GORAN', 'STIMAC', 'TRG. PUTNIK', 3598, '08.SEPTEMBER.1981',
  229. 15000, 0, 30);
  230.  
  231. INSERT INTO RADNIK (SRADNIK, IME, PREZIME, POSAO, SNADR, DATZAP,
  232. PLACA, SODJEL)
  233. VALUES(3576, 'MATEJ', 'MARKOVIC', 'ANALITICAR', 3488, '23.SEPTEMBER.1981',
  234. 11000, 20);
  235.  
  236. INSERT INTO RADNIK (SRADNIK, IME, PREZIME, POSAO, SNADR, DATZAP,
  237. PLACA, SODJEL)
  238. VALUES(3609, 'ANTE', 'ANTIC', 'ANALITICAR', 3398, '03.DECEMBER.1981',
  239. 9500, 30);
  240.  
  241. INSERT INTO RADNIK (SRADNIK, IME, PREZIME, POSAO, SNADR, DATZAP,
  242. PLACA, SODJEL)
  243. VALUES(3602, 'FILIP', 'NOSIC', 'SAVJETNIK', 3266, '03.DECEMBER.1981',
  244. 30000, 20);
  245.  
  246. INSERT INTO RADNIK (SRADNIK, IME, PREZIME, POSAO, SNADR, DATZAP,
  247. PLACA, SODJEL)
  248. VALUES(3634, 'DEAN', 'PERTIC', 'ANALITICAR', 3482, '23.JANUARY.1982',
  249. 13000, 10);
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259. CREATE TABLE ODJEL(SODJEL NUMBER NOT NULL, NAZIV CHAR(15), LOKACIJA CHAR(20));
  260.  
  261. INSERT INTO ODJEL (SODJEL, NAZIV, LOKACIJA)
  262. VALUES(10, 'ZAJ_SLUZBA', 'RIJEKA');
  263.  
  264. INSERT INTO ODJEL (SODJEL, NAZIV, LOKACIJA)
  265. VALUES(20, 'PRIPREMA', 'VISOKOVO');
  266.  
  267. INSERT INTO ODJEL (SODJEL, NAZIV, LOKACIJA)
  268. VALUES(30, 'PROJEKTIRANJE', 'MATULJI');
  269.  
  270. INSERT INTO ODJEL (SODJEL, NAZIV, LOKACIJA)
  271. VALUES(40, 'ISTRAZIVANJE', 'RIJEKA');
  272.  
  273.  
  274. A - GRUPA
  275.  
  276.  
  277. 1.
  278.  
  279. SET UNDERLINE =
  280.  
  281. SELECT IME, ORGANIZATOR,
  282. COUNT(DECODE(razina, 'OSNOVNA', STECAJ, 0)) "OSNOVNA RAZINA",
  283. COUNT(DECODE(razina, 'NAPREDNA', STECAJ, 0)) "NAPREDNA RAZINA",
  284. COUNT(STECAJ) "UKUPNO PO ORGANIZATORU",
  285. COUNT(0) PRAZNO
  286. FROM pposcic.TECAJ, pposcic.ORGANIZATOR
  287. WHERE PPOSCIC.TECAJ.SORG = PPOSCIC.ORGANIZATOR.SORG
  288. GROUP BY PPOSCIC.ORGANIZATOR.IME;
  289.  
  290.  
  291. BREAK ON PRAZNO
  292.  
  293. COMPUTE COUNT OF "OSNOVNA RAZINA" ON PRAZNO
  294. COMPUTE COUNT OF "NAPREDNA RAZINA" ON PRAZNO
  295. COMPUTE COUNT OF "UKUPNO PO ORGANIZATORU"
  296.  
  297. COLUMN "OSNOVNA RAZINA" FORMAT 999
  298. COLUMN "NAPREDNA RAZINA" FORMAT 999
  299. COLUMN "UKUPNO PO ORGANIZATORU" FORMAT 999
  300.  
  301. TTITLE CENTER 'BROJ TECAJEVA PO ORGANIZATORIMA ZA POJEDINU RAZINU' SKIP 2
  302.  
  303. COLUMN PRAZNO NOPRINT
  304.  
  305. __________________________________________________________________________________________________
  306. __________________________________________________________________________________________________
  307.  
  308.  
  309. 2.
  310.  
  311.  
  312. CREATE OR REPLACE PACKAGE PLO IS
  313.  
  314. FUNCTION PROSJECNA_CIJENA;
  315. PROCEDURE nove
  316. (NAZIV PPOSCIC.PLOC.NAZIV_PLOC%TYPE, SIFRA PPOSCIC.PLOC.SIFR_PLOC%TYPE, SIRINA1 PPOSCIC.PLOC.SIRINA%TYPE,
  317. DUZINA1 PPOSCIC.PLOC.DUZINA%TYPE, SIFRA1 PPOSCIC.PLOC.SIFR_DOB%TYPE, CIJENA1 PPOSCIC.PLOC.CIJENA%TYPE);
  318.  
  319. END PLO;
  320.  
  321. -----------------------------------------------
  322.  
  323. CREATE OR REPLACE PACKAGE BODY PLO IS
  324.  
  325. PROCEDURE nove
  326. (NAZIV PPOSCIC.PLOC.NAZIV_PLOC%TYPE, SIFRA PPOSCIC.PLOC.SIFR_PLOC%TYPE, SIRINA1 PPOSCIC.PLOC.SIRINA%TYPE,
  327. DUZINA1 PPOSCIC.PLOC.DUZINA%TYPE, SIFRA1 PPOSCIC.PLOC.SIFR_DOB%TYPE, CIJENA1 PPOSCIC.PLOC.CIJENA%TYPE)
  328. IS
  329. BEGIN
  330.  
  331. INSERT INTO PPOSCIC.PLOC(NAZIV_PLOC, SIFR_PLOC, SIRINA, DUZINA, SIFR_DOB, CIJENA) VALUES
  332. (NAZIV, SIFRA, SIRINA1, DUZINA1, SIFRA1, CIJENA1)
  333.  
  334. IF PPOSCIC.PLOC.SIRINA<100 AND PPOSCIC.SIRINA>500 THEN
  335. RAISE_APPLICATION_ERROR(-20131,'SIFRA NIJE VALJANA');
  336. END IF;
  337.  
  338. EXCEPTION
  339. WHEN NO_DATA_FOUND THEN
  340. DBMS_OUTPUT.PUT_LINE('DOBAVLJAC NE POSTOJI');
  341. WHEN DUP_VAL_ON_INDEX THEN
  342. DBMS_OUTPUT.PUT_LINE('SIFRA NIJE JEDINSTVENA');
  343.  
  344. END nove;
  345.  
  346. FUNCTION PROSJECNA_CIJENA
  347. RETURN PPOSCIC.PLOC.CIJENA%TYPE IS
  348. PROSJECNA_CIJENA PPOSCIC.PLOC.CIJENA%TYPE
  349. BEGIN
  350.  
  351. IF PPOSCIC.PLOC.SIRINA=150 AND PPOSCIC.PLOC.DUZINA=150 THEN
  352. SELECT AVG(CIJENA) INTO PROSJECNA_CIJENA FROM PPOSCIC.PLOC;
  353. END IF;
  354. RETURN PROSJECNA_CIJENA;
  355. END PROSJECNA_CIJENA;
  356.  
  357.  
  358. END PLO;
  359. _____________________________________________________________________________________
  360.  
  361. A)
  362.  
  363. CREATE OR REPLACE PROCEDURE nove
  364. (NAZIV PPOSCIC.PLOC.NAZIV_PLOC%TYPE, SIFRA PPOSCIC.PLOC.SIFR_PLOC%TYPE, SIRINA1 PPOSCIC.PLOC.SIRINA%TYPE,
  365. DUZINA1 PPOSCIC.PLOC.DUZINA%TYPE, SIFRA1 PPOSCIC.PLOC.SIFR_DOB%TYPE, CIJENA1 PPOSCIC.PLOC.CIJENA%TYPE)
  366. IS
  367. BEGIN
  368.  
  369. INSERT INTO PPOSCIC.PLOC(NAZIV_PLOC, SIFR_PLOC, SIRINA, DUZINA, SIFR_DOB, CIJENA) VALUES
  370. (NAZIV, SIFRA, SIRINA1, DUZINA1, SIFRA1, CIJENA1)
  371.  
  372. IF PPOSCIC.PLOC.SIRINA<100 AND PPOSCIC.SIRINA>500 THEN
  373. RAISE_APPLICATION_ERROR(-20131,'SIFRA NIJE VALJANA');
  374. END IF;
  375.  
  376. EXCEPTION
  377. WHEN NO_DATA_FOUND THEN
  378. DBMS_OUTPUT.PUT_LINE('DOBAVLJAC NE POSTOJI');
  379. WHEN DUP_VAL_ON_INDEX THEN
  380. DBMS_OUTPUT.PUT_LINE('SIFRA NIJE JEDINSTVENA');
  381.  
  382. END nove;
  383. --------------------------------------------------
  384.  
  385. EXECUTE nove('PILLER', 'ZZ332', 350, 350, 1134, 432.33);
  386.  
  387. _________________________________________________________________________________________
  388.  
  389. B)
  390.  
  391. CREATE OR REPLACE FUNCTION PROSJECNA_CIJENA
  392. RETURN PPOSCIC.PLOC.CIJENA%TYPE IS
  393. PROSJECNA_CIJENA PPOSCIC.PLOC.CIJENA%TYPE
  394. BEGIN
  395.  
  396. IF PPOSCIC.PLOC.SIRINA=150 AND PPOSCIC.PLOC.DUZINA=150 THEN
  397. SELECT AVG(CIJENA) INTO PROSJECNA_CIJENA FROM PPOSCIC.PLOC;
  398. END IF;
  399. RETURN PROSJECNA_CIJENA;
  400. END PROSJECNA_CIJENA;
  401.  
  402. __________________________________________________________________________________________
  403.  
  404. C)
  405.  
  406. CREATE OR REPLACE FUNCTION KOLIKO(METRI NUMBER) RETURN NUMBER(6,2)
  407. IS
  408. KOLIKO NUMBER(6,2)
  409. SIR PPOSCIC.PLOC.SIRINA%TYPE
  410. DUZ PPOSCIC.PLOC.DUZINA%TYPE
  411. POVRSINA NUMBER(6,2)
  412.  
  413. BEGIN
  414. POVRSINA := SIR*DUZ;
  415.  
  416. SELECT DISTINCT COUNT(NAZIV_PLOC) || ', ' || NAZIV_PLOC KOLICINA FROM PPOSCIC.PLOC GROUP BY NAZIV_PLOC;
  417.  
  418. END KOLIKO;
  419.  
  420.  
  421.  
  422.  
  423. OPBP šalabahter
  424. SQL
  425. Kreiranje nove tablice: CREATE TABLE ime_tablice (atr1 tip [NOT NULL], atr2 tip [NOT NULL], ... ) ;
  426. Izmjena tablice: ALTER TABLE ime_tablice ADD (atr tip [, ATR TIP]) ; ili ALTER TABLE ime_tablice MODIFY (atr modifikacija);
  427. Unos podataka:
  428. INSERT INTO naziv_tablice VALUES(vrijednost_atr1, vrijednost_atr2,);
  429. INSERT INTO naziv_tablice (ATR1, ATR2,) VALUES (vrijednost_atr1, vrijednost_atr2,);
  430. Ažuriranje tablice: UPDATE naziv_tablice SET atribut1=izraz1[, atribut2=izraz2] [WHERE kriterij selekcije n-torki];
  431. Brisanje podataka: DELETE [FROM] naziv_tablice [WHERE kriterij selekcije n-torki];
  432. Brisanje tablice: DROP TABLE ime_tablice;
  433. Kreiranje pogleda: CREATE VIEW naziv_pogleda[(nazivi atributa pogleda)] AS SELECT . . .
  434. Upiti:
  435. SELECT [DISTINCT] {*|atribut|izraz [alias],}
  436. FROM [korisnik.]tablica
  437. [WHERE uvjet(i)]
  438. [GROUP BY group_by_uvjet]
  439. [ORDER BY atribut];
  440. Klauzule koje pritom možemo koristiti: IN/NOT IN, BETWEEN ... AND, IS (NOT) NULL,
  441. ORDER BY atribut1 [ ,atribut2,... ASC/DESC], GROUP BY atribut1 [ ,atribut2,...), HAVING
  442. Alias: SELECT naziv_stupca [AS] novi_naziv FROM naziv_tablice;
  443. Logički operatori: SELECT atribut1 [, atribut2, ...] FROM naziv_tablice WHERE uvjet1 AND / OR / NOT uvjet2;
  444. LIKE
  445. % predstavlja string od 0 ili više znakova
  446. _ predstavlja poziciju jednog znaka.
  447. Funkcije za dobivanje zbirnih informacija:
  448. AVG(atribut), SUM(atribut), MIN(atribut), MAX(atribut), COUNT (*/atribut/DISTINCT atribut)
  449. Aritmetičke funkcije: POWER (broj, n), ROUND (broj [,d]), TRUNC (broj [,d]), ABS (broj), SIGN (broj), MOD (broj1, broj2),
  450. SQRT (broj)
  451. Funkcije nad nizom znakova: string1 || string2, LENGTH(str) , SUBSTR(str, i,[, d]) , INSTR(str, sstr [, i]) , UPPER(str) ,
  452. LOWER(str) , TO_NUM (str) , TO_CHAR(str) , LPAD(str, len [, CHAR])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement