Electron
Баниран/a
- 23 април 2007
- 53
- 0
So SQL naredbite nema razlika dali se pisuvaat golemi ili mali bukvi sto znaci deka SELECT i identicno so select ili WHERE
so where ili LIKE so like itn. vazno ja svativte poentata
No vazno e da se napomene daka iminjata na tabelite, kolonite ili redovite se custvitelni na golemi i mali bukvi sot znaci
deka id ne e isto so Id ili pak proba ne e isto so PROBA
DO POCNIME SO OSNOVNITE NAREDBI:
SELECT -osnovna naredba na SQL za povikuvanje na kolona ili red od tabela
SELECT <column_list> FROM <table_name> -Povikuvanje na kolona (<column_list>) od tabelata (FROM <table_name>)
<column_list> e lista na koloni na primer izbirame kolona 1 kolona2 itn (col1,col2,col3...)
<column_list> za ova naredba mora da se koristi imeto na kolonata ne mozi da se koristi broevi ili sl tuku mora kolonata da
se povika po ime
<table_name> ime na tabelata moze da bide na pr nekoj korisnik (user) ako barame iformacija za nekoj korisnik ili (config)
ako barame informacija za nekoja web strana ako imame tabela koja ima preku 100 koloni nie nema da senime i ad pisuvame
col1, col2 col3, col4... oti toa e mnogi dolgo zatoa ke zamenime imeto na kolonata so * i ke ke gi povikame site koloni od
baranata tabela
SELECT * FROM test -so ovaa naredba nie ke povikuvame site koloni od tabelata test.Pisuvajki ja ovaaa naredba nie ke ja
dobieme sledanta tabela
----------------
|1 | proba1 |
|----------------|
|2 | Electron |
-----------------
Znaci ednata kolona ja socinuvaat 1 i 2 a vtorata proba1 i Electron, a redvoite se 1 i proba1 vo prviot, a 2 i Electron va
vtoriot.ili za da gi povikame dvete koloni treba da ja napiseme slednata naredba
SELECT id, proba FROM test - znaci prvata kolona ima ime id a vtorata proba
WHERE -se korisri za izbiranje na red. Dail sakame da izbereme red so posebni podatoci ili site redovi
SELECT <column_list> FROM <table_name> WHERE <column> <operator> <expresion> -primer za kako da se povikuvaat redovite
SELECT * FROM test WHERE id=1 - so ovaa naredba nie gi povikuvame site kelii kade sto id=1 a od predhodnata tabela gledame
deka toa e prviot red i ke bide ispisan samo toj t.e.
-------------
|1 | proba1|
-------------
ili ako napiseme SELECT * FROM test WHERE id=2 toa znaci deka gi povikuvame site kelii kade sto id=2 sto znaci acvtomatski
znaci nie ko povikuvame vtoriot red t.e.
---------------
|2 | Electron|
---------------
Osven operatorot = mozeme da koirstime isto taka i <,> ili i nekoi drugi operatori
LIKE - se koristi koga znaeme samo del od imeto na redot no ne go znaeme celoto ime na redot koj sto go barame
SELECT * FROM test WHERE proba LIKE "%tr%" - sto znaci ako vo kolonata proba ima nesto, pa izazot "tr" (bez navodnici),
pa potoa pak sto bilo ke bide selektirano. Sto znaci deka vo nasiot primer nie ke go dobieme slednovo:
---------------
|2 | Electron|
---------------
Ova ko dobivme bidejki izrazot tr go ima samo vo vtorata kolona i zatoa samo toj ke bide pokazan.
Ako pak go napiseme izrazot SELECT * FROM test WHERE proba LIKE "%o%" ke bidat pokazani i dvata reda bidejki bukvata o ja
ima i vo dvata "proba" i vo "Electron"
Kaj SQL naredbite moze da se koristat i bulovi naredbi kako na primer AND (i) ili pak OR (ili).Da gi razgledame selnite
primeri : SELECT * FROM test WHERE id=1 AND id=2 -ova nikogas ne e tocno bidejki ne moze da bide id i 1 i dva i zatoa nema
da se pokaze nisto nas izlez
Ako naredbata AND ja promenime vo OR ka go dobieme slednovo: SELECT * FROM test WHERE id=1 OR id=2 togas ke gi dobieme i
dvata redovi. Istoto ke go dobieme ako ko napiseme i sledniov izraz SELECT * FROM test WHERE id=1 OR LIKE "%o%" zanci i tuka
se ispolneti i dvata uslovi i povtorno ke ostanat i dvata redovi.
ORDER BY <column_name or #> ova e edna od retkite naredbi kade sto moze da se koristat i brojki, i zatoa ja pravi korisna
bidejki hakerite cesto na gi znaat iminjata na kolonite, no gi znaat broevite.Prvata kolona ima reden broj 1,vtorata 2 itn,
a za redovite vazi slednovo prviot red e 0 vtoriot e 1 itn...
So naredbata ORDER BY se koristat i nardedbite ASC (vrednostite na kolonite da odat od najgolema pa kon najmala) I DESC
(vrednostite da odat na kolonite da odat od najmala kon najgolema)
Znaci ako ja napiseme slednata naredba SELECT * FROM test ORDER BY id DESC ke gi dobieme i dvete koloni no so obraten
redosled sto znaci deka poslednata kolona ke bidi prva itn:
--------------
|2 | Electron |
----------------
|1 | proba1 |
----------------
Ako napiseme SELECT * FROM test ORDER BY 1 ASC - ke dobeme sledno
----------------
|1 | proba1 |
|----------------|
|2 | Electron |
----------------
Vo ovaj slucaj ne mora da pisuvame i ASC bidejki nie povikuvame od prva kolona natamu pa zatoa ne mora da pisuvame i ASC
bidejki avtomatski taka se anredeni i taka ke se priakazat
Ako imame na Url prodpage.php?prodID=1 Vo ovaj slucaj veke e zapocnata SQL naredbata i imame nesto slicno na ova
SELECT <column_list> FROM <table_name> WHERE productcol=$_GET('prodID') bidejki SELECT naredbata e veke zapocnata nema da ima
nacin da manipulirame so nea pa zatoa se zapoznavame so nova naredba UNION
<select1> UNION <select2> -UNION naredbata se koristi za izvrsuvanje na dve SELECT naredbi. no podobro e da se koristi
UNION ALL namesto UNION. nema da navleguvam vo detali okolu ova, no so UNION ALL se izvrsuvaat site naredbi i promenlivi i od
<select1> i od <select2> ako imame isti naredbi koi se dupliraat vo <select1> i vo <select2> so UNION ALL ke se izvrsat
site naredbi.Vazno e da se napomene deka brojot na selectirani koloni od <select1> mora da e ist so selektiranite kooni od
<select2>, ako vO<seklect1> ima selectirano 2 koloni i vo <select2>mora da se selektirat isto 4 koloni.
Da vidime eden primer so ovaa naredba:
SELECT * FROM test UNION ALL SELECT * FROM tabela_2. bidejki jas znam deka tabela_2 ima 3 koloni, ovaa naredba nema da se
izvrsi, tuku ke se pojavi nekoja ERROR poraka. Toa ke se sluci poradi toa sto rekovme deka treba da se selektiraat ist broj
na koloni i vo dvete strani na select naredbite, sto ne e slucaj ovde. za da ja popravime ovaa greska ke probame so slednava
naredba: SELECT *, "asfs" UNION ALL SELECT * FROM tabela_2
(posle zvezdata vo pirvata SELECT naredba zapisuvame sto sakame. Ova go pravime za da imenuvame nekoja kolona so cel da se
izramni brojot na koloni i vo dvete strani t.e. da bidat 3 so 3 na dvete strani)
1 2 3
--------------------------------
0 | 1 | proba1 | asfs |
|-------|------------|-----------
1 | 2 | Electron | asfs |
|-------|------------|-----------
2 | dfgd | tutorial1 | gdfgdf |
|-------|------------|-----------
3 | sdkf | test@test | tertert |
|-------|------------|-----------
4 | khgu| sql_tut | uytut |
--------------------------------
so where ili LIKE so like itn. vazno ja svativte poentata
No vazno e da se napomene daka iminjata na tabelite, kolonite ili redovite se custvitelni na golemi i mali bukvi sot znaci
deka id ne e isto so Id ili pak proba ne e isto so PROBA
DO POCNIME SO OSNOVNITE NAREDBI:
SELECT -osnovna naredba na SQL za povikuvanje na kolona ili red od tabela
SELECT <column_list> FROM <table_name> -Povikuvanje na kolona (<column_list>) od tabelata (FROM <table_name>)
<column_list> e lista na koloni na primer izbirame kolona 1 kolona2 itn (col1,col2,col3...)
<column_list> za ova naredba mora da se koristi imeto na kolonata ne mozi da se koristi broevi ili sl tuku mora kolonata da
se povika po ime
<table_name> ime na tabelata moze da bide na pr nekoj korisnik (user) ako barame iformacija za nekoj korisnik ili (config)
ako barame informacija za nekoja web strana ako imame tabela koja ima preku 100 koloni nie nema da senime i ad pisuvame
col1, col2 col3, col4... oti toa e mnogi dolgo zatoa ke zamenime imeto na kolonata so * i ke ke gi povikame site koloni od
baranata tabela
SELECT * FROM test -so ovaa naredba nie ke povikuvame site koloni od tabelata test.Pisuvajki ja ovaaa naredba nie ke ja
dobieme sledanta tabela
----------------
|1 | proba1 |
|----------------|
|2 | Electron |
-----------------
Znaci ednata kolona ja socinuvaat 1 i 2 a vtorata proba1 i Electron, a redvoite se 1 i proba1 vo prviot, a 2 i Electron va
vtoriot.ili za da gi povikame dvete koloni treba da ja napiseme slednata naredba
SELECT id, proba FROM test - znaci prvata kolona ima ime id a vtorata proba
WHERE -se korisri za izbiranje na red. Dail sakame da izbereme red so posebni podatoci ili site redovi
SELECT <column_list> FROM <table_name> WHERE <column> <operator> <expresion> -primer za kako da se povikuvaat redovite
SELECT * FROM test WHERE id=1 - so ovaa naredba nie gi povikuvame site kelii kade sto id=1 a od predhodnata tabela gledame
deka toa e prviot red i ke bide ispisan samo toj t.e.
-------------
|1 | proba1|
-------------
ili ako napiseme SELECT * FROM test WHERE id=2 toa znaci deka gi povikuvame site kelii kade sto id=2 sto znaci acvtomatski
znaci nie ko povikuvame vtoriot red t.e.
---------------
|2 | Electron|
---------------
Osven operatorot = mozeme da koirstime isto taka i <,> ili i nekoi drugi operatori
LIKE - se koristi koga znaeme samo del od imeto na redot no ne go znaeme celoto ime na redot koj sto go barame
SELECT * FROM test WHERE proba LIKE "%tr%" - sto znaci ako vo kolonata proba ima nesto, pa izazot "tr" (bez navodnici),
pa potoa pak sto bilo ke bide selektirano. Sto znaci deka vo nasiot primer nie ke go dobieme slednovo:
---------------
|2 | Electron|
---------------
Ova ko dobivme bidejki izrazot tr go ima samo vo vtorata kolona i zatoa samo toj ke bide pokazan.
Ako pak go napiseme izrazot SELECT * FROM test WHERE proba LIKE "%o%" ke bidat pokazani i dvata reda bidejki bukvata o ja
ima i vo dvata "proba" i vo "Electron"
Kaj SQL naredbite moze da se koristat i bulovi naredbi kako na primer AND (i) ili pak OR (ili).Da gi razgledame selnite
primeri : SELECT * FROM test WHERE id=1 AND id=2 -ova nikogas ne e tocno bidejki ne moze da bide id i 1 i dva i zatoa nema
da se pokaze nisto nas izlez
Ako naredbata AND ja promenime vo OR ka go dobieme slednovo: SELECT * FROM test WHERE id=1 OR id=2 togas ke gi dobieme i
dvata redovi. Istoto ke go dobieme ako ko napiseme i sledniov izraz SELECT * FROM test WHERE id=1 OR LIKE "%o%" zanci i tuka
se ispolneti i dvata uslovi i povtorno ke ostanat i dvata redovi.
ORDER BY <column_name or #> ova e edna od retkite naredbi kade sto moze da se koristat i brojki, i zatoa ja pravi korisna
bidejki hakerite cesto na gi znaat iminjata na kolonite, no gi znaat broevite.Prvata kolona ima reden broj 1,vtorata 2 itn,
a za redovite vazi slednovo prviot red e 0 vtoriot e 1 itn...
So naredbata ORDER BY se koristat i nardedbite ASC (vrednostite na kolonite da odat od najgolema pa kon najmala) I DESC
(vrednostite da odat na kolonite da odat od najmala kon najgolema)
Znaci ako ja napiseme slednata naredba SELECT * FROM test ORDER BY id DESC ke gi dobieme i dvete koloni no so obraten
redosled sto znaci deka poslednata kolona ke bidi prva itn:
--------------
|2 | Electron |
----------------
|1 | proba1 |
----------------
Ako napiseme SELECT * FROM test ORDER BY 1 ASC - ke dobeme sledno
----------------
|1 | proba1 |
|----------------|
|2 | Electron |
----------------
Vo ovaj slucaj ne mora da pisuvame i ASC bidejki nie povikuvame od prva kolona natamu pa zatoa ne mora da pisuvame i ASC
bidejki avtomatski taka se anredeni i taka ke se priakazat
Ako imame na Url prodpage.php?prodID=1 Vo ovaj slucaj veke e zapocnata SQL naredbata i imame nesto slicno na ova
SELECT <column_list> FROM <table_name> WHERE productcol=$_GET('prodID') bidejki SELECT naredbata e veke zapocnata nema da ima
nacin da manipulirame so nea pa zatoa se zapoznavame so nova naredba UNION
<select1> UNION <select2> -UNION naredbata se koristi za izvrsuvanje na dve SELECT naredbi. no podobro e da se koristi
UNION ALL namesto UNION. nema da navleguvam vo detali okolu ova, no so UNION ALL se izvrsuvaat site naredbi i promenlivi i od
<select1> i od <select2> ako imame isti naredbi koi se dupliraat vo <select1> i vo <select2> so UNION ALL ke se izvrsat
site naredbi.Vazno e da se napomene deka brojot na selectirani koloni od <select1> mora da e ist so selektiranite kooni od
<select2>, ako vO<seklect1> ima selectirano 2 koloni i vo <select2>mora da se selektirat isto 4 koloni.
Da vidime eden primer so ovaa naredba:
SELECT * FROM test UNION ALL SELECT * FROM tabela_2. bidejki jas znam deka tabela_2 ima 3 koloni, ovaa naredba nema da se
izvrsi, tuku ke se pojavi nekoja ERROR poraka. Toa ke se sluci poradi toa sto rekovme deka treba da se selektiraat ist broj
na koloni i vo dvete strani na select naredbite, sto ne e slucaj ovde. za da ja popravime ovaa greska ke probame so slednava
naredba: SELECT *, "asfs" UNION ALL SELECT * FROM tabela_2
(posle zvezdata vo pirvata SELECT naredba zapisuvame sto sakame. Ova go pravime za da imenuvame nekoja kolona so cel da se
izramni brojot na koloni i vo dvete strani t.e. da bidat 3 so 3 na dvete strani)
1 2 3
--------------------------------
0 | 1 | proba1 | asfs |
|-------|------------|-----------
1 | 2 | Electron | asfs |
|-------|------------|-----------
2 | dfgd | tutorial1 | gdfgdf |
|-------|------------|-----------
3 | sdkf | test@test | tertert |
|-------|------------|-----------
4 | khgu| sql_tut | uytut |
--------------------------------