Docsity
Docsity

Pripremite ispite
Pripremite ispite

Studirajte zahvaljujući brojnim resursima koji su dostupni na Docsity-u


Nabavite poene za preuzimanje
Nabavite poene za preuzimanje

Zaradite bodove pomažući drugim studentima ili ih kupite uz Premium plan


Školska orijentacija
Školska orijentacija


baze podatka sql je to , Beleške od Računarstvo i informatika

rad sa sql sad he to poppujlarono s fasjfj dhs

Tipologija: Beleške

2016/2017

Učitan datuma 28.01.2017.

zugic.nemanja.31
zugic.nemanja.31 🇲🇪

4

(1)

3 dokumenti

1 / 10

Toggle sidebar

Ova stranica nije vidljiva u pregledu

Ne propustite važne delove!

bg1
1
Unošenje podataka
Unos podataka
INSERT INTO FAKULTET(IME_FAK , SJEDISTE) VALUES
('PMF', 'PODGORICA')
INSERT INTO FAKULTET(IME_FAK , SJEDISTE) VALUES
('ETF', NULL)
INSERT INTO FAKULTET(IME_FAK ) VALUES ('MTF')
Brisanje podataka
Brisanje podataka
DELETE FROM FAKULTET
WHERE IME_FAK ='PMF'
Brisanje svih torki (OPASNO!)
DELETE FROM STUDENT
Izmjena podataka (SQL)
Izmjena podataka
UPDATE FAKULTET
SET FAKULTET.IME_FAK = 'FIL'
WHERE FAKULTET.IME_FAK='PMF'
UPDATE STUDENT
SET IME_FAK = 'FIL',
GODINA=1
WHERE IME_FAK='PMF' AND
BROJ_INDEKSA='34'
Indeks
Indeks je struktura podataka koja služi za
efikasniji pristup podacima i sortiranje.
Nedostatak je što usporava dodavanje i
brisanje zapisa.
Indeks može biti na jednoj ili više kolona.
Indeks je naje neka varijanta B-stabla,
recimo B+-stablo.
UNIQUE indeks
Unique indeksne dozvoljava duplikate
Kod kreiranja primarnog kljua i unique
constraint-a kreira se unique indeks.
Podrazumijeva se da nije UNIQUE.
Kreiranje i brisanje indeksa
(SQL)
Kreiranje i brisanje indeksa (SQL)
CREATE UNIQUE INDEX indsjed
ON FAKULTET (SJEDISTE ASC)
CREATE INDEX indgod
ON STUDENT (GODINA ASC)
DROP INDEX STUDENT.indgod
pf3
pf4
pf5
pf8
pf9
pfa

Delimični pregled teksta

Preuzmite baze podatka sql je to i više Beleške u PDF od Računarstvo i informatika samo na Docsity!

Unošenje podataka

Unos podataka

INSERT INTO FAKULTET(IME_FAK, SJEDISTE) VALUES ('PMF', 'PODGORICA')

INSERT INTO FAKULTET(IME_FAK, SJEDISTE) VALUES ('ETF', NULL)

INSERT INTO FAKULTET(IME_FAK) VALUES ('MTF')

Brisanje podataka

Brisanje podataka

DELETE FROM FAKULTET WHERE IME_FAK ='PMF'

Brisanje svih torki (OPASNO!) DELETE FROM STUDENT

Izmjena podataka (SQL)

Izmjena podataka

UPDATE FAKULTET SET FAKULTET.IME_FAK = 'FIL' WHERE FAKULTET.IME_FAK='PMF'

UPDATE STUDENT SET IME_FAK = 'FIL', GODINA= WHERE IME_FAK='PMF' AND BROJ_INDEKSA='34'

Indeks

  • Indeks je struktura podataka koja služi za

efikasniji pristup podacima i sortiranje.

  • Nedostatak je što usporava dodavanje i

brisanje zapisa.

  • Indeks može biti na jednoj ili više kolona.
  • Indeks je naješe neka varijanta B-stabla,

recimo B+-stablo.

UNIQUE indeks

  • Unique indeks ne dozvoljava duplikate
  • Kod kreiranja primarnog kljua i unique

constraint-a kreira se unique indeks.

  • Podrazumijeva se da nije UNIQUE.

Kreiranje i brisanje indeksa

(SQL)

  • Kreiranje i brisanje indeksa (SQL) CREATE UNIQUE INDEX indsjed ON FAKULTET (SJEDISTE ASC)

