10 TM-A Sınıfı

Arnavutköy MaeLisesi
 
AnasayfaSSSAramaKayıt OlÜye ListesiKullanıcı GruplarıGiriş yap

Paylaş | 
 

 MySQL

Önceki başlık Sonraki başlık Aşağa gitmek 
YazarMesaj
TATAR!
Administration
Administration
avatar

Mesaj Sayısı : 757
Yaş : 25
Nerdensin Koçum : TatarCity
Kayıt tarihi : 08/11/07

MesajKonu: MySQL   Çarş. Kas. 28, 2007 10:33 am




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:
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.
Komutlar büyük veya küçük karakterler ile yazılabilirler. 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 |
+------------------------------+--------------+
| mercan@localhost.localdomain | 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 |
+---------+------+---------+
Sayfa başına dön Aşağa gitmek
Kullanıcı profilini gör http://10tma.newgoo.net
 
MySQL
Önceki başlık Sonraki başlık Sayfa başına dön 
1 sayfadaki 1 sayfası

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
10 TM-A Sınıfı :: Genel :: Herşey-
Buraya geçin: