Professional Documents
Culture Documents
MEGEP
(MESLEK ETM VE RETM SSTEMNN GLENDRLMES PROJES)
BLM TEKNOLOJLER
INTERNET PROGRAMCILII - 5
ANKARA 2008
Milli Eitim Bakanl tarafndan gelitirilen modller; Talim ve Terbiye Kurulu Bakanlnn 02.06.2006 tarih ve 269 sayl Karar ile onaylanan, Mesleki ve Teknik Eitim Okul ve Kurumlarnda kademeli olarak yaygnlatrlan 42 alan ve 192 dala ait ereve retim programlarnda amalanan mesleki yeterlikleri kazandrmaya ynelik gelitirilmi renme materyalleridir (Ders Notlardr). Modller, bireylere mesleki yeterlik kazandrmak ve bireysel renmeye rehberlik etmek amacyla renme materyali olarak hazrlanm, denenmek ve gelitirilmek zere Mesleki ve Teknik Eitim Okul ve Kurumlarnda uygulanmaya balanmtr. Modller teknolojik gelimelere paralel olarak, amalanan yeterlii kazandrmak koulu ile eitim retim srasnda gelitirilebilir ve yaplmas nerilen deiiklikler Bakanlkta ilgili birime bildirilir. rgn ve yaygn eitim kurumlar, iletmeler ve kendi kendine mesleki yeterlik kazanmak isteyen bireyler modllere internet zerinden ulaabilirler. Baslm modller, eitim kurumlarnda rencilere cretsiz olarak datlr. Modller hibir ekilde ticari amala kullanlamaz ve cret karlnda satlamaz.
NDEKLER
AIKLAMALAR ....................................................................................................................ii GR ....................................................................................................................................... 1 RENME FAALYET-1 ..................................................................................................... 3 1. MYSQL VER TABANI YNETM................................................................................. 3 1.1. Veri Taban Oluturma (Create Database).................................................................... 3 1.1.1. MySQL Veri Taban Sunucusu ............................................................................. 5 1.1.2. MySQL Kurulumu................................................................................................. 5 1.1.3. MySQL Yazm Kurallar ....................................................................................... 5 1.1.4. MySQL Yeni Kullanc Oluturma........................................................................ 6 1.2. Tablo Oluturma (Create Table) ................................................................................... 8 1.3. Index Yaplar (Create Index) ..................................................................................... 12 1.4. Insert Kullanm .......................................................................................................... 14 1.5. Select Kullanm.......................................................................................................... 15 1.6. Delete Kullanm ......................................................................................................... 22 1.7. Update Kullanm........................................................................................................ 22 1.8. Alter Kullanm ........................................................................................................... 23 1.9. MySQL Fonksiyonlar ................................................................................................ 26 1.9.1. Standart Fonksiyonlar.......................................................................................... 26 1.9.2. Tarih ve Zaman Fonksiyonlar............................................................................. 27 1.9.3. Karlatrma Fonksiyon ve Operatrleri............................................................. 39 1.9.4. Mantksal Operatrler.......................................................................................... 40 1.9.5. Kontrol Mekanizmalar ve Karakter Fonksiyonlar............................................. 42 1.9.6. Aritmetik Operatrler .......................................................................................... 46 1.9.7. Matematiksel Fonksiyonlar ................................................................................. 47 UYGULAMA FAALYET .............................................................................................. 50 LME VE DEERLENDRME .................................................................................... 51 RENME FAALYET2 .................................................................................................. 53 2. PHP LE MySQL VER TABANINA ERMEK............................................................. 53 2.1. PHP le Veri Taban Etkileimleri .............................................................................. 53 2.2. MySQL Sunucusuna Balant..................................................................................... 55 2.3. Veri Taban Seimi ..................................................................................................... 55 2.4. Veri Tabann Sorgulamak .......................................................................................... 56 2.5. SQL Sunucu zerinde lemler .................................................................................. 56 2.6. MySQL Balantsn Kapatma.................................................................................... 57 UYGULAMA FAALYET .............................................................................................. 61 LME VE DEERLENDRME .................................................................................... 62 MODL DEERLENDRME .............................................................................................. 63 CEVAP ANAHTARLARI ..................................................................................................... 64 NERLEN KAYNAKLAR.................................................................................................. 65 KAYNAKA ......................................................................................................................... 66
AIKLAMALAR AIKLAMALAR
KOD ALAN DAL/MESLEK MODLN ADI MODLN TANIMI SRE N KOUL YETERLK 482BK0098 Biliim Teknolojileri Web Programcl Internet Programcl - 5 Gerekli ortam salandnda programlama komutlar yardmyla veri taban ilemleri yapma ile ilgili konularn anlatld renme materyalidir. 40/32 Internet Programcl - 4 modln baarm olmak Programlama iinde form ve nesneler kullanmak Genel Ama Gerekli ortam salandnda hazrlanan program ile veri taban ilemleri yapabileceksiniz. MODLN AMACI Amalar Veri taban programlama dilinin (MySQL) kullanmn renerek uygulamalar yapabileceksiniz. Veri taban programlama diliyle etkileimli web (php ile) uygulamalar gerekletirebileceksiniz. Ortam Biliim teknolojileri laboratuvar, iletme ortam, bilgisayar laboratuvar Donanm Projeksiyon, bilgisayar web programlama yazlmlarn altrabilecek yeterlikte bilgisayar, , internet balants Her faaliyet sonrasnda o faaliyetle ilgili deerlendirme sorular ile kendi kendinizi deerlendireceksiniz. retmen, modl sonunda size lme arac (uygulama, soru-cevap) uygulayarak modl uygulamalar ile kazandnz bilgi ve becerileri lerek deerlendirecektir.
LME VE DEERLENDRME
ii
GR GR
Sevgili renci, Programlama ile birlikte insanlar tm verilerini bilgisayar ortamnda tutmak istemilerdir. Bunun iin hemen hemen tm programlama dillerinde dosyalama ilemi yaplabilmektedir. Bu ortamlardaki kstlamalar, her ey istenildii gibi yaplamadndan sadece veri kontrollerinde iyi olan programlama dilleri gelitirilmitir. Veri taban programlar; bir kurumun alanlarnn kimlik, adres, kurum vb. bilgilerinin tutulup ilendii ve bunlarla ilgili deiikliklerin yapld programlama dilleridir. MySQL Linux ve PHP ile ok iyi anlaabilen bir veri taban programlama dilidir. Gnmzde zaten web tasarmcs olan birisi, tasarmn bir veri tabanyla mutlaka birletirmelidir. nk artk insanlar ilerini web ortamna tamlardr. nternet zerinden alveri yapmak, okullara kayt yaptrmak veya bilgilerini grmek, uak veya otobs bileti almak gibi ilemlerde sizin bilgileriniz hep bu veri tabanlarnda tutulmaktadr. Internet ortamnda veri taban ilemi iin de baz web programlama dilleri, kendilerine uygun olan, anlaabilecei veri taban programlama dilini seer. PHP birok veri taban dilini destekler. MySQL de birok web programlama dilinde alr. Ama sanki PHP MySQL, MySQL de PHP iin gelitirilmitir gibidir. kisi de ak kod, ucuz veya bedava olan dillerdir.
ARATIRMA
Dnya apnda kullanlan veri taban programlarn aratrnz. MySQL ve dier veri tabanlarn avantaj ve dezavantaj olarak karlatrnz. Herhangi bir alveri web sitesinin nasl veri kayd yaptn aratrnz.
Aratrma ilemleri iin yelik gerektiren web sitelerinin yelik bilgilerinin nasl tutulduunu, alveri sitelerinin nasl hazrlandn dnerek byle birka web sitesini inceleyiniz.
TABLO - 1
ALAN - 1 ALAN - 2
TABLO - 2
ALAN - 1 ALAN - 2
TABLO - 3
ALAN - 1 ALAN - 2
ALAN - n
ALAN - n
ALAN - n
ekil 1.1
Bir veri taban adndan da anlalaca gibi bilgilerin depoland hiyerarik bir yapdr. Biz web zerinde kullanc ad, ifresi, e-posta adresi gibi bilgileri bu veri tabanlarnda saklarz. Ayn bilgileri bir dosyaya yazp gerektiinde dosyay ap bilgileri okutmak da bir zm gibi grnse de bu ilem hem daha karmak ve zahmetli hem de daha yavatr. Aslnda az ok ngilizce bilen birisi iin MySQL kullanmak pek zor olmayacaktr. Veri tabanlarnda tutulacak bilgilerin doru olarak girilmesi, tekrarl kaytlarn olmamas, verilerin gvenlii gibi zellikler ancak bir veri taban yntemiyle salanmaktadr. Bunlar salayan birok veri taban sunucusu vardr. Progress, Oracle, Sybase, ProsgreSQL, MySQL, Access bunlardandr.
MySQLde veri taban oluturmak olduka kolaydr. Bunun iin CREATE DATABASE komutu kullanlr. Kullanm: CREATE DATABASE veri taban_ad; veri taban_ad yerine oluturmak istediiniz veri tabannn adn yazmanz gerekir. rnek: Aadaki komutlarla ogrenci adl bir veri taban oluturulmutur.
mysql>create database ogrenci; Query OK,1row affected (0.03 sec)
Veri Taban Silme (Drop) Artk ihtiyacnz olmadna inandnz bir veri tabann DROP DATABASE komutuyla silebilirsiniz. Bu komutu uygulamadan nce ok iyi dnmeli ve bu veri tabanna ihtiyacnzn olmadndan emin olmalsnz. nk bu sorgu ile tm tablolar, tm indexleri ve veri tabannn kendisini silmi olacaksnz. Yani kaytlar geri gelmeyecektir. Kullanm; DROP DATABASE veri taban_ad; veri taban_ad yerine silmek istediiniz veri tabannn adn yazmanz gerekir. rnek: Aadaki komutlarla ogrenci adl bir veri taban silinmitir.
mysql>drop database ogrenci; Query OK,1 row affected (0.03 sec)
Komutlar birden fazla satrda yazlabilir (sonuna noktal virgl konulan komutlar, kelimeler blnmemek kaydyla).
Doru yazm:
mysql> select > current_time(); +--------------+ |currnet time()| +--------------+ |20:23:56 | +--------------+ 1 row in set (0.00 sec) mysql>
Hatal yazm:
mysql>select current_ >time(); ERROR 1064: You have an error in your SQL syntax near () at line 2 mysql>
MySQL sunucusuna okuma, ekleme, dzeltme ve silme hakk olan bir kullancy eklemek iin aadaki komutlar kullanlr:
mysql>insert into user >host, >user, >password, >Select_priv, >Insert_priv, >Update_priv,
>Delete_priv, >Create_priv, >Drop_priv, >Reload_priv, >Shutdown_priv, >Process_priv, >File_priv, >Grant_priv, >References_priv, >Index_priv, >Alter_priv) VALUES (#,ahmet,PASSWORD(3348),Y, Y, Y, Y,N, N, N, N, N, N, N, N, N, N);
Kullanc ad ahmet, ifresi 3348 olan tm yetkilere sahip bir kullanc oluturulur. Yeni kullanclarn tanmlarnn geerli olabilmesi iin MySQL sunucusunda klmal ve aadaki komut satr uygulanmaldr. MySQL sunucusunda database oluturma hakk olan bir kullanc Create database komutuyla yeni bir database oluturabilir. Kullanm: mysql>create database <veri taban ad>; rnek:
mysql> create database mezunlar; Query OK, 1 row affected (0.00 sec)
Veri tabann seme (use): Artk mezunlar diye bir veri taban oluturulmutur. Fakta bu veri tabann kullanabilmek iin sememiz gerekmektedir. Veri tabann semek iin use komutu kullanlr. Kullanm: mysql>use <database ad>; rnek:
mysql>use mezunlar; database changed
Resim 1.2
Kullanm:
Create Table <tablo ad> alan_ad veri_tr [Default ifade][alan_kstlamas], [tablo kstlamas]);
Tablo Ad Alan Ad Alan Veri Tr Default fade Alan Kstlamas Tablo Kstlamas
: : : : : :
Tabloya verilecek isim (rnek: mezunkayit) Tabloda yer alacak bilgi alanlarnn ad (rnek: ogr_no, adi, soyadi) O alana girilecek bilginin tr (say, metin, tarih) O alan belirtilmezse balangta atanacak deer O alanla ilgili kstlama (bo olmamas, o alana sadece E veya K girilmesi gibi kstlamalar) Her kaydn belirli alanlara gre kstlanmas (kaytlarn tek olmasn salamak, baka bir tabloyla ilikilendirmek)
MySQLde temel veri tipi vardr. Bunlar; saysal (numeric), tarih ve saat (date and time) ve karakter katardr (string). Bu kategorilerin her birinin iinde de pek ok tip bulunur. Her bir tipin hafzada eitli depolama boyutlar vardr. Veri trleri ve zellikleri aadaki tabloda grlmektedir.
Veri Tr TINYINT [(m)][UNSIGNED] [ZEROFILL] SMALLINT [(m)][UNSIGNED] [ZEROFILL] MEDIUM (m)][UNSIGNED][ZERO FILL] INT[(m)][UNSIGNED][Z EROFILL] BIGINT [(m)][UNSIGNED][ZERO FILL] FLOAT FLOAT (m,n) DOUBLE PRECISION [(m,n)] REAL [(m,n)] DECIMAL [(m,n)] NUMERIC [(m,n)]
Alan Veri Trleri Saysal (Numeric) Veri Trleri Aralk -128 ile 127 arasnda
2 byte
3 byte
-2147483648 ile 2147483647 arasnda -9223372036854775808 ile 9223372036854775807 arasnda Virglden sonra 4 ya da 8 haneli aretli kk reel say aretli normal reel say Double ile ayndr. Double ile ayndr. Decimal ile ayndr. 9
4 byte 8 byte
Tarih ve Saat (Date and Time) Veri Trleri Aralk O andaki sistem zamann tutar (tarih ve saat) DATE YYYY-MM-DD,YY-MMDD,YYMMDD formatnda 0000-0-00 ile 9999-12-31 arasnda TIME HH:MM:SS,HHMMSS,HHMM,HH DATETIME YYYY-MM-DD HH:MM:SS Alfasaysal (Karakter-String) Veri Trleri Veri Tr Aralk CHAR (m)[BNIARY] M:1 ile 255 aras BINARY kullanlrsa aramalarda byk/kk harf ayrm vardr. VARCHAR (m) [BINRY] Char ile ayndr, fakat kaplad alan asndan farkldr. TINYTEXT(m),[BINARY Char ile ayndr, fakat kaplad yer ] asndan farkldr. TINYTEXT ve Varchar ile ayndr. Kk/byk harf TINYBLOB ayrm vardr. Uzunluk belirtilmez. TEXT ve BLOB Kk/byk harf ayrm vardr. Uzunluk belirtilmez. Max. 65535 karakter Veri Tr TIMESTAMP [(m)] MEDIUMTEXT ve MEDIUMBLOB LONGTEXT ve LONGBLOB ENUM(deer1,deer2, .,deern) SET (deer1, deer2,., deern) Kk/byk harf ayrm vardr. Uzunluk belirtilmez. Max. 16777216 karakter. Kk/byk harf ayrm vardr. Uzunluk belirtilmez. Max. 4294967295 karakter Verilen deerlerden bir tanesi mutlaka seilidir (Alan kstlamasnda kullanlr). Verilen deerlerden birden ok seilebilir.
Tablo 1.1: Alan veri tr
(Girilen uznlk+1) byte (Girilen uznlk+1) byte (Girilen uznlk+1) byte (Girilen uzunluk+2) byte (Girilen uznlk + 3) byte (Girilen uznlk+4) byte En fazla 2 byte 1-8 byte arasnda
rnek: Mezun olan renciler iin mezun bilgilerinin tutulaca bir tablo oluturalm. Bu tablo iin aadaki alan adlar bulunacaktr. Tablo adn kayit olarak kabul edelim. Alan ad- aklama adi : renci ad soyadi : renci soyad ogrno : renci Nu. Kayit tablosunun oluturulmas:
mysql> create table kayit ->( ad varchar(15) not null,
10
->soyad varchar(15)not null, ->ogrno smallint(5) unsigned, ->constraint ogrno_pk primary key (ogrno) ->); Query OK, 0 rows affected (0.08 sec)
rnek: Bir alveri sitesinde mteri bilgilerini tutacak bir tablo iin aadaki alanlar bulunacaktr. Tablo ad musteri olsun. Alan ad - aklama Musteri_id : Mteri numaras adsoyad : Mteri ad ve soyad adres : Mteri adresi sehir : ehir tlfon : Telefon Musteri tablosunu oluturulmas:
mysql> create table musteri ->(musteri_id int unsigned not null auto_increment primary key, ->adsoyad varchar(50) not null, ->adres varchar(100) not null, ->sehir varchar(15) not null, ->tlfon varchar(11) not null ->); Query OK, 0 rows affected (0.08 sec)
rnek: Bir sat sitesine konulacak rnlerin tutulaca urun adl tabloyu aadaki gibi oluturalm. Alan ad Urun_kodu Urun_markasi Urun_turu Urun_fiyati Aklama : Satlacak rn kodu : Satlacak rnn markas : Satlacak rn tr : Satlacak rnn fiyat
11
Tablolar Silmek (Drop Table) Bazen bir tablonun tamamndan kurtulmak isteyebilirsiniz. Bunun iin DROP TABLE ifadesiyle yapabilirsiniz. Genel kullanm aadaki gibidir. Kullanm: DROP TABLE tablo_adi rnek: musteri tablosunu silmek iin aadaki ifade kullanlr.
mysql> drop table musteri;
12
Birincil anahtarlar ya da indexler olmadan da tablo oluturmak mmkndr. Yeni baayan MySQL kullanclarnn karlatklar sorunlardan biri ok hzl olduunu duymu olduklar bu veri tabanndan yeterli performans elde edememektir. Bu performans sorunuyla karlamalarnn nedeni, veri tabanlarnda hibir index oluturmam olmalardr. MySQL tarafndan otomatik olarak oluturulan indexler balang iin iimizi grecektir. Eer anahtar olmayan bir stunda ok fazla sorgu altrdnz fark ederseniz performans artrmak iin bu stuna bir index eklemek isteyebilirsiniz. Bunu CREATE INDEX ifadesini kullanarak yapabilirsiniz. Bu ifadenin genel formu aadadr. Kullanm: CREATE [ UNIQUE ] INDEX isim ON tablo [ USING yntem ] ( { stun | ( ifade ) } [ ile_snf ] [, ...] ) [ TABLESPACE tablo_alan ] [ WHERE dayanak ] Parametreler UNIQUE ndeks oluturulurken ve her veri ekleniinde tabloda birbirinin ayn deerler bulunmamas iin sistemin snama yapmasn salar. Girdilerin yinelenmesine sebep olacak bir veri girme veya gncelleme ileminin yaplmaya allmas bir hata retecektir. sim : Oluturulacak indeksin ismi (Burada ema nitelemeli isimler kullanlamaz. ndeks daima tabloyu ieren emada oluturulur.) Tablo : ndekslenecek tablonun ismi (ema nitelemeli olabilir.)
Yntem : ndeks iin kullanlacak yntemin ismi. Deer olarak, btree, hash, rtree ve gist verilebilir. btree ntanml yntemdir. Stun : Tablo stunun ismidir.
fade : Tablonun bir ya da daha fazla stnu ile ilintili bir ifade. fade, yukardaki sz diziminde gsterildii gibi parantez iinde yazlmaldr. Ancak, ifade bir ilev ars biimindeyse parantez iine alnmayabilir. ile_snf: Bir ile snfnn ismidir. Ayrntlar iin aaya baknz. tablo_alan: ndeksin oluturulaca tablo alandr. Belirtilmezse default_tablespace yaplandrma deikeninin deeri, bu deikene bir deer atanmamsa veri tabannn ntanml tablo alan kullanlr. Dayanak : Bir ksmi indeks iin kst ifadesi 13
rnekler: films tablosunun title stunu zerinde bir B-tree indeksi oluturmak iin:
mysql> CREATE UNIQUE INDEX title_idx ON films (title);
films tablosunun code stunu zerinde bir indeks oluturup bu indeksin indexspace tablo alannda kalmas iin:
mysql>CREATE INDEX code_idx ON films(code) TABLESPACE indexspace; mysql>CREATE INDEX namex ON "Depo.Dbf" (malz_adi)
letmede alan personeli brt maalarna gre azalan srada (yksek maatan dk maaa doru) listelemek istenirse brt alanna gre aadaki gibi index oluturmak gerekir:
mysql>CREATE INDEX per_maas ON personel (brut DESC);
Bir okuldaki rencileri ncelikle adlarna gre, ayn adda olanlar soyadlarna gre, hem ad hem soyad ayn olanlarn ortalamalarna gre srlanm olarak listelenmesi istenirse aadaki komutlar kullanlmaldr:
mysql>CREATE INDEX ogr_ad_soyad_ort ON ogrenci (ad,soyad,ort);
Mevcut Indexin Silinmesi (Index Drop) Bir tablo zerinde tanmlanm herhangi bir index, o tablonun veri tabanndan silinmesi ile otomatik olarak silinecektir. Tablo silinmeksizin o tablo zerinde oluturulan indek iinse DROP INDEX komutu kullanlr.
mysql>INDEX DROP ogr_ad_soyad_ort;
Bylece ogrenci tablosu zerinde oluturulmu ogr_ad_soyad_ort adl indeks, ogrenci tablosu veri tabannda kald hlde silinecektir.
Tablo yerine, iine veri girmek istediimiz gerek tablonun adn koyduumuza ve deerlerin yerine de gerek deerler girdiimize dikkat ediniz. Bu rneklerdeki deerlerin tm tek trnak iine alnmtr. MySQLdeki karakter katarlarnn her zaman ift veya tek trnak iinde olmas gerekir. Saylara ve tarihlere trnak gerekmez. Insert ile birlikte sadece birka varyasyon daha kullanlabilir. Insert szcnn sonuna LOW_PRIOROTY ya da DELAYED eklenebilir. LOW_PRIORITY anahtar szc, sistemin bekleyip verileri daha sonra tablodan okunmadklar srada girilebilecei anlamna gelir. DELAYED anahtar szc, girilen verilerinizin tampon bellee alnaca anlamna gelir. Sunucu megulse insert ileminin tamamlanmasn beklemek zorunda kalmadan sorgu altrmaya devam edebilirsiniz.
15
imdi ncelikle istee bal cmlecii olmayan belirli bir tablodan seim yapan sorgulara bakalm. Tipik olarak bu geler, tablonun stunlardr (Her trl MySQL ifadesinin sonucu da olabilir.). Bu sorgu, musteri tablosundaki ad ve sehir stunlar ieriklerini listeler. mysql>select ad, sehir from musteri; Kodlar musteri tablosundaki ad ve sehir stunlarndaki bilgileri aadaki gibi listeleyecektir:
+--------------+---------------+ |ad |sehir | +--------------+---------------+ |Ahmet |Mersin | |Aye |Hatay | |Ahsen |anlurfa | +--------------+---------------+
Yukarda da grld gibi musteri tablosundan setiimiz (ad ve sehir) geleri ieren bir tablomuz oldu. Bu veri, musteri tablosundaki tm satrlar iin gsterilmektedir. Bir tablodan select anahtar szcnn ardndan listeleyerek istediiniz sayda stun belirtebilirsiniz. Baka baz geleri belirtmek de mmkndr. Bunlardan bir tanesi de joker karakter olan * iaretidir. Bu iaret belirtilmi tablodan ve tablolardaki tm stunlarla eleir. rnein, siparis adl bir tablodaki tm stunlar listelemek iin aadaki kodlar yazlr. mysql>select * from siparis; kodlar siparis tablosundaki tm stunlarndaki bilgileri aadaki gibi listeleyecektir:
+--------------+---------------+----------------+------+ |musteri_no |siparis_tar |urun | fiyat | +-------------+---------------+----------------+-------+ |001 |23.03.2007 |HDD |120YTL | |0034 |12.03.2007 |256MB RAM |85YTL| |003 |28.03.2007 |Power Supply |28YTL| +-------------+---------------+----------------+--------+
Bir tablonun alt kmelerine erimek iin (artl sorgulama yapmak iin) baz seim ltleri belirtmemiz gerekir. Bunu WHERE parametresi ile yapabiliriz. Kullanm: SELECT <alan_adi [alan_adi1,]> FROM <tablo_adi> WHERE <koullar>
mysql>select from musteri where adi=aye;
16
musteri tablosundan tm stunlar, ama sadece adi aye olan satrlar seecektir. Bunun kts:
+-------------+---------------+--------------- +------+ |ad |adres |ehir |telefon +-------------+---------------+--------------- +------+ |aye |orhaniye mh. |MULA |2143526 | |aye |emek cd. |ANKARA |5214556 | |aye |gneyli ky |MERSN |4522356 +-------------+---------------+--------------+----------+ |
WHERE belirli satrlar seerken kullanlan ltleri belirtir. Bu rnekte adi aye olan satrlar setik. Tek eittir iareti, eitlii kontrol etmek iin kullanld. Bunun PHPde farkl olduu ve bunlar birlikte kullanrken kartrlabilecekleri unutulmamaldr. MySQL eitlii, ek olarak operatrleri bu dzenli deyimlerin tmn destekler. WHERE cmlecikleri iinde kullanlan operatr ve deyimler aadaki tabloda verilmitir. WHERE Cmlecikleri iin Kullanl Karlatrma Operatrleri
OPERATRLER AD(varsa) RNEK AIKLAMA
Eittir Byktr. Kktr. Byktr veya eittir. Kktr veya eittir. Eit deildir.
<=
Nt<=44
IN
Sehir in (mersin,mula) 17
ki deerin eit olup olmadn kontrol eder. Bir deerin dierinden byk olup olmadn kontrol eder. Bir deerin dierinden kk olup olmadn kontrol eder. Bir deerin dierinden byk ya da eit olup olmadn kontrol eder. Bir deerin dierinden kk ya da eit olup olmadn kontrol eder. ki deer eit deil mi diye bakar. Alann iinde deer bulunup bulunmadn kontrol eder. Alann iinde deer yok mu diye bakar. Bir deerin minimum deerden byk veya eit, maksimum deerden kk veya eit olup olmadn kontrol eder. Bir deerin belirli bir kmede olup olmadn kontrol eder.
NOT LIKE
rnek eletirme
Bir deer, bir kmede deil mi diye bakar. Basit SQL eletirme ilemini kullanarak bir deerin bir rnekle eleip elenemediini kontrol eder. Bir deer bir rnekle elemiyor mu diye bakar.
Tablodaki son iki satr like ile ilgilidir. Bunlar rnek eletirme formlardr. Like basit sql rnek (pattern) eletirilmesi kullanlr. rnekler normal metin art herhangi bir saydaki karakter ile eleebilecek joker karakteri gsteren bir % karakterinden ve bir tek karakteri ile eleen _ (alt izi) karakterinden oluabilir. Birden fazla lt kontrol etmek iin basit operatrleri ve rnek eletirme sz dizimini kullanabilir ve bunlar and ve or ile daha karmak bir ltler hlinde birletirebilirsiniz. rnein:
mysql> Select * form musteri where adi=aye or adi=fatma;
Bu rnekte musteri tablosunda adi aye veya Fatma olanlar listeleyecektir. rnek: Ad, Halil veya Nural veya Ahmet olan retmenlerin adnn ve adreslerinin grntlenmesi iin aadaki ifade yazlr:
mysql>select adi, adres from ogretmen where in (Halil,Nural,Ahmet);
rnek: Soyad ATAK ve cinsiyeti E olan rencilerin ad ve numaralarnn grntlenmesi iin aadaki ifade kullanlr:
mysql>select cinseyti=E; ad, ogrno from ogrenci where soyad=ATAK and
rnek: Snavdan 45ten kk olan rencilerin ad ve numarasnn grntlenmesi iin aadaki ifade kullanlr:
mysql>select adi, ogrno from ogrenci where not1<45;
rnek: Snav notundan 70 ile 100 aras not alan rencilerin ad ve numarasnn grntlenmesi iin aadaki ifade kullanlr:
mysql>select adi, ogrno from ogrenci where not2 between 70 and 100;
18
rnek: Doum tarihi 30/03/1995 olan rencilerin ad ve numarasnn grntlenmesi iin aadaki ifade kullanlr:
mysql>select adi, ogrno from ogrenci where dogum_tarihi=1995/03/30;
rnek: Soyad ER ile balayan rencilerin ad ve numarasnn grntlenmesi iin aadaki ifade kullanlr:
mysql>select adi, ogrno from ogrenci where soyadi like ER%;
rnek: Soyad AN ile biten rencilerin ad ve numarasnn grntlenmesi iin aadaki ifade kullanlr:
mysql>select adi, ogrno from ogrenci where soyadi like %AN;
rnek: Adnn iinde M geen rencilerin ad ve numarasnn grntlenmesi iin aadaki ifade kullanlr:
mysql>select adi, ogrno from ogrenci where adi like %M%;
rnek: Adnn iinde M gemeyen rencilerin ad ve numarasnn grntlenmesi iin aadaki ifade kullanlr:
mysql>select adi, ogrno from ogrenci where adi not like %M%;
rnek: Adnn NULL (bo) olmayan rencilerin ad ve numarasnn grntlenmesi iin aadaki ifade kullanlr:
mysql>select adi, ogrno from ogrenci where adi is not null;
Bir tablo sorguland zaman sonular birincil anahtara (primary key) gre sral gelmektedir. Sonularn sralamasn deitirmek mmkndr. ORDER BY btn MySQL ifadelerinde kullanlr.
Kullanm:
Select <alan adi> from <tablo adi> [where <koullar>] [order by alan1[, alan2, ]{asc|desc}];
rnek: renci tablosundaki kaytlar rencilerin adna gre sralayarak adnn, soyadnn ve numarasnn grntlenmesini salayan aadaki gibi yazlr (Bu sralamada renci bilgileri, adna gre adan zye doru sralanr.).
mysql>select adi,soyadi, ogrno from ogrenci where order by adi;
19
rnek: renci tablosundaki kaytlar rencilerin adna gre tersten (bykten ke) sralayarak adnn, soyadnn ve numarasnn grntlenmesini salayan aadaki gibi yazlr (Bu sralamada renci bilgileri, adna gre zden aya doru sralanr.).
mysql>select adi, soyadi, ogrno from ogrenci where order by adi desc;
ki veya Daha Fazla Tablonun Beraber Sorgulanmas (JOIN) Birden fazla tablodan ayn anda bilgi getirilmesi (alnmas) gerektiinde ortak alanlar zerinden birletirme yaplr. Birletirme ilemi koullar blmnde yaplr, ortak olan alanlar eletirilir. MySQL ifadelerinde alan isimlerinin nne tablo ad yazlr. Tablo ad ile alan ad arasna . (nokta) konulur. Kullanm: SELECT alan1[,alan2,] FROM tablo1,tablo2[tablo3,] tablo1.alan1=tablo2.alan1 [AND tablo2.alan2=tablo2.alan2,]; WHERE
rnek: musteri ve siparis adl iki tablo bulunmaktadr. Mterilerin adlarnn ve sipari verdikleri rnlerin kodlarnn, fiyatnn ve tutarnn grntlenmesi iin aadaki ifade kullanlr:
mysql>SELECT musteri.adi,siparis.urunkodu,siparis.fiyat,siparis.tutar FROM musteri,siparis, WHERE musteri.musteri_no=siparismusteri_no;
rnek: ogrenci ve notlar adl iki tablodan Ahmet adl rencinin iki yazl bir szl notlarnn grntlenmesi iin aadaki ifade kullanlr:
mysql>SELECT ogrenci.adi, notlar.y1, notlar.y2, notlar.s1 FROM ogrenci,notlar, WHERE ogrenci_no=notlar_no AND ogrenci.adi=Ahmet;
Tablo Adlarna Takma Ad (Alias) Verme Tablolara baka isimlerle seslenmek ounlukla kullanl, bazen de gereklidir. Tablolarn dier adlarna lakap (alias) denir. Bunlar bir sorgunun dnda oluturabilir ve sonra da kullanmaya devam edebilirsiniz. ounlukla ksa yazlrlar ve tercihen tablo adlarnn ilk harfleri kullanlr. Kullanacamz tablolar tanmlarken ilgili tablonun lakabn tanmlamak iin AS cmlecii ekleyebiliriz. Takma ad (lakap) iin FROMdan sonra tablo ad, bir boluk ve takma ad azlr. Takma ad verildikten sonra bilgi alanlar nne bu takma ad yazlr. Takma ad ile alan ad arasna yine . karakteri konulur. rnek: Mterilerin adnn, vermi olduu siparilerin tarihlerinin ve tutarnn grntlenmesi iin aadaki ifade yazlr:
mysql>SELECT m.adi,s.urunkodu,s.fiyat,s.tutar FROM musteri m, siparis s, WHERE m.musteri_no=s.musteri_no;
20
Kaytlar Gruplama (GROUP BY) ounlukla belirli bir kmenin iine ka satrn dtn veya baz stunlarn ortalama deerlerini (rnein, renci not ortalamas gibi) bilmek istersiniz. MySQLde bu tip bir sorguyu yantlamada kullanlan bir dizi gruplama fonksiyonu bulunmaktadr. Bu gruplama fonksiyonlar bir tabloya veya bir tablo iindeki veri gruplarna uygulanabilir. Bu gruplar zerinde eitli ilemler yaplabilir. Listelenecek bilgi alanlar mutlaka GROUP BY ifadesinden sonra belirtilmelidir. SUM, COUNT, AVG, MIN, MAX gibi fonksiyonlarla kullanlan alanlar GROUP BYdan sonra belirtilmez. Kullanm: SELECT alan1[,alan2,] FROM tablo1 GROUP BY alan1[,alan2,]; rnek: Her mterinin mteri numaras ve yapm olduu siparilerin toplam tutarnn grntlenmesi iin aadaki ifade yazlr:
mysql>SELECT musteri_no; musteri_no, SUM (tutar) FROM siparis GROUP BY
rnek: Bir okuldaki kz ve erkek renci saysnn grntlenmesi iin aadaki ifade yazlr:
mysql>SELECT cinsiyeti, COUNT (*) FROM ongrenci GROUP BY cinsiyeti;
rnek: Bir okulun her snfnda kaar renci olduunun grntlenmesi iin aadaki ifade yazlr:
mysql>SELECT sinif, COUNT (*) FROM sinif GROUP BY sinif;
Gruplar zerinde Koullu Sorgulama (HAVING) Gruplanm veriler ierisinde belli koula uyanlar sorgulanacaksa MySQL cmlesinde HAVING ifadesi ile koullar yazlr. Bu tr SQL cmlelerinde WHERE ile yazlan koullar varsa ncelikle bunlar gz nne alnr, sonra gruplama ilemi yaplr. Gruplama sonunda da HAVING ile verilen koullara uygun kaytlar listelenir. HAVING ile verilecek koullar mutlaka GROUP BY yanna yazlan alanlar olmaldr. rnek: 5 ten az siparite bulunan mterilerin numarasnn grntlenmesi iin aadaki ifade yazlr:
mysql>SELECT musteri_no, COUNT(*)FROM siparis GROUP BY musteri_no HAVING count(*)<5;
21
rnek: Aadaki SQL komutu kullanicilar tablosundaki bolum bilgisi bilgisayar olan tm kullanclar ile ilgili satrlar silecektir.
mysql> delete * from kullanicilar where bolum=bilgisayar;
rnek: Aadaki SQL komutu ogrenci tablosundaki ad bilgisi mesut olan tm renciler ile ilgili satrlar silecektir.
mysql> delete * from ogrenci where ad=mesut;
rnek: Bir kitap sat yapan maaza, kitap fiyatlarn % 15 artrmak istiyor. Bunun iin kitap veri tabanndaki fiyat alan zerinde gncelleme yapmak gerekecektir.
mysql>update kitap set fiyat=fiyat*1.15;
rnek: renci numaras 127 olan rencinin doum tarihini 03/12/1997 olarak deitirecek MySQL kodu aadaki gibi olacaktr:
mysql>update ogrenci set dogum_tarihi=1995/03/12 mysql>where ogrno=127;
23
| | | | | |
RENAME [TO] new_tbl_name ORDER BY col_name [, col_name] ... CONVERT TO CHARACTER SET charset_name [COLLATE collation_name] [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name] DISCARD TABLESPACE IMPORT TABLESPACE
ALTER TABLE fadesiyle Yaplabilen Deiiklikler Sz Dizimi Aklama ADD [COLUMN] column_definition Belirtilen konuma yeni bir stun ekler. column_definitionn bir ad [FIRST | AFTER col_name ] ve tipe ihtiya duyar. ADD [COLUMN] Tablonun sonuna bir veya daha fazla (column_definition,...) stun ekler. ADD {INDEX|KEY} [index_name] Tabloda belirtilen stun veya stunlar [index_type] zerinde bir index oluturur. (index_col_name,...) ADD [CONSTRAINT [symbol]]PRIMARY KEY Belirtilen stun veya stunlar tablonun [index_type] birincil anahtar yapar. (index_col_name,...) ADD [CONSTRAINT [symbol]]UNIQUE [INDEX|KEY] Belirtilen stun ve stunlar zerinde [index_name] [index_type] tabloya benzersiz bir index ekler. (index_col_name,...) ADD [CONSTRAINT [symbol]]FOREIGN KEY Bir InnDB tablosuna yabanc bir anahtar [index_name] ekler. (index_col_name,...)[reference _definition] ALTER [COLUMN] col_name {SET Belirli bir stunun varsaylan deerini DEFAULT literal | DROP ekler veya kaldrr. DEFAULT} CHANGE [COLUMN] old_col_name Column adl stunu, listelenmi tanma column_definition [FIRST|AFTER sahip olacak ekilde listeler. col_name] MODIFY [COLUMN] CHANGE benzer. Adlar deil, stun column_definition [FIRST | tiplerini deitirmek iin kullanlr. AFTER col_name] DROP [COLUMN] col_name Belirtilen stunu siler. DROP PRIMARY KEY Birincil indexi siler. 24
DROP {INDEX|KEY} index_name DROP FOREIGN KEY fk_symbol DISABLE KEYS ENABLE KEYS RENAME [TO] new_tbl_name ORDER BY col_name [, col_name] CONVERT TO CHARACTER SET charset_name [COLLATE collation_name] [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name] DISCARD TABLESPACE IMPORT TABLESPACE
Belirtilen indexi siler. Yabanc anahtar siler. ndex gncelleme zelliinin etkinliini kaldrr. ndex gncelleme zelliini etkinletirir. Bir tabloyu yeniden adlandrr. Tabloyu satrlar belirli bir ekilde sralanm ekilde yeniden oluturur. Metin tabanl stunlarn hepsini belirtilen kmesine dntrr. Varsaylan karakter kmesini ayarlar. Bir InnDB dosyasnn temelini oluturan tablespace dosyasn siler. Bir InnDB dosyasnn temelini oluturan tablespace dosyasn yeniden oluturur.
rnek: Mteri tablosunda adlarn 25 karaktere kadar uzun olmasna izin verilmi olsun. Verileri almaya baladktan sonra baz isimlerin ok uzun olduu grlsn. Bu durum, stunu 50 karakter uzunluunda olacak ekilde deitirilerek dzeltilebilir.
mysql>alter table musteri modify ad char(50) not null;
ok sk ortaya kan bir durum, bir stun ekleme ihtiyacdr. rnek: Mteri tablosunda mterilerin e-mail adreslerini de almak istediimizi dnelim. tablomuzda byle bir stun nceden yoktu. Bu durumda yeni bir stun eklenecektir.
mysql>alter table musteri add email char(50) not null;
Eklenen bir stundan kurtulma istei de yine ok sk karlalan bir durumdur. Yukarda eklediimiz stunu aadaki gibi silebiliriz:
mysql>alter table musteri drop email;
rnek: renci kayt bilgileri iin oluturulmu olan ogrenci tablosunun adn, ogr olarak deitirmek iin u kodlar yazlr:
mysql>alter table ogrenci rename ogr;
25
rnek: Bir kirtasiye veri tabanndaki kitap adl alan adn book olarak deitirelim:
mysql>alter table kirtasiye change kitap book;
Yukardaki sorgu halkla ilikiler blmnde alan personelin ya ortalamasn verecetir. AVG() fonksiyonu, istenen alandaki verilerin aritmetik ortasn grntler.
Yukardaki sorgu, bilgi ilem blmnde alan tm personelin maalarnn toplamn grntler.
Yukardaki sorgu, bilgi ilem blmnda alan ve en dk maa alan personeli grntler.
Yukardaki sorgu, bilgi ilem blmnda alan ve en yksek maa alan personelin maan grntler. 26
Eer irketin basn yayn blmnde alan evli ve maa 500 YTLden az olan kiilerin saysn renmek istiyorsak aadaki sorgu iimizi grecektir.
mysql>SELECT COUNT(*) FROM employee medeni_hal='evli' AND bolum='Basn Yayn' WHERE maas<500 AND
ROUND () Verilen alann virglden sonraki deerini yuvarlar. Tam say ksmn verir.
mysql> select round(15.56); >16
Yazm format, bir iaretler grubudur. Bu negatif INTERVAL'ler iin '-' ile balayabilir. tip; ise bir anahtar kelimedir. Bu yazm formatnn nasl yorumlanacan gsterir. EXTRACT(tip FROM tarih) fonksiyonuyla INTERVAL tipini renebilirsiniz. Yazm formatnda gn, ay, yl, saat, dakika, saniye gibi deerleri ayrmada kullanlan iaretler yerine istediiniz noktalama iaretlerini kullanabilirsiniz. Aada verilen parametreler blmndeki yazm ekli nerilendir. 'Saatler: Dakikalar: Saniyeler' Yerine 'Saatler. Dakikalar. Saniyeler' veya 'Saatler, Dakikalar, Saniyeler' gibi kullanabilirsiniz. Fonksiyona girilen tarih deeri DATE ise ve hesaplamalarda kullandnz tip YEAR, MONTH ve DAY ise (yani TIME blmleri deilse); hesaplamalar sonucunda dndrlen deer DATE formatndadr. Bunun dndakilerde dndrlen deer TIME formatndadr. 27
Kullanm: ADDDATE(tarih,INTERVAL expr tip) ADDDATE(expr,gn) ADDDATE(tarih, INTERVAL yazm format tip) Bu fonksiyonla ayn alan dier fonksiyonlar DATE_SUB(tarih, INTERVAL yazm format tip) SUBDATE(tarih, INTERVAL yazm format tip) DATE_ADD (tarih, INTERVAL yazm format tip)
rnek:
mysql> SELECT DATE_ADD('1998-01-02', INTERVAL 31 DAY); -> '1998-02-02' mysql> SELECT ADDDATE('1998-01-02', INTERVAL 31 DAY); -> '1998-02-02'
Parametreler: Tip Ad MICROSECOND SECOND MINUTE HOUR DAY WEEK MONTH QUARTER YEAR YAZIM FORMATI Mikrosaniyeler Saniyeler Dakikalar Saatler Gnler Haftalar Aylar eyrekler Yllar
SECOND_MICROSECOND Saniyeler.Mikrosaniyeler MINUTE_MICROSECOND Dakikalar.Mikrosaniyeler MINUTE_SECOND HOUR_MICROSECOND HOUR_SECOND HOUR_MINUTE DAY_MICROSECOND DAY_SECOND DAY_MINUTE DAY_HOUR YEAR_MONTH Dakikalar:Saniyeler Saatler.Mikrosaniyeler Saatler:Dakikalar:Saniyeler Saatler:Dakikalar Gnler.Mikrosaniyeler Gnler Saatler:Dakikalar:Saniyeler Gnler Saatler:Dakikalar Gnler Saatler Yllar-Aylar
28
rnek:
<?php $tarih = '2005-01-31'; $sql = mysql_query("SELECT ADDDATE('$tarih', INTERVAL 1 DAY) AS tari h"); $sonuc = mysql_fetch_object($sql); echo $sonuc->tarih; //Sonu: 2005-02-01 ?>
ADDTIME ADDTIME(expr,expr2) ADDTIME() fonksiyonu expr2 deerini expr deerine ekler ve sonucu dndrr. Kullanm: expr : TIME (zaman) ya da DATETIME (tarih, zaman) olabilir. expr2 : ise sadece TIME (zaman) dr. ADDTIME(expr,expr2)
rnek:
mysql> SELECT ADDTIME('1997-12-31 23:59:59.999999', '1 1:1:1.000002'); -> '1998-01-02 01:01:01.000001' mysql> SELECT ADDTIME('01:00:00.999999', '02:00:00.999998'); -> '03:00:01.999997'
CURRENT_DATE Bugnn tarihini 'YYYY-MM-DD' veya 'YYYYMMDD' formatnda verir. CURRENT_DATE ve CURRENT_DATE(), CURDATE() fonksiyonunun e anlamllardr.
Kullanm:
mysql> SELECT CURRENT_DATE(); -> '2005-10-03' mysql> SELECT CURRENT_DATE() + 0; -> 20051003
29
CURRENT_TIME CURRENT_TIME ve CURRENT_TIME() fonksiyonlar, CURTIME fonksiyonunun e anlamlsdr. CURRENT_TIMESTAMP CURRENT_TIMESTAMP ve CURRENT_TIMESTAMP(), NOW() fonksiyonunun e anlamllardr. Bunlar imdiki tarihi ve zaman verirler. Kullanm:
mysql>select CURRENT_TIMESTAMP(); ->2005-10-03 14:50:59 mysql>select CURRENT_TIMESTAMP; ->2005-10-03 14:50:59
CURTIME Geerli saati 'HH: MM: SS' veya 'HHMMSS formatnda dndrr. Kullanm:
mysql> SELECT CURDATE(); -> '1997-12-15' mysql> SELECT CURDATE() + 0; -> 19971215
DATE DATE (tarih) veya DATETIME (tarih, zaman) ifadesinden tarihi karr. Bu fonksiyon MySQL 4.1.1 de kullanlr. Kullanm:
mysql> SELECT DATE('2003-12-31 01:02:03'); -> '2003-12-31'
DATE_ADD Bu fonksiyon tarih hesaplama ilemleri iin kullanlr. Bu fonksiyonla ayn alan DATE_SUB(), ADDDATE() ,SUBDATE() fonksiyonlar vardr. ADDDATE() ve SUBDATE(), DATE_ADD() ve DATE_SUB() fonksiyonlarnn e anlamllardr. Yazm format INTERVAL deerini belirler. Bu deer, balang deerine eklenir veya karlr. 30
Yazm formatnda gn, ay, yl, saat, dakika, saniye gibi deerleri ayrmada kullanlan iaretler yerine istediiniz noktalama iaretlerini kullanabilirsiniz. Aada verilen parametreler blmndeki yazm ekli nerilendir. 'Saatler: Dakikalar: Saniyeler' yerine 'Saatler. Dakikalar. Saniyeler' veya Saatler, Dakikalar, Saniyeler' gibi kullanabilirsiniz. Fonksiyona girilen tarih deeri DATE ise ve hesaplamalarda kullandnz tip YEAR, MONTH ve DAY ise hesaplamalar sonucunda dndrlen deer DATE formatndadr. Bunun dndakilerde dndrlen deer TIME formatndadr. DATE_ADD(date,INTERVAL expr type) DATE_ADD (tarih, INTERVAL yazm format tip) Bu fonksiyonla ayn alan dier fonksiyonlar DATE_SUB(tarih, INTERVAL yazm format tip) ADDDATE(tarih, INTERVAL yazm format tip) SUBDATE(tarih, INTERVAL yazm format tip) rnek: MySQLde tarih hesaplama ilemleri
<?php mysql> SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND; -> 1998-01-01 00:00:00 >Verilen DATETIME Deerine 1 Saniye Ekleniyor... mysql> SELECT INTERVAL 1 DAY + "1997-12-31"; -> 1998-01-01 -> Verilen DATE Deerine 1 Gn Ekleniyor mysql> SELECT "1998-01-01" - INTERVAL 1 SECOND; -> 1997-12-31 23:59:59 > Verilen DATE veya DATETIME Deerine 1 Saniye Ekleniyor ve Sonucu DA TETIME Formatnda Veriyor. mysql> SELECT DATE_ADD("1997-12-31 23:59:59",INTERVAL 1 SECOND); -> 1998-01-01 00:00:00 > Verilen DATETIME Deerine 1 Saniye Ekleniyor mysql> SELECT DATE_ADD("1997-12-31 23:59:59", INTERVAL 1 DAY); -> 1998-01-01 23:59:59 ->Verilen DATETIME Deerine 1 Gn Ekleniyor mysql> SELECT DATE_ADD("1997-12-31 23:59:59", INTERVAL "1:1" MINUTE_SECOND); -> 1998-01-01 00:01:00 > Verilen DATETIME Deerine 1 Dakika 1 Saniye Ekleniyor mysql> SELECT DATE_SUB("1998-01-01 00:00:00", INTERVAL "1 1:1:1" DAY_SECOND); -> 1997-12-30 22:58:59 > Verilen DATETIME Deerinden 1 Gn 1 Saat:1Dakika:1 Saniye karlyor mysql> SELECT DATE_ADD("1998-01-01 00:00:00", INTERVAL "-1 10" DAY_HOUR); -> 1997-12-30 14:00:00 > Verilen DATETIME Deerinden 1 Gn, 1 Saat karlyor mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY); -> 1997-12-02 -> Verilen DATE Deerinden 31 Gn karlyor
31
?>
DATE_FORMAT MySQL'de tarihleri dntrmek iin kullanlr. DATE_FORMAT() fonksiyonu PHP fonksiyonuna benzer ekilde alr, ancak farkl biimlendirme kodlar kullanr. MySQL'deki tarih ve saatler ISO 8601 biimi kullanlarak ilenir. ISO 8601'de tarihlerin, yl nce olacak ekilde girilmesi gerekir. YYYY-AA-GG SS:DD:SS rnek 2005'in Haziran ay 32
iin 2005-06-01 olarak girilmelidir. Bu ISO 8601 tarih formatn, GG.AA.YYYY ekline getirmek iin bu fonksiyondan yararlanabilirsiniz
Parametreler: %M : Ay, tm metin (January...December) %W : Gn ad, tm metin. (Sunday...Saturday) %D : Ayn gn, saysal, metin sonekiyle birlikte (rnein, 1st) %Y : Yl, saysal, 4-basamakl %y : Yl, saysal, 2-basamakl %a : Gn ad, 3-karakter (Sun...Sat) %d : Ayn gn, saysal, bata sfr var.. (00...31) %e : Ayn gn, saysal, bata sfr yok...(0...31) %m : Ay, saysal, bata sfr var.. (00...12) %c : Ay, saysal, bata sfr yok... (0...12) %b : Ay, metin, 3-karakter(Jan...Dec) %j : Yln gn, saysal..&nbsp; %H : Saat, 24-saat, bata sfr var&nbsp; %k : Saat, 24-saat, bata sfr yok&nbsp; %h ya da %I : Saat, 12-saat, bata sfr var&nbsp; %l : Saat, 12-saat, bata sfr yok..&nbsp; %i : Dakika, saysal, bata sfr var.&nbsp; %r : Zaman, 12-saat (hh:mm:ss [AM|PM])&nbsp; %T : Zaman, 24-saat (hh:mm:ss)&nbsp; %S ya da %s : Saniye, saysal, bata sfr var... (00...59) %p : AM veya PM&nbsp; %w : Haftann gn, saysal, 0'dan (Sunday) 6'ya (Saturday) kadar... rnek: MySQL Tarih Biimini ekillendirme
<?php /* Dosyalar veri tabanndaki uyeler Tablosunu Kullandnz Varsayarsak +--------+---------------------+ | uyeadi | kayittarihi | +--------+---------------------+ | ali | 2005-05-14 15:20:00 | +--------+---------------------+ | veli | 2005-06-14 15:20:00 | +--------+---------------------+ */ $sorgu = mysql_query("SELECT DATE_FORMAT(kayittarihi, '%d.%m.%Y %H:%i:%s') AS kayittarihi FROM uyeler",$baglanti); //MySQL Tarih Alan Bi imlendiriliyor while($veri = mysql_fetch_array($sorgu) { echo $veri["kayittarihi"];
33
DATE_SUB Bu fonksiyon, tarih hesaplama ilemleri iin kullanlr. Bu fonksiyonla ayn alan DATE_ADD() ADDDATE() SUBDATE() fonksiyonlar vardr. ADDDATE() ve SUBDATE(), DATE_ADD() ve DATE_SUB() fonksiyonlarnn e anlamllardr. Burada kullanlan tarih, DATETIME (tarih,zaman) ya da DATE (tarih) deeridir. Bunlar balang deerini belirler. Yazm format INTERVAL deerini belirler. Bu deer balang deerine eklenir veya karlr. Kullanm: DATE_SUB(date,INTERVAL expr type) DATE_SUB(tarih, INTERVAL yazm format tip) Bu fonksiyonla ayn alan dier fonksiyonlar DATE_ADD (tarih, INTERVAL yazm format tip) ADDDATE(tarih, INTERVAL yazm format tip) SUBDATE(tarih, INTERVAL yazm format tip) 34
DAY Bu fonksiyon DAYOFMONTH() fonksiyonunun e anlamlsdr. DAYNAME Tarih iin hafta gnlerinin ismini verir ( ngilizce olarak ). DAYNAME(tarih)
mysql> select DAYNAME("2005-08-22"); -> 'Monday'
DAYOFMONTH Geerli tarih iin ayn gnn verir (1-31 aralnda). DAYOFMONTH(tarih)
mysql> select DAYOFMONTH('1998-02-03'); -> 3
DAYOFWEEK DAYOFWEEK(tarih) Haftann gnn dndrr. Geerli tarih iin: (1=Pazar, 2= Pazartesi, ......7= Cumartesi) Bu deerler, ODBC standardyla ayndr.
mysql> select DAYOFWEEK('1998-02-03'); -> 3
Kullanm:
mysql> select DAYOFWEEK('1998-02-03'); -> 3
EXTRACT Bu fonksiyon, ayn DATE_ADD() ve DATE_SUB() fonksiyonlarndaki INTERVAL tiplerini kullanr. Yalnz tarih hesaplamalar yerine tarihten paylar karr.
35
<?php $sql1 = mysql_query("SELECT EXTRACT(YEAR FROM '2005-1003') AS tarih"); $sonuc = mysql_fetch_object($sql1); echo $sonuc->tarih; //2005 $sql2 = mysql_query("SELECT EXTRACT(YEAR_MONTH FROM '2005-1003 15:25:00') AS tarih"); $sonuc = mysql_fetch_object($sql2); echo $sonuc->tarih; //200510 $sql3 = mysql_query("SELECT EXTRACT(DAY_MINUTE FROM '2005-1003 15:25:00') AS tarih"); $sonuc = mysql_fetch_object($sql3); echo $sonuc->tarih; //31525 ?>
MONTH Datetime formatndaki tarihin ayn 1-12 eklinde dndrr. Kullanm: MONTH(tarih) mysql> SELECT MONTH('19980203'); -> 2 rnek: MONTH () Kullanm
<?php /* MySQL'deki tarih alan datetime olarak ayarlandn varsayarsak. +---------------------+ | tarihalani | +---------------------+ | 2005-06-14 15:20:00 | +---------------------+ */
36
$sorgu = mysql_query("SELECT MONTH(tarihalani) AS tarih_alani FROM t abloadi"); $sonuc = mysql_fetch_array($sorgu); echo $sonuc["tarih_alani"]; //kts 6 Olacaktr ?>
NOW imdiki zaman 'YYYY-MM-DD HH:MM:SS' veya YYYYMMDDHHMMSS formatnda verir. NOW() rnek: NOW() Kullanm rnekleri
mysql> SELECT NOW(); -> '1997-12-15 23:50:26' mysql> SELECT NOW() + 0; -> 19971215235026
QUARTER Geerli tarih iin yln kanc eyrei olduunu (1-4) dndrr. QUARTER(tarih)
mysql> select QUARTER('98-04-01'); -> 2
37
WEEK Fonksiyon tek argmanla geerli tarihin kanc hafta olduunu verir (0-53 aralnda). (Baz yerlerde 53 haftann balangc da olabilir.) Baz yerlerde Pazar, haftann ilk gndr. kinci argmanla WEEK() fonksiyonunda haftann pazar veya pazartesi ile balayacan belirleyebilirsiniz. kinci argman sfr (0) olursa hafta pazar gnleri balar, 1 olursa pazartesi gnleri balar. WEEK(tarih), WEEK(tarih,ilkgn)
mysql> select -> 7 mysql> select -> 7 mysql> select -> 8 mysql> select -> 53 WEEK('1998-02-20'); WEEK('1998-02-20',0); WEEK('1998-02-20',1); WEEK('1998-12-31',1);
WEEKDAY Geerli tarih iin haftann gnn verir (0 = Pazartesi, 1= Sal, .....6= Pazar). WEEKDAY(tarih)
mysql> select WEEKDAY('19971004 22:23:00'); -> 5 mysql> select WEEKDAY('199711-05'); -> 2
YEAR Geerli tarihin yln dndrr (1000-9999). YEAR(tarih) mysql> select YEAR('98-02-03'); -> 1998 YEARWEEK Geerli tarihin yl ve hatfasn dndrr. kinci argman, WEEK() fonksiyonundaki ikinci argman ile ayn alr. (ikinci argman sfr (0) olursa hafta pazar gnleri balar, 1 olursa pazartesi gnleri balar) Dikkat edilmesi gereken, senenin ilk ve son haftasndaki yl, argmanda verilen tarihteki seneden farkl olabilir. YEARWEEK(tarih), YEARWEEK(tarih,ilk)
mysql> select YEARWEEK('1987-01-01'); -> 198653
38
=
SELECT 1 = 0; SELECT 0 = 0; SELECT 0.0 = 0; SELECT 0.01 = 0; SELECT .01 = 0.1 ;
Eit Deildir
<>, !=
mysql> SELECT .01 <> 0.01; -> 1 mysql> SELECT .01 <> 0.01; -> 0 mysql> SELECT zapp <> zappp; -> 1
<=
Kktr
<
>=
Byktr
>
GREATEST(deer1,deer2,.......) ki veya daha fazla deer verildiinde en byk olan deeri seer. LEAST() komutuyla ayn ekilde kullanlr.
mysql>SELECT GREATEST (2 , 0); ->2 mysql>SELECT GREATEST (34.0 , 3.0 , 5.0 , 767.0); ->767.0
39
MySQL 5.0.13 ten nce, GREATEST() fonksiyonu sadece dier deerlerin hepsi geersiz duruma getiinde geersiz oluyordu. 5.0.13te deerlerden herhangi biri geersiz olduunda hemen geersiz oluyor. IN expr IN (deer,...) Verilen expr deerlerin herhangi birine eitse 1 deilse 0 verir.
mysql> SELECT 2 IN (0, 3, 5, 6); -> 0 mysql> SELECT wefwf IN (weee, wefwf, whfk); -> 1
INTERVAL (N,N1,N2,N3...) Eer N<N1 ise 0; eer N<N2 ise +1; eer N NULL ise -1 deerini alr ve alnan deerler toplanr. Fakat bu fonksiyonun doru olarak alabilmesi iin N1<N2<N3.....<Nn olmaldr.
mysql> SELECT INTERVAL ( 23, 1, 15, 17, 30, 44, 200 ); -> 3 mysql> SELECT INTERVAL ( 10, 1, 10, 100, 1000 ); -> 2 mysql> SELECT INTERVAL ( 22, 23, 30, 44, 200 ); ->0
LEAST (deer1, deer2) ki ya da daha fazla deerlikten en kk olann seer. Eer girilen deerler string ise harf srasna gre bulacaktr.
mysql> SELECT LEAST ( 2, 0 ); -> 0 mysql> SELECT LEAST ( 3.0, 34.0, 5.0, 767.0 ); -> 3.0 mysql> SELECT LEAST ( B, A, C ) -> A
40
En son verilen rnekte sonu 1 dir, nk ( ! 1) + 1 deerine eittir. AND (VE) && Lojik VE KAPISIna eittir. Girilerden herhangi biri 0 ise k deerini 0 verir.
mysql> SELECT -> 1 mysql> SELECT -> 0 mysql> SELECT -> NULL mysql> SELECT -> 0 mysql> SELECT -> 0 1 && 1 ; 1 && 0 ; 1 && NULL ; 0 && NULL ; NULL && 0 ;
OR (VEYA) | | Lojik VEYA KAPISIna eittir. Girilerden herhangi birisi 1 olduunda k deerini 1 verir.
mysql> SELECT -> 1 mysql> SELECT -> 1 mysql> SELECT -> 0 mysql> SELECT -> NULL mysql> SELECT -> 1 1 || 1 ; 1 || 0 ; 0 || 0 ; 0 || NULL ; 1 || NULL ;
41
XOR (ZEL VEYA) Lojik olarak ZEL VEYA KAPISInn yapt ii grr. Giriler ayn olduunda k deerini 0; dier durumlarda 1 verir.
mysql> SELECT -> 0 mysql> SELECT -> 1 mysql> SELECT -> NULL mysql> SELECT -> 1 1 XOR 1 ; 1 XOR 0 ; 1 XOR NULL ; 1 XOR 1 XOR 1 ;
42
expr1de yazan eer doruysa expr2; deilse exper3de yazan uygular. ASCII ( str ) Eer girilen deer null bir ifade deilse deerin asc kodunu verir( 0 255 ). BIN(N) Girilen sayy BINARY say sistemine evirir.
mysql> SELECT BIN ( 12 ); -> 1100
CONCAT( str1, str2,... ) String toplama yapar. Eer deerlerden herhangi birisi null bir ifade ise null olan ifadeyi seer.
mysql> SELECT CONCAT ( My, S, QL ); -> MySQL mysql> SELECT CONCAT ( My, NULL, QL ); -> NULL mysql> SELECT CONCAT ( 14.3 ); - > 14.3
43
CONCAT_WS ( separator, str1, str2,...) Tpk CONCAT fonksiyonunda olduu gibi string toplama yapar, fakat bunun tek fark deerler arasna istediimiz bir karakter koyabilmemizdir. Eer deerlerin arasnda bir null deer varsa onu pas geer ve bir sonrakiyle birletirir.
mysql> SELECT CONCAT_WS ( , , First name, Second name, Last name ); -> First name, Second name, Last name mysql> SELECT CONCAT_WS ( , , First name, NULL, Last name ); -> First name, Last name
ELT ( N, str1, str2, strn,...) N=1 ise str1i, N=2 ise str2i, N=n ise strni seer. mysql> -> mysql> -> SELECT ELT ( 1, ej, der, alp); ej SELECT ELT ( 4, ej, der, alp); alp
FIELD ( str, str1, str2,str3,... ) Eer strdeki yaz dierlerinin iinde varsa ka numaral str de olduunu verir. Eer str dierlerinin iinde yoksa 0 verir. mysql> -> mysql> -> SELECT FIELD ( ej, hej, ej, foo); 2 SELECT FIELD ( ej, hej, lej, foo); 0
FIND_IN_SET ( str, strlist) Verilen strnin strlist iinde kanc srada olduunu bulur. mysql> SELECT FIND_IN_TEXT ( b, a, b, c, d); -> 2 FORMAT ( X, D ) #,###,###.## diye bir X saysnn olduunu varsayalm. D says bu saynn ondalkl ksmn yuvarlar veya 0 koyarak ondalkl ksmdaki D tane say olmasn salar. Eer D sfr ise ondalkl ksm kalkar. Mysql> -> mysql> -> mysql> -> SELECT FORMAT ( 12332.123456, 4 ); 12,332.1235 SELECT FORMAT ( 12332.1, 4); 12,332.1000 SELECT FORMAT ( 12332.2, 0); 12,332 44
INSERT(str,pos,len,newstr) Verilen metin ierisine istenilen posizyondan itibaren iareti iinde verilen deeri yazar.
mysql> SELECT INSERT('Quadratic', 3, 4, 'What'); -> 'QuWhattic' mysql> SELECT INSERT('Quadratic', -1, 4, 'What'); -> 'Quadratic' mysql> SELECT INSERT('Quadratic', 3, 100, 'What'); -> 'QuWhat'
LEFT(str,len) Parantez ierisinde verilen metnin, verilen karakter says kadarn soldan itibaren alr.
mysql> SELECT LEFT('foobarbar', 5); -> 'fooba'
MID(str,pos,len) Verilen string, soldan belirtilen pozisyonundan itibaren belirtilen kadar karakterini alr. REPEAT(str,count) Trnak iinde verilen karakteri istendii kadar yazdrr.
mysql> SELECT REPEAT('MySQL', 3); -> 'MySQLMySQLMySQL'
45
RIGHT(str,len) Verilen string iinden sadan verilen deer kadar olan karakteri alr.
mysql> SELECT RIGHT('foobarbar', 4); -> 'rbar'
karma
mysql> SELECT 3-5; -> -2
arpma
mysql> SELECT 3*5; -> 15 mysql> SELECT 18014398509481984*18014398509481984.0; -> 324518553658426726783156020576256.0
Blme
mysql> SELECT 3/5; -> 0.60
DIV Tam blme; blme ilemi sonunda virgl ksm atlr, tam ksm yazar.
mysql> SELECT 5 DIV 2; -> 2
46
ATAN(X) Verilen deerin arc tangent deerini verir. mysql> SELECT ATAN(2); -> 1.1071487177941 mysql> SELECT ATAN(-2); -> -1.1071487177941
47
COS(X) Radians deeri verilen deerin cosinusini verir. mysql> SELECT COS(PI()); -> -1 COT(X) Verilen deerin cotangant deerini verir.
mysql> SELECT COT(12); -> -1.5726734063977 mysql> SELECT COT(0); -> NULL
48
SIGN(X) Deikenlerin iaretlerini verir ( -1 say negatifse 0 sfr olduunda veya 1 say pozitif olduunda).
mysql> SELECT SIGN(-32); -> -1 mysql> SELECT SIGN(0); -> 0 mysql> SELECT SIGN(234); -> 1
49
MUSTERI
SIPARIS
Musteri_no Siparis_tarihi Urun_kodu fiyat miktar tutar
ekil 1.2
lem Basamaklar Yukardaki ekle gre MAGAZA adl bir veri taban oluturunuz. musteri, urun ve siparis adl tablolar oluturunuz. Her tabloya beer kayt giriniz. Girilen kaytlardan urun fiyat 25YTL olan rnleri listeleyiniz. Mteri ad Mesut ve sipari tarihi 30/04/2007 olan kaytlar grntleyiniz. Girmi olduunuz mteri kaytlarndan ikisini siliniz. rnlerden bazlarnn fiyatlarn deitiriniz. rn fiyat en pahal olan rn hangisi? Tablolar siliniz. Magaza veri tabann siliniz. 50
neriler
Uygulamalar iin kaytlarda deerler girebilirsiniz (ayn fiyatlar ayn olan rnler gibi).
benzer isimli,
D) Apache
2.
3.
D)Hibiri
4.
Aadaki MySQL komut uygulamas sonucunda hangisi hata verir? A) mysql>select sin(45); B) mysql>create table mteri; C) mysql>quit D) mysql>use ahmer Bir MySQL veri taban zerinde ilem yapabilmek iin o veri tabann semek gerekir. Byle bir veri tabann semek iin hangi komut kullanlr? A)use B) select C) create D) drop Aadakilerden veri trlerinden hangisi metin (karakter) veri trdr? A)Datetime B) Real C) Int MySQLde index ilemi ne amala yaplr? A)Veri tabannda veri aramak iin C)Veri tabndaki verileri sralamak iin
5.
6.
D) VarChar
7.
B)Veri tabanndan veri silmek iin D)Veri tabanna veri eklemek iin
8.
9.
Bir veri tabanndan veri almak (sorgulamak) iin hangi komut kullanlr? A)Select B) Update C) Insert D) Alter
mysql>select from okul where tur=meslek;
MySQL komut satr ne i yapar? A) Okul veri tabanda, tur deeri meslek olanlar listeler. B) Okul veri tabanda, tur deeri meslek olanlar siler. C) Okul veri tabanda, tur deeri meslek olanlar listeler. D) Okul veri tabanda, tur deeri meslek olanlar tablo oluturur. 10. Veri tabannda bir alann deerini deitirmek iin hangi MySQL komutu kullanlr? A)Update B) Alter C) Insert D) Hepsi 51
11.
Adnn iinde M geen rencilerin ad ve numarasnn grntlenmesi iin gerekli olan ifadeyi yaznz.
DEERLENDRME Cevaplarnz cevap anahtar ile karlatrnz. Test iinde cevaplandramadnz, yanl cevaplandrdnz veya kendinizi bilgi bakmndan eksik hissettiiniz sorular iin ilgili konulara tekrar dnnz.
52
ARATIRMA
PHP ve MySQLle hazrlanm web sitelerini inceleyiniz. Internette veri gnderme hakknda bilgi toplaynz. nternette kullanclardan gelen bilgiler nereye, nasl kaydediliyor olabilir? Aratrnz.
53
rnek:
<html> <FORM ACTION=formyolla.php METHOD=GET> Adnz: <input type=text name =ad ></br> Soyadnz: < input type=submit value=Gnder> </FORM> </html>
Bu rnek getform.html adyla kaydedilmeli ve web browsern adres satrnda http://localhost/webmagaza/getform.html yazlarak arlmaldr. lgili alanlar doldurduktan sonra Gnder butonuna baslr. Adres satrnda formda girilen bilgiler kark bir ekilde grlmektedir. ./formyolla.php?ad=halil&soyad=halepli&. Burada <form> tagnn action parametresiyle arlan php dosyasnn ad,input type ile tanmlanan nesnelerin adlarn ve browserden girilen deerler grlmektedir. Action parametresiyle gnderilen dosya adndan sonra ? daha sonra ilk nesnenin nameparametresiyle verilmi ad, deeri ve sonraki nesne adlarnve deerlerini birletirmek iin kullanlan& iaretleri grlr. POST : Client (istemci) tarafndan gnderilen bilgiler browsern adres satrnda grntlenmeden yollanr. rnek:
<html> <FORM ACTION= formyolla.php METHOD=POST> Adnz :<input type= text name=ad></br> Soyadnz : <input type= text name=soyad></br> <input type=Submit value=Gnder> </FORM> </html>
Bu rnek postform.html adyla kaydedilmeli ve web browsern adres satrnda http://localhost/webmagaza/postform.html yazlarak arlmaldr. lgili alanlar doldurduktan sonra Gnder butonuna baslr. Bu rnekte sadece arlan sayfann adresi grnmektedir (Deikenler ve girilen deerler grnmez.). http://localhost/webmagaza/formyolla.php grnr. eklinde adres satr
Yukardaki rnekler incelendiinde FORM tagnn ACTION parametresinin arlacak yeni PHP dosyasnn ad yer almaktadr.
54
Veri taban zerinde ilem yaparken PHPnin MySQL iin gerekli olan fonksiyonlar kullanlacaktr. Bu fonksiyonlardan en gereklileri devam eden konularda anlatlacaktr. PHP ile yazlacak kodlarda bir veri taban ilemi yaplyorsa zorunlu olarak srasyla unlar yaplmaldr: 1. 2. 3. 4. 5. 6. MySQL balants gerekletirilmelidir. MySQL sunucusundaki kullanlacak veri taban seilmelidir. Bir SQL (Structure Query Language) ifadesi yazlmaldr. Bu SQL ifadesi altrlmaldr. SQL ileminin sonucuna gre ilemler tamamlanmaldr. Balant kapatlmaldr.
Buradaki alt admn her birinde kullanlan komutlar aada rneklerle aklanmtr.
55
rnek:
$query=(select * from kitap where yazar=Ali, $baglanti);
Bu komut SQL ifadesi altrldktan sonra dnen aralar ierisinden bir tanesini armak iin kullanlr. Bu komut ikinci kez altrlr ise bir sonraki kayt arlr. Sonu, alan says kadar elemanl bir dizi oluturularak atlr. rnek;
<? $baglan=mysql_connect (localhost,root,); $sec = mysql_select_db(magaza,$baglan); If ($sec) { print Veri taban Seildi; $sql=select musteri_no,adi,soyadi,dogum_tarihi from musteri; $sorgu=mysql_guery($sql,$baglan); $alan_sayisi = mysql_num_fields($sorgu); //sonuc 4 $i=0; While ($satir = mysql_fetch_row($sorgu) ) { $i++; for ($s=1;$s<$alan _sayisi;$s++) { $dizi [$i] [$s] = $satir[$s] ; } for($i-1;$i<=count ($dizi);$i++) { print $dizi[$i][1].$dizi [$i][3].<br>; } } mysql_close($baglan); } else { print veri taban Seilemedi; return; } ?>
57
rnek: mysql_close($baglanti); rnek Uygulama Aadaki uygulamada firmadaki kullanc internet zerinden mteri bilgilerini girebilecek ekilde hazrlanm bir web sayfasnn kodlar yazlmtr. Uygulama iki ksmdan olumaktadr. Kullanc Arayznn HTML Olarak Hazrlanmas (Dosya Ad Musteri. html)
<html> <head> <title>e_Maaza Mteri Sipari Takip otomasyonu</title> <meta http-equiv="Content-Type" content="text/html; charset="> </head> <body bgcolar="#FFFFFF" text="#000000"> <form name=" " method="get" action="musteri.php"> <table border="0"> <tr bgcolor="#FFCCCC"> <td colspan="6"> <div align="center"><b>Mteri Bilgi Girii</b></div></td> </tr> <tr bgcolor="#CCFFFF"> <td colspan="6"> </td> </tr> <tr bgcolor="#FFCCCC"> <td width="169">Mteri No :</td> <td width="147" colspan="5" bgcolor="#FFCCCC"> <input type="text" name=" xmusteri_no" maxlength="5" size="10"> </td> </tr> <tr bgcolor="#FFCCCC"> <td width="169">Ad :</td> <td width="147" colspan="5"> <input type="text" name="xadi"> </td> </tr> <tr bgcolor="#FFCCCC"> <td width="169">Soyad :</td> <td width="147" colspan="5"> <input type="text" name="xsoyadi"> </td> </tr> <tr bgcolor="#FFCCCC"> <td width="169">Doum Tarihi :</td> <td width="147" colspan="5"> <input type="text" name="xdogum_tarihi" value="01/01/1900"> </td> </tr>
58
<tr bgcolor="#FFCCCC"> <td width="169">Cinsiyeti <tdwidth="147" colspan="5"> <input type="radio" name="xcinsiyeti" value="e"> Erkek <input type="radio" name="xcinsiyeti" value="k"> Kadn </td> </tr> <tr bgcolor="#FFCCCC"> <td width="169">Adresi :</td> <td width="147" colspan="5"> <input name="xadres" type="text" id="xadres" maxlength="50"> </td> </tr> <tr bgcolor="#FFCCCC"> <td with="169">Kredi kart no :</td> <td width="147" colspan="5"> <input type="text" name="xkartno" maxlength="16"> </td> </tr> <tr bgcolor="#FFCCCC"> <td colspan="6"> <div alingn="center"> <div align="center"> <input type="submit" name="xgiris" value="KAYDET"> <input type ="reset" name="xtemizle" value="TEMZLE" > </div> </div></td> </tr> </table> </form> </body> </html>
59
Kullanc Arayznde Girilen Bilgilerin Veri Tabanna Kaydedilmesi (Dosya Ad musteri. php)
<? $baglan = mysql_connect (localhost, root , Ankara); $sec = mysql_select_db (magaza, $baglan) : $xdogum_tarihi=tarihe_evir($xdogum_tarihi) : sql=insert inso mteri (mteri_no, ad, soyad, doum_tarihi, cinsiyeti, adres, kart_no) values $xmteri_no,$xad, $xsoyad, $zdoum_tarihi, $xcinsiyeti, $xadres, $xkart_no); $sorgu=mysql_query($sql, $baglan): if ($sorgu) print kayt baaryla girilmitir : else printltfen girdiiniz bilgileri kontrol ediniz: mysql_close ($baglan): } ?>
60
lem Basamaklar
Veri taban adn okuyucu olarak veriniz. okuyucu veri tabanna yukardaki deiken- lerden oluan bir oku tablosu oluturunuz. Uygulamann okuyucu.html adyla web (kullanc) arayzn hazrlaynz. Kullanc arayznde girilen bilgilerin veri tabanna kaydedilmesi iin okuma.php adl PHP dosyasn oluturunuz.
neriler
61
2.
3.
4.
DEERLENDRME Cevaplarnz cevap anahtar ile karlatrnz. Test iinde cevaplandramadnz, yanl cevaplandrdnz veya kendinizi bilgi bakmndan eksik hissettiiniz sorular iin ilgili konulara tekrar dnnz.
62
DEERLENDRME Yaptnz deerlendirme sonucunda eksikleriniz varsa renme faaliyetlerini tekrarlaynz. Modl tamamladnz, tebrik ederiz. retmeniniz size eitli lme aralar uygulayacaktr. retmeninizle iletiime geiniz.
63
64
65
KAYNAKA KAYNAKA
ALTINKAYA Muhittin, Yahya DEMRCAN, Programlamaya Giri, AFEF , Ankara, 2005. MySQL ve PHP
KSEOLU Kerem, Veri Taban Mant, Pusula Yaynclk, 2005, stanbul. OTANER Kayra, PHP ve MySQL ile Web Yazlm Gelitirme, stanbul, 2002. WELLING Luke, Thomson LAURA, PHP ve MYSQL Uzmanlar iin, Alfa Yaynlar, stanbul, 2006. http://www.belgeler.org http://www.ceviz.net http://www.csharpnedir.com http://www.mysql.com http://www.trojan-tr.org
66