CREATE INDEX indgod ON STUDENT (GODINA ASC)

DROP INDEX STUDENT.indgod

Klasterisani i neklasterisani

indeks

  • CLUSTERED indeks – kod koga redosled zapisa u

listu odgovara fizikom poretku.

  • NONCLUSTERED indeks – kod koga redosled

zapisa u listu ne mora odgovarati fizikom poretku.

  • Može biti samo jedan CLUSTERED indeks na

tabeli!

  • Indeks može biti
    • CLUSTERED - NONCLUSTERED
    • UNIQUE CLUSTERED - UNIQUE CLUSTERED

Indeks

CREATE UNIQUE CLUSTERED INDEX indstud ON STUDENT (JMBG ASC)

CREATE NONCLUSTERED INDEX indstud ON STUDENT (BRLK, GRAD)

FILLFACTOR, PAD_INDEX

  • FILLFACTOR – procenat od 1 do 100

popunjenosti lista.

  • Nije dobar ni preveliki i ni premali!
  • PAD_INDEX – ako je ukljuena ova opcija,

FILLFACTOR se primjenjuje i na

unutrašnje vorove.

CREATE CLUSTERED INDEX indstud

ON STUDENT (JMBG ASC)

WITH PAD_INDEX, FILLFACTOR = 60

IGNORE_DUP_KEY

  • IGNORE_DUP_KEY opcija dozvoljava da

se, kada INSERT reenicom unosimo torke

koje imaju duplikate na indeksnim kolona,

duplikati budu eliminisani. Ako ova opcija

nije postavljena kompletna INSERT

reenica se odbija.

CREATE INDEX indstud

ON STUDENT (JMBG ASC)

WITH IGNORE_DUP_KEY

STATISTICS_NORECOMPUTE

  • Da se ne rauna automatski statistika

vezana za indeks.

  • Ima smisla samo ako se tabela ne mijenja,

može loše uticati na optimizator upita.

CREATE INDEX indstud

ON STUDENT (JMBG ASC)

WITH STATISTICS_NORECOMPUTE

Indeksi, interaktivno

Is Null, Is not null

  • Nai snabdjevae kojima ne znamo grad.

SELECT * FROM SNABDJEVAC WHERE GRAD IS NULL

  • Nai snabdjevae kojima znamo grad.

SELECT * FROM SNABDJEVAC WHERE GRAD IS NOT NULL

Between

  • Nai šifre i imena snabdjevaa iji je status izmeu 10 i 20.

SELECT * FROM SNABDJEVAC WHERE STATUS>=10 AND STATUS<=

ili

SELECT * FROM SNABDJEVAC WHERE STATUS BETWEEN 10 AND 20

Not Between

  • Nai šifre i imena snabdjevaa iji je status ili manji od 10 ili vei od 20.

SELECT * FROM SNABDJEVAC WHERE STATUS<10 OR STATUS>

ili

SELECT * FROM SNABDJEVAC WHERE STATUS NOT BETWEEN 10 AND 20

In

  • Nai šifre i imena snabdjevaa iji je status 10 ili 20 ili 30.

SELECT * FROM SNABDJEVAC WHERE STATUS=10 OR STATUS=20 OR STATUS=

ili

SELECT * FROM SNABDJEVAC WHERE STATUS IN (10,20,30)

Not In

  • Nai šifre i imena snabdjevaa iji status nije ni 10 ni 20 ni 30. SELECT * FROM SNABDJEVAC WHERE STATUS<>10 AND STATUS<>20 AND STATUS<> ili SELECT * FROM SNABDJEVAC WHERE NOT (STATUS=10 OR STATUS=20 OR STATUS=30) ili SELECT * FROM SNABDJEVAC WHERE STATUS NOT IN (10,20,30)

Like

  • Nai imena proizvoda koji poinju slovom P. SELECT P_IME FROM PROIZVOD WHERE P_IME LIKE 'P%' Primjer Ta  no Neta  no % nula ili više znakova a%a aa, aBa, aBBBa aBC %ab% abc, AABB, Xab aZb, bac ab% abcdefg, abc cab, aab _ Jedan znak a_a aaa, a3a, aBa aBBBa Opseg ili skup znakova [a-z] f, p, j 2, & [fpj] f, p, j 2, & Van opsega ili skupa [^a-z] 9, &, % b, a

Izrazi i ugraene funkcije

SELECT F_NO, KOL*1.

FROM ISPORUKA

