Veritabanına Giriş Oğuzhan Ceylan 19 Eylül 2011
Outline Veritabanı MYSQL Mysql Sorgu Komutları Bir veritabanı yaratmak ve kullanmak
Veritabanı Veritabanı Verittabanı hangi alanlarda kullanılıyor. Web sitesi uygulamaları Bankacılık. Veriye hızlı ve etkin biçimde ulaşabilme
Veritabanı Veritabanı SQL: Structured Query Language FileMaker, Postgresql, Mysql, Oracle DB, Access Biz Mysql kullanacağız. Hızlı, ücretsiz (ticari olmayan kullanım için ) Php, asp
MYSQL Mysql Sunucusuna Bağlanmak Bir sunucuda mysql kurulmuş olmalı. Bu sizin çalıştığınız bilgisayar da olabilir, bir başka bilgisayar da. Kullanıcı adı, bağlanılacak bilgisayar adı ve geçişsözcüğü biliniyor olmalı.
MYSQL Mysql Sunucusuna Bağlanmak bash> mysql -h host -u user -p Enter password: ******** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 25338 to server version: 5.1 Type help; or \h for help. Type \c to clear the mysql>
MYSQL Mysql Sunucusuna Bağlanmak Eğer çalıştığınız bilgisayarda Mysql kurulu ise bu durumda sunucuya bağlanmak için aşağıdaki komut yeterli olacaktır. (Komuttan sonra gene şifremizi gireceğiz.) bash> mysql -u user -p
MYSQL Mysql Sunucusundan Ayrılmak Mysql sunucusundan ayrılmak için aşağıdaki komutu çalıştırmak yeterli olacaktır. Unix işletim sisteminde CTRL+D ye basmak da aynı işin görülmesine neden olur. mysql> QUIT
Mysql Sorgu Komutları Komutlar Basit bir sorgu komutu aşağıda verilmektedir. Sorgu komutundan sonra ; kullanıldığına dikkat edelim. mysql> SELECT VERSION(), CURRENT_DATE; +-----------------+--------------+ VERSION() CURRENT_DATE +-----------------+--------------+ 5.1.2-alpha-log 2011-09-09 +-----------------+--------------+ 1 row in set (0.01 sec) mysql>
Mysql Sorgu Komutları Komutlar Aşağıdaki yazımların hepsi doğrudur. Büyük harf küçük harf duyarlılığı sözkonusu değildir. mysql> SELECT VERSION(), CURRENT_DATE; mysql> select version(), current_date; mysql> SeLeCt version(), current_date;
Mysql Sorgu Komutları Komutlar Aşağıdaki komutla Mysql i basit bir hesap makinesi gibi kullanabiliriz. mysql> SELECT SIN(PI()/4), (4+1)*5; +------------------+---------+ SIN(PI()/4) (4+1)*5 +------------------+---------+ 0.70710678118655 25 +------------------+---------+ 1 row in set (0.02 sec)
Mysql Sorgu Komutları Komutlar Birden fazla komutu da aynı anda çalıştırabiliriz (Aralarında mutlaka ; olmalı) ql> SELECT VERSION(); SELECT NOW(); +-----------------+ VERSION() +-----------------+ 5.1.2-alpha-log +-----------------+ 1 row in set (0.00 sec) +---------------------+ NOW() +---------------------+ 2005-10-11 15:15:00 +---------------------+ 1 row in set (0.00 sec)
Mysql Sorgu Komutları Komutlar Komutların mutlaka tek satırda yazılması gerekmez. Mysql komutları çalıştırmak için satır sonunu değil noktalı virgülü arar. mysql> SELECT -> USER() ->, -> CURRENT_DATE; +---------------+--------------+ USER() CURRENT_DATE +---------------+--------------+ jon@localhost 2005-10-11 +---------------+--------------+
Bir veritabanı yaratmak ve kullanmak Veritabanlarını Göstermek Sistemdeki tüm veritabanlarını görüntülemek için, SHOW komutu kullanılır. mysql veritabını kullanıcı hakları ile ilgili bir veritabanıdır. test veritabanı ile kullanıcıların kullanabilecekleri bir vertabanıdır. mysql> SHOW DATABASES; +----------+ Database +----------+ mysql test +----------+
Bir veritabanı yaratmak ve kullanmak Veritabanlarını Göstermek Sistemdeki tüm veritabanlarını görüntülemek için, SHOW komutu kullanılır. mysql> SHOW DATABASES; +----------+ Database +----------+ mysql test +----------+
Bir veritabanı yaratmak ve kullanmak Veritabanlarına Erişmek Sunucunuzda test veritabanı varsa USE komutu ile erişin. USE da QUIT gibi ; gerektirmez. ki tüm veritabanlarını görüntülemek için, SHOW komutu kullanılır. mysql> USE test Database changed
Bir veritabanı yaratmak ve kullanmak Veritabanlarına Erişmek Sonraki örnekler için test veritabanını kullanabilirsiniz, ancak genellikle test veritabanına herkesin erişimi vardır ve bu veritabanında yaptıklarınız başka kullanıcılar tarafından silinebilir. Sistem yöneticisi sizin için kullanici1 ismindeki veritabanı ile ilgili tüm hakları versin: mysql> GRANT ALL ON kullanici1.* TO -> your_mysql_name @ your_client_host ;
Bir veritabanı yaratmak ve kullanmak Veritabanlarına Erişmek Eğer sistem yöneticisi sizin için kullanici1 isminde bir veritabanı açmışa onu kullanabilirsiniz. Aksi durumda aşağıdaki şkilde kendi veritbanınızı oluşturabilirsiniz. mysql> CREATE DATABASE kullanici1; Veritabanını açtıktan sonra mutlaka ona USE komutu ile erişmelisiniz. mysql> USE kullanici1;
Tablo Yaratmak Kendi veritabanınıza eriştikten sonra onun içindeki tabloları görebilirsiniz. Eğer veritabanınız yeni oluşmuşsa elbette herhangi bir tablo bulunmayacaktır. mysql> SHOW TABLES; Empty set (0.00 sec)
Veri Tipleri Tablodaki her alan Alan adı Veri tipi Alan adı özelliğine sahiptir Tinyint, Smallint, mediumint, int, bigint float double decimal bit
Veri Tipleri Char Varchar Date, Time, Year Datetime, Timestamp Enum, Set
Veri Tipleri Alan özellikleri Null or Not null Default Auto increment
Tablo Yaratmak Evcil hayvanlarınızın kayıtlarını tutacağınız bir tablo yaratalım. Tabloda, evcil hayvanlarınızın adları, doğum tarihleri, evcil hayvanların sahipleri, doğum tarihleri, ölüm tarihleri, türleri olsun. Veri tipi olarak VARCHAR, DATE ve CHAR kullanacağız. mysql> CREATE TABLE hayvanlar (isim VARCHAR(20), -> sahip VARCHAR(20), tur VARCHAR(20), ->cinsiyet CHAR(1), dogum DATE, olum DATE);
Tablo Yaratmak Şimdi tabloları görüntüleyelim. mysql> SHOW TABLES; +---------------------+ Tables in kullanici1 +---------------------+ hayvanlar +---------------------+
Tablo Yaratmak Tablo özellliklerini görelim: DESCRIBE komutunu sözgelimi tablodaki alan adlarını unuttuğumuzda kullanabiliriz. mysql> DESCRIBE hayvanlar; +---------+-------------+------+-----+---------+------- Field Type Null Key Default Extra +---------+-------------+------+-----+---------+------- isim varchar(20) YES NULL sahip varchar(20) YES NULL tur varchar(20) YES NULL cinsiyet char(1) YES NULL dogum date YES NULL olum date YES NULL +---------+-------------+------+-----+---------+-------
Tabloya Veri Girilmesi Tabloya girilecek veriler aşağıdaki gibi olsun: isim sahip tur cinsiyet dogum olum mirnav Oguzhan kedi e 2008-02-04 lisa Ahmet kopek k 2005-04-05 messi Ayse kopek e 2008-09-01 lessie Mithat kopek e 2000-02-04 2009-09-17 cikcik Ugur kus e 2009-09-22
Tabloya Veri Girilmesi Bu verileri bir çırpıda girmek için bulunduğumuz dizinde veriler.txt isimli bir dosya yaratalım. Verileri satır satır, her alanda bir TAB tuşu kullanarak oluşturalım. Sözegilimi mirnav için aşağıdaki satır kullanılır. Boş bırakılacak alan için NULL simgeleyen \N kullanıldığına dikkat edelim. mirnav Oguzhan kedi e 2008-02-04 \N
Tabloya Veri Girilmesi Dosyayı uygun bir biçimde oluşturduktan sonra mysql de aşağıdaki komut çalıştırılır. mysql> LOAD DATA LOCAL INFILE /path/veriler.txt -> INTO TABLE hayvanlar;
Tabloya Veri Girilmesi Tabloya veri girilmesinin bir başka yolu da doğrudan mysql komut satırını kullanmaktır. mysql> INSERT INTO hayvanlar -> VALUES ( pufidik, Asli, kedi, f, -> 1999-03-30,NULL); Ya da girilecek tüm veriler yukarıda verilen biçimde bir dosyaya yazılır ve mysql -u kullaniciadi -p dosya.txt şeklinde çalıştırılır.
Tablodan Veri Çekilmesi Tablodan veri çekmek için SELECT komutu kullanılır. Bir tablodaki tüm veriyi görüntülemek için: mysql> SELECT * from hayvanlar; Yazılabilir bu komut tabloda varolan tüm bilgileri ekrana getirecektir.
Tablodan Veri Çekilmesi Tablodan sadece bir veriyi çekmek için. Aşağıdaki komutla Oguzhan ın sahip olduğu hayvanları tablodan çekiyoruz. mysql> SELECT * from hayvanlar WHERE sahip= Oguzhan ;
Tablodan Veri Çekilmesi Aşağıdaki komutla Oguzhan ın sahip olduğu hayvanların isimlerini tablodan çekiyoruz. mysql> SELECT isim from hayvanlar WHERE ->sahip= Oguzhan ;
Tablodan Veri Çekilmesi Aşağıdaki komutla doğum tarihi 1999-01-01 den büyük olan verileri ekrana getiriyoruz. mysql> SELECT * from hayvanlar WHERE -> dogum>= 1998-1-1 ;
Tablodan Veri Çekilmesi Aşağıdaki komutla tüm dişi köpeklerin verilerini ekrana getiriyoruz. SELECT * FROM hayvanlar WHERE tur = -> kopek AND cinsiyet = k ;
Tablodan Veri Çekilmesi Aşağıdaki komutla erkek kedilerin ya da dişi köpeklerin verilerini ekrana getiriyoruz. mysql> SELECT * FROM hayvanlar WHERE (tur = -> kedi AND cinsiyet = e ) -> OR (tur = kopek AND cinsiyet = k );
Tablodan Veri Çekilmesi Aşağıdaki komutla tüm hayvanların isimlerini ve doğum tarihlerini ekrana getiriyoruz. mysql> SELECT isim, dogum FROM hayvanlar;
Tablodan Veri Çekilmesi Aşağıdaki komutla tüm hayvanları doğum tarihlerine göre sıralayıp ekrana getiriyoruz. mysql> SELECT isim, dogum FROM hayvanlar ORDER -> BY dogum; Bu komut ise ters yönde sıralama yapar. mysql> SELECT isim, dogum FROM hayvanlar ORDER -> BY dogum DESC;
Tablodan Veri Çekilmesi Aşağıdaki komutla tüm hayvanları türlerine göre alfabetik olarak sıralarken, türleri kendi içinde doğum tarhlerine göre azalan biçimde sıralıyoruz. mysql> SELECT isim, tur, dogum FROM hayvanlar -> ORDER BY tur, dogum DESC;
Tablodan Veri Çekilmesi Aşağıdaki komutla tüm hayvanların yaşlarını hesaplayarak yas ismindeki bir alanda gösteriyoruz. mysql> SELECT isim, dogum, CURDATE(), -> (YEAR(CURDATE())-YEAR(dogum)) -> AS yas -> FROM hayvanlar; Aşağıdaki ifadenin farkı nedir? mysql> SELECT isim, dogum, CURDATE(), -> (YEAR(CURDATE())-YEAR(dogum)) -> - (RIGHT(CURDATE(),5)<RIGHT(dogum,5)) -> AS yas -> FROM hayvanlar;
Tablodan Veri Çekilmesi Aşağıdaki komutla tüm hayvanların yaşlarını hesaplayarak yas ismindeki bir alanda gösteriyoruz (alfabetik olarak sıralıyoruz). Yaşa göre nasıl sıralarız? mysql> SELECT isim, dogum, CURDATE(), -> (YEAR(CURDATE())-YEAR(birth)) -> - (RIGHT(CURDATE(),5)<RIGHT(birth,5)) -> AS yas -> FROM hayvanlar ORDER BY isim;
Tablodan Veri Çekilmesi Aşağıdaki komutla ölmüş hayvanların yaşlarını hesaplayarak yas ismindeki bir alanda gösteriyoruz (yaşa göre sıralıyoruz). mysql> SELECT isim, dogum, olum, -> (YEAR(olum)-YEAR(dogum)) - (RIGHT(olum,5) -><RIGHT(dogum,5)) -> AS yas -> FROM hayvanlar WHERE olum IS NOT NULL ORDER BY yas; Aşağıdaki komutla tüm hayvanların isimlerini, doğum tarihlerini, ve doğum aylarınıalıyoruz. mysql> SELECT name, birth, MONTH(birth) FROM pet;
Tablodan Veri Çekilmesi Aşağıdaki komutla Mayıs ayında doğan hayvanları buluyoruz. mysql> SELECT isim, dogum FROM hayvanlar WHERE -> MONTH(dogum) = 5;
Tablodan Veri Çekilmesi Aşağıdaki komutla ismi m harfi ile başlayan hayvanları buluyoruz. mysql> SELECT * FROM hayvanlar WHERE isim LIKE m% ; İsmi av harfleri ile biten hayvanları bulmak için: mysql> SELECT * FROM pet WHERE name LIKE %av ; İsminde r harfi bulunan hayvanları bulmak için: mysql> SELECT * FROM pet WHERE name LIKE %r% ; İsminde 4 karakter bulunan hayvanlar için: mysql> SELECT * FROM pet WHERE name LIKE ;
Tablodan Veri Çekilmesi Unix regular expression lar da kullanılabilir. mysql> SELECT * FROM hayvanlar WHERE isim REGEXP ^b ; İsmi av harfleri ile biten hayvanları bulmak için: mysql> SELECT * FROM pet WHERE isim REGEXP İsminde r harfi bulunan hayvanları bulmak için: mysql> SELECT * FROM pet WHERE isim REGEXP r ; İsminde 5 karakter bulunan hayvanlar için: av$ ; mysql> SELECT * FROM pet WHERE name LIKE ^...$_ ; ya da mysql> SELECT * FROM pet WHERE name LIKE ^.{5}$_ ;