MySQL
özet
Bu belgede bir ili?kisel veritaban? olan MySQL’den bahsedece?iz.
Program?n kurulumu ve çal??maya haz?r hale getirilimesi, küçük veri
tabanlar?ndan ba?lamak üzere karma??k veri taban? ili?kilerine kadar
birçok konuyu irdelemeye çal??aca??z. Eksik veya yanl?? gördü?ünüz
noktalar? bana elektronik posta ile bildirirseniz sevinirim.
MySQL’e Giri?
Bu bölümde MySQL kullanarak veri taban? sunucusuna nas?l ba?lan?laca??n?
ve küçük veri tabanlar?n?n ne ?ekilde kurulaca??n? görece?iz. MySQL’in
kendi komut sat?r? olmas?na ra?men komutlar? toplu bir ?ekilde bu komut
sat?r?n? kullanmadan da i?letebilirsiniz. ??letmek istedi?iniz komutlar?
bir dosyaya yazman?z yeterli olacakt?r. MySQL ile gelen seçenekleri
görmek için komut sat?r?nda
$ mysql --help
yazman?z yeterli olacakt?r.
Sunucuya Ba?lanma
MySQL hizmetini veren sunucaya ba?lanman?z için komut sat?r?nda ?u
komutu girmeniz gerekmektedir.
$ mysql -h makine_ad? -u kullan?c? -p
Enter password *********
E?er MySQL kurulu makina bulundu?unuzdan farkl? bir yerde ise -h
parametresini kullanmak zorundas?n?z. Ayr?ca veritaban?n? kullanmak için
bir kullan?c?ya ihtiyac?n?z vard?r. Bu kullan?c?y? ve ?ifresini sistem
yöneticinizden temin edebilirsiniz. Baz? sistemlerde MySQL kurulurken
kullan?c?lara özel bir ?ifre verilmez ve ?ifreyi yazmadan sisteme
girebilirsiniz. Bu özelli?i daha sonra kald?rman?z yani bir ?ifre
koyman?z verilerinizin güvenli?i aç?s?ndan yararl? olacakt?r .
Komutlar?n ??letilmesi
Hemen tablo olu?turmadan önce tablolardan bilgilerin nas?l
ç?kar?laca??n? ö?renelim. S¸imdi MySQL komut sat?r?na girin ve a?a??daki
komutu yaz?n.
mysql> SELECT VERSION(), CURRENT_DATE;
+--------------+--------------+
| version() | CURRENT_DATE |
+--------------+--------------+
| 3.22.20a-log | 1999-03-19 |
+--------------+--------------+
1 row in set (0.01 sec)
mysql>
Bu örnekle birkaç temel ?ey aç??a ç?k?yor:
Dolay?s?yla a?a??daki komutlar e?de?erlidir.
mysql> SELECT VERSION(), CURRENT_DATE;
mysql> select version(), current_date;
mysql> SeLeCt vErSiOn(), current_DATE;
Birden fazla komutu ayn? sat?rda ardarda yazabilirsiniz.
mysql> SELECT VERSION(); SELECT NOW();
+--------------+
| version() |
+--------------+
| 3.23.24a-log |
+--------------+
+---------------------+
| NOW() |
+---------------------+
| 2001-09-22 00:15:33 |
+---------------------+
E?er komut çok uzun ise ve birkaç sat?r? kullanarak yaz?lmas?
gerekiyorsa a?a??daki gibi yap?labilir. Sat?r yetmiyorsa enter tu?una
bas?n ve alt sat?rdan devam edin. Komutu yazmay? bitirdi?inizde “;”
yazman?z ve enter’a basman?z yeterli olacakt?r. Böylece komutun bitti?i
bildirilmi? olur.
mysql> SELECT
-> USER()
-> ,
-> CURRENT_DATE;
+------------------------------+--------------+
| USER() | CURRENT_DATE |
+------------------------------+--------------+
| [Linkleri görebilmek için üye olun veya giriş yapın.]ldomain
| 2001-09-22 |
+------------------------------+--------------+
Yazmaya ba?lam?? oldu?unuz bir komutu iptal etmek için nc yazman?z
yeterlidir.
mysql> SELECT
-> USER()
-> \c
mysql>
Baz? Temel Komutlar
Bu bölümde en s?k kullan?lan komutlar? bir örnek üzerinde inceleyece
?iz. S¸imdi MySQL’i komut sat?r?ndan bir veritaban? ile ba?latal?m.
Henüz kendiniz bir veritaban? olu?turmam?? iseniz, bir çok sistemde
kurulumdan gelen test isimli veritaban?n? kullanabilirsiniz. Bunun için
a?a??daki komutu kullan?n.
$ mysql veritab?_ismi
?imdi a?a??daki gibi örnek bir tablo olu?tural?m.
CREATE TABLE shop (
article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,
dealer CHAR(20) DEFAULT '' NOT NULL,
price DOUBLE(16,2) DEFAULT '0.00' NOT NULL,
PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
(1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.4 5),(3,'C',1.69),
(3,'D',1.25),(4,'D',19.95);
Bunlar? yazd?ktan sonra tablonun son halini görmek için a?a??daki komutu
kullan?n.
mysql> SELECT * FROM shop;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 0001 | A | 3.45 |
| 0001 | B | 3.99 |
| 0002 | A | 10.99 |
| 0003 | B | 1.45 |
| 0003 | C | 1.69 |
| 0003 | D | 1.25 |
| 0004 | D | 19.95 |
+---------+--------+-------+
article sütunundaki en yüksek rakam? bulmak için ?u komut yaz?l?r.
SELECT MAX(article) AS article FROM shop
+---------+
| article |
+---------+
| 4 |
+---------+
En pahal? article ile ilgili sat?r? ç?karmak istersek iki yok
kullanabiliriz. ?lk önce fiyatlar?n maximumunu buluruz. Ard?ndan o
sat?r? yazd?r?r?z. ?öyle
SELECT MAX(article) AS
Uygulama
.
mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql |
| test |
| tmp |
+----------+
Normal ?artlarda üç tane veritaban?n?n standart olarak kurulu olmas?
gerekir. Veri tabanlar?n?n kendileri ile ilgili dosyalar /var/lib/mysql/
dizininde bulunur.
?lk önce mysqld program?n? arka planda çal??mas?n? sa?lamal?y?z. Bunun
için ?unu yaz?n:
$ /etc/init.d/mysql start
Biz bu üç veritaban? haricinde bir tane daha olu?turaca??z. ’root’
kullan?c?s? olarak mysqladmin komutunu kullanabilirsiniz.
$ mysqladmin create rehber
Böylece rehber isimli bir veritaban? daha olu?turuldu. ??i ?ansa
b?rakmamak için mysqld program?n? tekrar ba?latal?m.
$ /etc/init.d/mysql restart
Bu a?amadan sonra root olarak çal??man?n anlam? yok. Normal kullan?c?
olarak devam edelim. Asl?nda veritaban? açman?n daha kolay bir yolu var.
Normal kullan?c? olarak da veritaban? kurabilirsiniz. MySQL komut
sat?r?nda ?unlar? yaz?n:
mysql> CREATE DATABASE rehber;
Veritabanlar? aras?nda geçi? yapmak isterseniz USE komutunu kullan?n.
Noktal? virgül kullanmak zorunda de?ilsiniz.
mysql> USE rehber
Herhangi bir veritaban?nda kay?tl? tablolar? görmek için ?u komut
kullan?l?r.
mysql> SHOW TABLES
Empty set (0.00 sec)
Veritaban?m?za henüz bir tablo eklemedi?imiz için bize hiçbir tablonun
olmad???n? belirtti. Veritaban? ile u?ra?man?n en zor yan? hangi
tablolar?n kullan?laca?? ve içeriklerinin ne olaca??na karar vermektir.
Bu mesele çok iyi dü?ünülmez ve tablolarda eksik birtak?m bilgiler
olursa sonradan zorluklarlda kar??la?abilirsiniz. Bir telefon rehberinde
neler olmas? gereklidir. ?lk önce her kay?t için bir numara olmas?
gereklidir. Bu numara negatif say? olmamal? ve kesinlikle tamsay?
olmal?d?r. Sonra isim ve soyisim k?sm? muhakkak olmal?d?r. Telefon
numaras? ve ?ehirleraras? kodu. Bence bu ikisinin ayr? olmas? biti?ik
yaz?lmas?ndan daha mant?kl?. Cinsiyet yaz?labilir. Adres ve konum
bilgileri de bu tabloya eklenebilecek sütunlardan birkaç?.
?imdi tablomuzu olu?tural?m.
mysql> CREATE TABLE rehber (
-> s?ra char(4), isim VARCHAR(20), soyisim VARCHAR(20),
-> lakap VARCHAR(10), konum VARCHAR(5), kod CHAR(4),
-> telefon CHAR(7), adres VARCHAR(30));
?sim, soyisim gibi de?i?kenler için VARCHAR de?i?kenini kullanmam?z çok
yerinde çünkü herkesin ismi ayn? uzunlukta tabii ki olmayacakt?r.
Program tablolar? listelerken bu sütunlara en uygun geni?li?i
verecektir. Tabloyu olu?turduktan sonra kontrol etmek için ?unu yaz?n:
mysql> SHOW TABLES
+------------------+
| Tables in rehber |
+------------------+
| rehber |
+------------------+
Tablonun genel yap?s?n? kontrol etmek için ise DESCRIBE komutunu
kullanabilirsiniz.
mysql> DESCRIBE rehber
+---------+-------------+------+-----+---------+-------+----------------------------|
Field | Type | Null | Key | Default |
Extra | Privileges
+---------+-------------+------+-----+---------+-------+----------------------------|
s?ra | varchar(4) |
YES | | NULL | | select,insert,update,refere| isim | varchar(20) | YES |
| NULL | | select,insert,update,refere| soyisim |
varchar(20) | YES | | NULL | | select,insert,update,refere| lakap |
varchar(10) | YES | | NULL | |
select,insert,update,refere| konum | varchar(5) | YES | | NULL | |
select,insert,update,refere| kod | varchar(4) | YES | |
NULL | | select,insert,update,refere| telefon | varchar(7) | YES | |
NULL | | select,insert,update,refere| adres |
varchar(30) | YES | | NULL | |
select,insert,update,refere+---------+-------------+------+-----+---------+-------+----------------------------DESCRIBE
komutunu tablolardaki sütun isimlerini veya tablonun genel yap?s?n?
unuttu?unuz zamanlar kullanabilirsiniz. ?imdi tabloya veri giri?i
yapmam?z gerekecek. Verileri MySQL komut sat?r?ndan tek tek girmek çok
uzun olaca??ndan ilk önce bir tabloya yazaca??z. Sonra bu tabloda
okutaca??z. Mesela girmek istedi?imiz veriler ?öyle olsun.
s?ra isim soyisim lakap konum kod telefon adres
1 Halil Akman Halo ev 0212 6532220 Yenibosna
2 Ahmet Tekin Kabaday? ev 0212 2561000 Kas?mpa?a
3 Hüseyin Kaya Doktor i? 0216 3286848 ümraniye
Bu bilgileri “rehber.txt” adl? bir dosyaya her bilgi aras?nda bir
tab’l?k bo?luk olacak ?ekilde kaydedin. E?er herhangi bir bilgi yok ise
“n N” yaz?n.
1 Halil Akman Halo ev 0212 6532220 Yenibosna
2 Ahmet Tekin Kabaday? ev 0212 2561000 Kas?mpa?a
3 HÜseyin Kaya Doktor i? 0216 3286848 Ümraniye
?imdi ?u komutu yaz?n:
mysql> LOAD DATA LOCAL INFILE "rehber.txt" INTO TABLE rehber;
Sonucu test ederseniz ?öyle bir sonuç göreceksiniz.
mysql> SELECT * FROM rehber;
+------+---------+---------+----------+-------+------+---------+-----------+
| s?ra | isim | soyisim | lakap | konum | kod | telefon | adres |
+------+---------+---------+----------+-------+------+---------+-----------+
| 1 | Halil | Akman | Halo | ev | 0212 | 6532220 | Yenibosna |
8
| 2 | Ahmet | Tekin | Kabaday? | ev | 0212 | 2561000 | Kas?mpa?a |
| 3 | HÜseyin | Kaya | Doktor | i? | 0216 | 3286848 | Ümraniye |
+------+---------+---------+----------+-------+------+---------+-----------+
Tabloya yeni bir giri? yapmak için INSERT komutu kullan?l?r.
mysql> INSERT INTO rehber
-> VALUES (4, 'Dilek', 'Kaynar', 'Rehber'
,'cep','0535','7805024','ÜskÜdar');
E?er herhangi bir sütuna bilgi girmeyecekseniz o k?sma NULL yazman?z
yeterli. Fakat n N yazamass?n?z. Tablodan bir bilgi çekmek için SELECT
komutu kullan?l?r. Genel kullan?l?? ?eklini söyle özetlenebilir.
SELECT seçilecek_bölüm
FROM hangi_tabloda_seçilece¸gi
WHERE hangi_?artlar?n_sa?lanaca??
Bütün tabloyu görmek için ?u kombinasyonu kullanabilirsiniz.
mysql> SELECT * FROM rehber;
+------+---------+---------+----------+-------+------+---------+-----------+
| s?ra | isim | soyisim | lakap | konum | kod | telefon | adres |
+------+---------+---------+----------+-------+------+---------+-----------+
| 1 | Halil | Akman | Halo | ev | 0212 | 6532220 | Yenibosna |
| 2 | Ahmet | Tekin | Kabaday? | ev | 0212 | 2561000 | Kas?mpa?a |
| 3 | HÜseyin | Kaya | Doktor | i? | 0216 | 3286848 | Ümraniye |
| 4 | Dilek | Kaynar | Rehber | cep | 0535 | 7805024 | ÜskÜdar |
+------+---------+---------+----------+-------+------+---------+-----------+
Tabloda hatal? herhangi bir yeri düzeltmek için iki seçenek var.
Birincisi tablonun bütün içeri?ini silmek ve do?ru tabloyu yeniden
yüklemek.
mysql> SET AUTOCOMMIT=1; # bu sat?r olay? h?zland?rmak i»cin
mysql> DELETE FROM rehber;
mysql> LOAD DATA LOCAL INFILE "rehber.txt" INTO TABLE rehber;
Di?er yol ise UPDATE komutu:
mysql> UPDATE rehber SET lakap = "Kor" WHERE isim = "Huseyin";
Görüldü?ü üzere tablonun tamam?n? görmek çok kolay. ?stedi?imiz bir
sat?r? görmek için SELECT komutunun baz? varyasyonlar?n? kullanaca ??z.
Mesela Ahmet isimli ?ahs?n bilgilerini görmek istiyoruz.
mysql> SELECT * FROM rehber WHERE isim = "Ahmet";
+------+-------+---------+----------+-------+------+---------+-----------+
| s?ra | isim | soyisim | lakap | konum | kod | telefon | adres |
+------+-------+---------+----------+-------+------+---------+-----------+
| 2 | Ahmet | Tekin | Kabaday? | ev | 0212 | 2561000 | Kas?mpa?a |
+------+-------+---------+----------+-------+------+---------+-----------+
Avrupa yakas?nda telefonu olanlar? bulmak için
mysql> SELECT * FROM rehber WHERE kod = "0212";
+------+-------+---------+----------+-------+------+---------+-----------+
| s?ra | isim | soyisim | lakap | konum | kod | telefon | adres |
+------+-------+---------+----------+-------+------+---------+-----------+
| 1 | Halil | Akman | Halo | ev | 0212 | 6532220 | Yenibosna |
| 2 | Ahmet | Tekin | Kabaday? | ev | 0212 | 2561000 | Kas?mpa?a |
+------+-------+---------+----------+-------+------+---------+-----------+
Telefonu ?stanbul’a kay?tl? olanlar? bulmak için
mysql> SELECT * FROM rehber WHERE kod = "0212" OR kod = "0216";
+------+---------+---------+----------+-------+------+---------+-----------+
| s?ra | isim | soyisim | lakap | konum | kod | telefon | adres |
+------+---------+---------+----------+-------+------+---------+-----------+
| 1 | Halil | Akman | Halo | ev | 0212 | 6532220 | Yenibosna |
| 2 | Ahmet | Tekin | Kabaday? | ev | 0212 | 2561000 | Kas?mpa?a |
| 3 | HÜseyin | Kaya | Kor | i? | 0216 | 3286848 | Ümraniye |
+------+---------+---------+----------+-------+------+---------+-----------+
AND ve OR komutlar? ile daha karma??k seçme i?lemleri yapmak mümkündür.
E?er tablonun bütün sütunlar?n? görmek istemiyorsan?z görmek istedi?iniz
sütun veya sütunlar?n ismini belirtmeniz yeterli.
mysql> SELECT isim, kod, telefon FROM rehber;
+---------+------+---------+
| isim | kod | telefon |
+---------+------+---------+
| Halil | 0212 | 6532220 |
| Ahmet | 0212 | 2561000 |
| HÜseyin | 0216 | 3286848 |
| Dilek | 0535 | 7805024 |
+---------+------+---------+
__________________
özet
Bu belgede bir ili?kisel veritaban? olan MySQL’den bahsedece?iz.
Program?n kurulumu ve çal??maya haz?r hale getirilimesi, küçük veri
tabanlar?ndan ba?lamak üzere karma??k veri taban? ili?kilerine kadar
birçok konuyu irdelemeye çal??aca??z. Eksik veya yanl?? gördü?ünüz
noktalar? bana elektronik posta ile bildirirseniz sevinirim.
MySQL’e Giri?
Bu bölümde MySQL kullanarak veri taban? sunucusuna nas?l ba?lan?laca??n?
ve küçük veri tabanlar?n?n ne ?ekilde kurulaca??n? görece?iz. MySQL’in
kendi komut sat?r? olmas?na ra?men komutlar? toplu bir ?ekilde bu komut
sat?r?n? kullanmadan da i?letebilirsiniz. ??letmek istedi?iniz komutlar?
bir dosyaya yazman?z yeterli olacakt?r. MySQL ile gelen seçenekleri
görmek için komut sat?r?nda
$ mysql --help
yazman?z yeterli olacakt?r.
Sunucuya Ba?lanma
MySQL hizmetini veren sunucaya ba?lanman?z için komut sat?r?nda ?u
komutu girmeniz gerekmektedir.
$ mysql -h makine_ad? -u kullan?c? -p
Enter password *********
E?er MySQL kurulu makina bulundu?unuzdan farkl? bir yerde ise -h
parametresini kullanmak zorundas?n?z. Ayr?ca veritaban?n? kullanmak için
bir kullan?c?ya ihtiyac?n?z vard?r. Bu kullan?c?y? ve ?ifresini sistem
yöneticinizden temin edebilirsiniz. Baz? sistemlerde MySQL kurulurken
kullan?c?lara özel bir ?ifre verilmez ve ?ifreyi yazmadan sisteme
girebilirsiniz. Bu özelli?i daha sonra kald?rman?z yani bir ?ifre
koyman?z verilerinizin güvenli?i aç?s?ndan yararl? olacakt?r .
Komutlar?n ??letilmesi
Hemen tablo olu?turmadan önce tablolardan bilgilerin nas?l
ç?kar?laca??n? ö?renelim. S¸imdi MySQL komut sat?r?na girin ve a?a??daki
komutu yaz?n.
mysql> SELECT VERSION(), CURRENT_DATE;
+--------------+--------------+
| version() | CURRENT_DATE |
+--------------+--------------+
| 3.22.20a-log | 1999-03-19 |
+--------------+--------------+
1 row in set (0.01 sec)
mysql>
Bu örnekle birkaç temel ?ey aç??a ç?k?yor:
- Birkaç istisna hariç
bütün komutlar “;” ile bitirilir. - Her komut ilk önce sunucuya gönderilir, i?letilir ard?ndan yeni
komutlar? beklemeya ba?lar. - Komutlar?n sonucu genellikler tablolar halinde gösterilir.
- Sonuç tablolar?n?n sat?r say?lar? ile komutun ne kadar süre içinde
i?letildi?i ekrana yazd?r?l?r. Bu sayede sunucu performans? hakk?nda
kabada olsa bir fikir elde edilir.
Dolay?s?yla a?a??daki komutlar e?de?erlidir.
mysql> SELECT VERSION(), CURRENT_DATE;
mysql> select version(), current_date;
mysql> SeLeCt vErSiOn(), current_DATE;
Birden fazla komutu ayn? sat?rda ardarda yazabilirsiniz.
mysql> SELECT VERSION(); SELECT NOW();
+--------------+
| version() |
+--------------+
| 3.23.24a-log |
+--------------+
+---------------------+
| NOW() |
+---------------------+
| 2001-09-22 00:15:33 |
+---------------------+
E?er komut çok uzun ise ve birkaç sat?r? kullanarak yaz?lmas?
gerekiyorsa a?a??daki gibi yap?labilir. Sat?r yetmiyorsa enter tu?una
bas?n ve alt sat?rdan devam edin. Komutu yazmay? bitirdi?inizde “;”
yazman?z ve enter’a basman?z yeterli olacakt?r. Böylece komutun bitti?i
bildirilmi? olur.
mysql> SELECT
-> USER()
-> ,
-> CURRENT_DATE;
+------------------------------+--------------+
| USER() | CURRENT_DATE |
+------------------------------+--------------+
| [Linkleri görebilmek için üye olun veya giriş yapın.]ldomain
| 2001-09-22 |
+------------------------------+--------------+
Yazmaya ba?lam?? oldu?unuz bir komutu iptal etmek için nc yazman?z
yeterlidir.
mysql> SELECT
-> USER()
-> \c
mysql>
Baz? Temel Komutlar
Bu bölümde en s?k kullan?lan komutlar? bir örnek üzerinde inceleyece
?iz. S¸imdi MySQL’i komut sat?r?ndan bir veritaban? ile ba?latal?m.
Henüz kendiniz bir veritaban? olu?turmam?? iseniz, bir çok sistemde
kurulumdan gelen test isimli veritaban?n? kullanabilirsiniz. Bunun için
a?a??daki komutu kullan?n.
$ mysql veritab?_ismi
?imdi a?a??daki gibi örnek bir tablo olu?tural?m.
CREATE TABLE shop (
article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,
dealer CHAR(20) DEFAULT '' NOT NULL,
price DOUBLE(16,2) DEFAULT '0.00' NOT NULL,
PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
(1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.4 5),(3,'C',1.69),
(3,'D',1.25),(4,'D',19.95);
Bunlar? yazd?ktan sonra tablonun son halini görmek için a?a??daki komutu
kullan?n.
mysql> SELECT * FROM shop;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 0001 | A | 3.45 |
| 0001 | B | 3.99 |
| 0002 | A | 10.99 |
| 0003 | B | 1.45 |
| 0003 | C | 1.69 |
| 0003 | D | 1.25 |
| 0004 | D | 19.95 |
+---------+--------+-------+
article sütunundaki en yüksek rakam? bulmak için ?u komut yaz?l?r.
SELECT MAX(article) AS article FROM shop
+---------+
| article |
+---------+
| 4 |
+---------+
En pahal? article ile ilgili sat?r? ç?karmak istersek iki yok
kullanabiliriz. ?lk önce fiyatlar?n maximumunu buluruz. Ard?ndan o
sat?r? yazd?r?r?z. ?öyle
SELECT MAX(article) AS
Uygulama
.
mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql |
| test |
| tmp |
+----------+
Normal ?artlarda üç tane veritaban?n?n standart olarak kurulu olmas?
gerekir. Veri tabanlar?n?n kendileri ile ilgili dosyalar /var/lib/mysql/
dizininde bulunur.
?lk önce mysqld program?n? arka planda çal??mas?n? sa?lamal?y?z. Bunun
için ?unu yaz?n:
$ /etc/init.d/mysql start
Biz bu üç veritaban? haricinde bir tane daha olu?turaca??z. ’root’
kullan?c?s? olarak mysqladmin komutunu kullanabilirsiniz.
$ mysqladmin create rehber
Böylece rehber isimli bir veritaban? daha olu?turuldu. ??i ?ansa
b?rakmamak için mysqld program?n? tekrar ba?latal?m.
$ /etc/init.d/mysql restart
Bu a?amadan sonra root olarak çal??man?n anlam? yok. Normal kullan?c?
olarak devam edelim. Asl?nda veritaban? açman?n daha kolay bir yolu var.
Normal kullan?c? olarak da veritaban? kurabilirsiniz. MySQL komut
sat?r?nda ?unlar? yaz?n:
mysql> CREATE DATABASE rehber;
Veritabanlar? aras?nda geçi? yapmak isterseniz USE komutunu kullan?n.
Noktal? virgül kullanmak zorunda de?ilsiniz.
mysql> USE rehber
Herhangi bir veritaban?nda kay?tl? tablolar? görmek için ?u komut
kullan?l?r.
mysql> SHOW TABLES
Empty set (0.00 sec)
Veritaban?m?za henüz bir tablo eklemedi?imiz için bize hiçbir tablonun
olmad???n? belirtti. Veritaban? ile u?ra?man?n en zor yan? hangi
tablolar?n kullan?laca?? ve içeriklerinin ne olaca??na karar vermektir.
Bu mesele çok iyi dü?ünülmez ve tablolarda eksik birtak?m bilgiler
olursa sonradan zorluklarlda kar??la?abilirsiniz. Bir telefon rehberinde
neler olmas? gereklidir. ?lk önce her kay?t için bir numara olmas?
gereklidir. Bu numara negatif say? olmamal? ve kesinlikle tamsay?
olmal?d?r. Sonra isim ve soyisim k?sm? muhakkak olmal?d?r. Telefon
numaras? ve ?ehirleraras? kodu. Bence bu ikisinin ayr? olmas? biti?ik
yaz?lmas?ndan daha mant?kl?. Cinsiyet yaz?labilir. Adres ve konum
bilgileri de bu tabloya eklenebilecek sütunlardan birkaç?.
?imdi tablomuzu olu?tural?m.
mysql> CREATE TABLE rehber (
-> s?ra char(4), isim VARCHAR(20), soyisim VARCHAR(20),
-> lakap VARCHAR(10), konum VARCHAR(5), kod CHAR(4),
-> telefon CHAR(7), adres VARCHAR(30));
?sim, soyisim gibi de?i?kenler için VARCHAR de?i?kenini kullanmam?z çok
yerinde çünkü herkesin ismi ayn? uzunlukta tabii ki olmayacakt?r.
Program tablolar? listelerken bu sütunlara en uygun geni?li?i
verecektir. Tabloyu olu?turduktan sonra kontrol etmek için ?unu yaz?n:
mysql> SHOW TABLES
+------------------+
| Tables in rehber |
+------------------+
| rehber |
+------------------+
Tablonun genel yap?s?n? kontrol etmek için ise DESCRIBE komutunu
kullanabilirsiniz.
mysql> DESCRIBE rehber
+---------+-------------+------+-----+---------+-------+----------------------------|
Field | Type | Null | Key | Default |
Extra | Privileges
+---------+-------------+------+-----+---------+-------+----------------------------|
s?ra | varchar(4) |
YES | | NULL | | select,insert,update,refere| isim | varchar(20) | YES |
| NULL | | select,insert,update,refere| soyisim |
varchar(20) | YES | | NULL | | select,insert,update,refere| lakap |
varchar(10) | YES | | NULL | |
select,insert,update,refere| konum | varchar(5) | YES | | NULL | |
select,insert,update,refere| kod | varchar(4) | YES | |
NULL | | select,insert,update,refere| telefon | varchar(7) | YES | |
NULL | | select,insert,update,refere| adres |
varchar(30) | YES | | NULL | |
select,insert,update,refere+---------+-------------+------+-----+---------+-------+----------------------------DESCRIBE
komutunu tablolardaki sütun isimlerini veya tablonun genel yap?s?n?
unuttu?unuz zamanlar kullanabilirsiniz. ?imdi tabloya veri giri?i
yapmam?z gerekecek. Verileri MySQL komut sat?r?ndan tek tek girmek çok
uzun olaca??ndan ilk önce bir tabloya yazaca??z. Sonra bu tabloda
okutaca??z. Mesela girmek istedi?imiz veriler ?öyle olsun.
s?ra isim soyisim lakap konum kod telefon adres
1 Halil Akman Halo ev 0212 6532220 Yenibosna
2 Ahmet Tekin Kabaday? ev 0212 2561000 Kas?mpa?a
3 Hüseyin Kaya Doktor i? 0216 3286848 ümraniye
Bu bilgileri “rehber.txt” adl? bir dosyaya her bilgi aras?nda bir
tab’l?k bo?luk olacak ?ekilde kaydedin. E?er herhangi bir bilgi yok ise
“n N” yaz?n.
1 Halil Akman Halo ev 0212 6532220 Yenibosna
2 Ahmet Tekin Kabaday? ev 0212 2561000 Kas?mpa?a
3 HÜseyin Kaya Doktor i? 0216 3286848 Ümraniye
?imdi ?u komutu yaz?n:
mysql> LOAD DATA LOCAL INFILE "rehber.txt" INTO TABLE rehber;
Sonucu test ederseniz ?öyle bir sonuç göreceksiniz.
mysql> SELECT * FROM rehber;
+------+---------+---------+----------+-------+------+---------+-----------+
| s?ra | isim | soyisim | lakap | konum | kod | telefon | adres |
+------+---------+---------+----------+-------+------+---------+-----------+
| 1 | Halil | Akman | Halo | ev | 0212 | 6532220 | Yenibosna |
8
| 2 | Ahmet | Tekin | Kabaday? | ev | 0212 | 2561000 | Kas?mpa?a |
| 3 | HÜseyin | Kaya | Doktor | i? | 0216 | 3286848 | Ümraniye |
+------+---------+---------+----------+-------+------+---------+-----------+
Tabloya yeni bir giri? yapmak için INSERT komutu kullan?l?r.
mysql> INSERT INTO rehber
-> VALUES (4, 'Dilek', 'Kaynar', 'Rehber'
,'cep','0535','7805024','ÜskÜdar');
E?er herhangi bir sütuna bilgi girmeyecekseniz o k?sma NULL yazman?z
yeterli. Fakat n N yazamass?n?z. Tablodan bir bilgi çekmek için SELECT
komutu kullan?l?r. Genel kullan?l?? ?eklini söyle özetlenebilir.
SELECT seçilecek_bölüm
FROM hangi_tabloda_seçilece¸gi
WHERE hangi_?artlar?n_sa?lanaca??
Bütün tabloyu görmek için ?u kombinasyonu kullanabilirsiniz.
mysql> SELECT * FROM rehber;
+------+---------+---------+----------+-------+------+---------+-----------+
| s?ra | isim | soyisim | lakap | konum | kod | telefon | adres |
+------+---------+---------+----------+-------+------+---------+-----------+
| 1 | Halil | Akman | Halo | ev | 0212 | 6532220 | Yenibosna |
| 2 | Ahmet | Tekin | Kabaday? | ev | 0212 | 2561000 | Kas?mpa?a |
| 3 | HÜseyin | Kaya | Doktor | i? | 0216 | 3286848 | Ümraniye |
| 4 | Dilek | Kaynar | Rehber | cep | 0535 | 7805024 | ÜskÜdar |
+------+---------+---------+----------+-------+------+---------+-----------+
Tabloda hatal? herhangi bir yeri düzeltmek için iki seçenek var.
Birincisi tablonun bütün içeri?ini silmek ve do?ru tabloyu yeniden
yüklemek.
mysql> SET AUTOCOMMIT=1; # bu sat?r olay? h?zland?rmak i»cin
mysql> DELETE FROM rehber;
mysql> LOAD DATA LOCAL INFILE "rehber.txt" INTO TABLE rehber;
Di?er yol ise UPDATE komutu:
mysql> UPDATE rehber SET lakap = "Kor" WHERE isim = "Huseyin";
Görüldü?ü üzere tablonun tamam?n? görmek çok kolay. ?stedi?imiz bir
sat?r? görmek için SELECT komutunun baz? varyasyonlar?n? kullanaca ??z.
Mesela Ahmet isimli ?ahs?n bilgilerini görmek istiyoruz.
mysql> SELECT * FROM rehber WHERE isim = "Ahmet";
+------+-------+---------+----------+-------+------+---------+-----------+
| s?ra | isim | soyisim | lakap | konum | kod | telefon | adres |
+------+-------+---------+----------+-------+------+---------+-----------+
| 2 | Ahmet | Tekin | Kabaday? | ev | 0212 | 2561000 | Kas?mpa?a |
+------+-------+---------+----------+-------+------+---------+-----------+
Avrupa yakas?nda telefonu olanlar? bulmak için
mysql> SELECT * FROM rehber WHERE kod = "0212";
+------+-------+---------+----------+-------+------+---------+-----------+
| s?ra | isim | soyisim | lakap | konum | kod | telefon | adres |
+------+-------+---------+----------+-------+------+---------+-----------+
| 1 | Halil | Akman | Halo | ev | 0212 | 6532220 | Yenibosna |
| 2 | Ahmet | Tekin | Kabaday? | ev | 0212 | 2561000 | Kas?mpa?a |
+------+-------+---------+----------+-------+------+---------+-----------+
Telefonu ?stanbul’a kay?tl? olanlar? bulmak için
mysql> SELECT * FROM rehber WHERE kod = "0212" OR kod = "0216";
+------+---------+---------+----------+-------+------+---------+-----------+
| s?ra | isim | soyisim | lakap | konum | kod | telefon | adres |
+------+---------+---------+----------+-------+------+---------+-----------+
| 1 | Halil | Akman | Halo | ev | 0212 | 6532220 | Yenibosna |
| 2 | Ahmet | Tekin | Kabaday? | ev | 0212 | 2561000 | Kas?mpa?a |
| 3 | HÜseyin | Kaya | Kor | i? | 0216 | 3286848 | Ümraniye |
+------+---------+---------+----------+-------+------+---------+-----------+
AND ve OR komutlar? ile daha karma??k seçme i?lemleri yapmak mümkündür.
E?er tablonun bütün sütunlar?n? görmek istemiyorsan?z görmek istedi?iniz
sütun veya sütunlar?n ismini belirtmeniz yeterli.
mysql> SELECT isim, kod, telefon FROM rehber;
+---------+------+---------+
| isim | kod | telefon |
+---------+------+---------+
| Halil | 0212 | 6532220 |
| Ahmet | 0212 | 2561000 |
| HÜseyin | 0216 | 3286848 |
| Dilek | 0535 | 7805024 |
+---------+------+---------+
__________________