SELECT F_NO, KOL*1.3 AS NOVO

FROM ISPORUKA

SELECT SIN(STATUS), LEFT(GRAD,3)

FROM SNABDJEVAC

Order by

SELECT * FROM ISPORUKA ORDER BY S_NO

SELECT * FROM ISPORUKA ORDER BY S_NO, F_NO

SELECT * FROM ISPORUKA ORDER BY S_NO ASC, F_NO DESC

SELECT * FROM ISPORUKA ORDER BY S_NO DESC, F_NO DESC

Agregatne funkcije

  • Pravu snagu pokazuju sa grupisanjem.
  • 5 osnovnih agregatnih funkcija:
    • MAX
    • MIN
    • AVG
    • SUM
    • COUNT

Agregatne funkcije

• SELECT MAX(KOL) FROM ISPORUKA

• SELECT MIN(KOL) FROM ISPORUKA

• SELECT SUM (KOL) FROM ISPORUKA

• SELECT AVG(KOL) FROM ISPORUKA

• SELECT COUNT(*) FROM ISPORUKA

Grupisanje

Položio

121 Hem P1 8 150 Fiz P2 9

100 Fiz P2 10

130 Mat P2 7

100 Mat P1 6

Br_ind Predmet Profesor Ocjena

Grupisano po predmetu

150 Fiz P2 9

121 Hem P1 8

100 Fiz P2 10

130 Mat P2 7

100 Mat P1 6

Upiti sa više tabela

  • Nai imena snabdjevaa iz Podgorice koji

imaju bar jednu isporuku.

SELECT S_IME FROM SNABDJEVAC, ISPORUKA WHERE SNABDJEVAC.S_NO=ISPORUKA.S_NO AND SNABDJEVAC.GRAD='Podgorica'

Upiti sa više tabela

  • Nai imena snabdjevaa iz Podgorice koji

isporuuju bar jedan crveni proizvod.

SELECT S_IME FROM SNABDJEVAC, ISPORUKA, PROIZVOD WHERE SNABDJEVAC.S_NO=ISPORUKA.S_NO AND PROIZVOD.P_NO=ISPORUKA.P_NO AND SNABDJEVAC.GRAD='Podgorica' AND PROIZVOD.BOJA='Crvena'

Upiti nad više tabela

  • Nai imena snabdjevaa iz Podgorice koji isporuuju bar jedan crveni proizvod fabrici iz Beograda.

SELECT S_IME FROM SNABDJEVAC, ISPORUKA, PROIZVOD, FABRIKA WHERE SNABDJEVAC.S_NO=ISPORUKA.S_NO AND PROIZVOD.P_NO=ISPORUKA.P_NO AND FABRIKA.F_NO=ISPORUKA.F_NO AND SNABDJEVAC.GRAD='Podgorica' AND PROIZVOD.BOJA='Crvena' AND FABRIKA.GRAD='Beograd'

INNER JOIN

  • Spajanje se može izvesti i samo u FROM dijelu

SELECT S_IME FROM SNABDJEVAC INNER JOIN ISPORUKA ON SNABDJEVAC.S_NO=ISPORUKA.S_NO

SELECT * FROM (SNABDJEVAC INNER JOIN ISPORUKA ON SNABDJEVAC.S_NO=ISPORUKA.S_NO) INNER JOIN FABRIKA ON ISPORUKA.F_NO=FABRIKA.F_NO

INNER JOIN

  • Nai imena snabdjevaa iz Podgorice koji isporuuju bar jedan crveni proizvod fabrici iz Beograda.

SELECT S_IME FROM ( (SNABDJEVAC INNER JOIN ISPORUKA ON SNABDJEVAC.S_NO=ISPORUKA.S_NO) INNER JOIN FABRIKA ON ISPORUKA.F_NO=FABRIKA.F_NO) INNER JOIN PROIZVOD ON ISPORUKA.P_NO= PROIZVOD.P_NO WHERE SNABDJEVAC.GRAD='Podgorica' AND PROIZVOD.BOJA='Crvena' AND FABRIKA.GRAD='Beograd'

Spajanje tabele sa sobom

  • Nai sve mogue parove (P_IME, P_IME)

SELECT A.P_IME, B.P_IME FROM PROIZVOD A, PROIZVOD B

Upiti nad više tabela sa

grupisanjem

  • Nai šifre snabdjevaa kao i broj isporuka

crvenih proizvoda.

SELECT S_NO, COUNT()*

