3. lekcija - select

3. lekcija - select

offline
  • Pridružio: 18 Apr 2003
  • Poruke: 8134
  • Gde živiš: U kesici gumenih bombona...

Select upit sluzi kako bi iz neke tabele 'izvadili' selektovali neki zapis ili vise zapisa po nekom odredjenom

kriterijumu.
sintaxta select upita je sledeca:

SELECT * FROM ime_tabele [WHERE id=13];

znak * znaci da cemo iz tabele ime_tabele da selektujemo sve atribute, a ime_tabele je zapravo ime tabele u kojoj se

nalaze ti selektovani atributi.

ako zelimo da iz tabele selektujemo sve korisnike koji su rodjeni 83 godine upit bi izgledao ovako:

SELECT * FROM tabela1 WHERE Godiste=83;

kao rezultat ovog upita, dobicemo ovakvu tabelu

-------------------------------------------- |  Ime       |  Prezime       |  Godiste   | -------------------------------------------- | Predrag    |  Damnjanovic   |  83        | --------------------------------------------

ova tabela je virtuelna tabela i nalazi se u memoriji racunara.

bazu cemo azurirati (update jos nismo radili, za dva casa)

UPDATE tabela1 SET Godiste=83 WHERE Prezime='Kasic';

ovaj sql upit ce u vec postojeci zapis, dodati ono prazno poje koje je bilo (Godiste)
cela tabela izgleda ovako:

-------------------------------------------- |  Ime       |  Prezime       |  Godiste   | -------------------------------------------- | Predrag    |  Damnjanovic   |  83        | | Petar      |  Petrovcic     |  84        | | Jasmina    |  Nikolic       |  80        | | Slobodan   |  Kasic         |  83        | --------------------------------------------

kada se sada izvrsi isti onaj SELECT upit, virtuelna tabela ce biti ovakva:

-------------------------------------------- |  Ime       |  Prezime       |  Godiste   | -------------------------------------------- | Predrag    |  Damnjanovic   |  83        | | Slobodan   |  Kasic         |  83        | --------------------------------------------

sa ovakvim rezultatom upita, mozete da radite sta vam je volja. da ga sortirate ili ispisujete negde.

ako zelite da izracunate (izbrojite) koliko zapisa ima u tabeli sledeci sql upit resava to:

SELECT count(*) FROM tabela1;

rezultat upita ce biti broj 4.

postoje i malo komplikovaniji delovi SELECT upita (ugnjezdeni upiti)

hipoteticka situacija:
imate dve tabele. u jednoj spisak CD/DVD, a u drugoj grupa u kojoj isti pripadaju.
tabele ce ovako nekako izgledati:

tabela: cddvd -------------------------------------------- | Broj       |  Ime           |  Grupa     | -------------------------------------------- | 1          |  Worms         |  1         | | 2          |  Flash         |  2         | | 3          |  Linux         |  3         | | 4          |  VS.NET        |  4         | --------------------------------------------

tabela: grupa ------------------------------- | Broj       |  Ime           | ------------------------------- | 1          |  Igre          | | 2          |  Programi      | | 3          |  OSystems      | | 4          |  Programiranje | -------------------------------

ovako realizovana tabela sprecava neke od anomalija (anomalije pri brisanju, dodavanj i azuriranju)

mozgli smo to uraditi i sa jednom tabelom stim sto bi onda u atributu Grupa zapravo bilo ime grupe, ali to nije

dobro. tako se ne radi zbog pomenutih anomalija (o njima kasnije)

ove dve tabele su spojene sa atributima Grupa (iz prve tabele) i Broj (iz druge tabele)

select cddvd.broj,cddvd.ime,grupa.ime from cddvd,grupa where cddvd.broj=grupa.broj;

ovaj sql upit ce vam dati ono sto zelite.
tabela je ovakva

tabela: virtuelana ----------------------------------------------- | Broj       |  Ime           |  Grupa        | ----------------------------------------------- | 1          |  Worms         |  Igre         | | 2          |  Flash         |  Programi     | | 3          |  Linux         |  OSystems     | | 4          |  VS.NET        |  Programiranje| -----------------------------------------------

sve sto vam je potrebno je tu, a jos plus ste izbegli anomalije. malo je sql upit komplikovaniji, ali nije problem.

znaci, ono sto zelite da se prikaze u tabeli, morate navesti posle SELECT-a. kada radite sa dve ili vise tabela,

najbolje je da atribut pisete kao ime_tabele.ime_atributa da ne bi bilo zabune, a i da izbegnete greske, posebno ako

u dve tabele imate isti atribut (kao u mom slucaju Broj).
ovo je nesto sto ja najcesce koristim. ima tu jos ugnjezdenih f-ja. neke ne znam ni sam kako se koriste Smile

npr.

SELECT max(Broj) FROM grupa;

vraca broj 4 posto je on najveci broj u atributu Broj

slucaj sa min(broj), vratice 1, kao najmanji.

Navigation
----------------------------------
prev | next



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23211
  • Gde živiš: Niš

umesto SELECT * mozete navoditi i polja koja zelite da dobijete, recimo SELECT preizime, godiste...

na primer:
SELECT ime FROM tabela1;

i dobicete

-------------- |  Ime       | -------------- | Predrag    | | Petar      | | Jasmina    | | Slobodan   | --------------



offline
  • Pridružio: 18 Apr 2003
  • Poruke: 8134
  • Gde živiš: U kesici gumenih bombona...

@ Peca

hvala, zaboravih to napomenuti Smile

Ko je trenutno na forumu
 

Ukupno su 1131 korisnika na forumu :: 45 registrovanih, 5 sakrivenih i 1081 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 357magnum, A.R.Chafee.Jr., anta, Atomski čoban, Bane san, bigfoot, bojcistv, bokisha253, Bubimir, CikaKURE, darkangel, debeli, Dorcolac, Dr.Strangelove, esx66, GandorCC, grenadir, Hexe, hyla, ivan1973, jackreacher011011, janbo, Komentator, kripo, kybonacci, laki_bb, Lieutenant, Mcdado, mercedesamg, Milos ZA, milutin134, mkukoleca, ozzy, Panter, pein, procesor, raptorsi, stankolich, stegonosa, Tragač, Tvrtko I, Vatreni Zmaj, Vlad000, voja64, vukovi