FROM ISPORUKA, PROIZVOD

WHERE PROIZVOD.P_NO=ISPORUKA.P_NO AND PROIZVOD.BOJA='Crvena'

GROUP BY S_NO

OUTER JOIN

  • Ukljuuje u rezultat i one koji nisu spojeni,

sa lijeve, desne strane ili obije strane.

SELECT * FROM SNABDJEVAC INNER JOIN PROIZVOD ON SNABDJEVAC.GRAD= PROIZVOD.GRAD

SELECT * FROM SNABDJEVAC LEFT OUTER JOIN PROIZVOD ON SNABDJEVAC.GRAD= PROIZVOD.GRAD

OUTER JOIN

SELECT * FROM SNABDJEVAC RIGHT OUTER JOIN PROIZVOD ON SNABDJEVAC.GRAD= PROIZVOD.GRAD

SELECT * FROM SNABDJEVAC FULL OUTER JOIN PROIZVOD ON SNABDJEVAC.GRAD= PROIZVOD.GRAD

Podupiti

  • To su SELECT upiti unutar drugog upita
  • Postoje dvije vrste podupita
    • Nevezani podupiti (oni koji se raunaju nezavisno od spoljašnjeg upita)
    • Vezani podupiti

Podupiti kao konstante

Podupit koji vraa jednu vrijednost se može koristiti svuda gdje i konstanta! Ispisati podatke o snabdjevaima uz informaciju o ukupnom broju isporuka SELECT , (SELECT COUNT() FROM ISPORUKA) AS BR_ISPORUKA FROM SNABDJEVAC

Ispisati podatke o snabdjevaima uz informaciju o ukupnom broju njihovih isporuka

SELECT , (SELECT COUNT() FROM ISPORUKA WHERE ISPORUKA.S_NO=SNABDJEVAC.S_NO) AS BR_ISPORUKA FROM SNABDJEVAC

Podupiti kao konstante

Nai one proizvode ijih je isporuka više nego 1/5 ukupnog broja isporuka

SELECT ISPORUKA.P_NO, COUNT() FROM ISPORUKA GROUP BY P_NO HAVING COUNT() > (SELECT COUNT(*) FROM ISPORUKA)/

  • ovako mogu da se koriste podupiti koji vraaju tano jednu vrijednost!!!

Podupit EXISTS

  • Nai one snabdjevae koji isporuuju bar nešto.

SELECT * FROM SNABDJEVAC WHERE EXISTS (SELECT * FROM ISPORUKA WHERE SNABDJEVAC.S_NO= ISPORUKA.S_NO)

Podupit NOT EXISTS

  • Nai šifre onih snabdjevaa koji isporuuju sve crvene proizvode. SELECT ISPORUKA.S_NO FROM ISPORUKA WHERE NOT EXISTS (SELECT P_NO FROM PROIZVOD WHERE BOJA='Crvena' AND NOT EXISTS (SELECT * FROM ISPORUKA X WHERE X.S_NO= ISPORUKA.S_NO AND X.P_NO= PROIZVOD.P_NO) )

SLOŽENIJI INSERT

  • INSERT INTO može da bude sa podupitom

INSERT INTO SNABDJEVAC(S_NO, S_IME, STATUS, GRAD)

SELECT S_NO+'d', S_IME, STATUS, GRAD FROM SNABDJEVAC

SELECT - INTO

  • Kreiranje tabele pomou SELECT upita
  • SELECT * INTO POMOCNA FROM

SNABDJEVAC

Složeniji UPDATE

  • ALTER TABLE ISPORUKA ADD IME_SNAB VARCHAR(20)
  • UPDATE ISPORUKA SET IME_SNAB = SNABDJEVAC.S_IME FROM SNABDJEVAC WHERE SNABDJEVAC.S_NO= ISPORUKA.S_NO
  • UPDATE ISPORUKA SET IME_SNAB = (SELECT SNABDJEVAC.S_IME FROM SNABDJEVAC WHERE SNABDJEVAC.S_NO= ISPORUKA.S_NO) WHERE ISPORUKA.KOL>

SLOŽENIJI DELETE

  • DELETE FROM POMOCNA FROM SNABDJEVAC WHERE SNABDJEVAC.S_NO= POMOCNA.S_NO
  • DELETE FROM POMOCNA WHERE EXISTS(SELECT * FROM SNABDJEVAC WHERE SNABDJEVAC.S_NO= POMOCNA.S_NO)