
MYSQL DERSLERİ ANASAYFA ÖNCEKİ DERS SIRADAKİ DERS
Konu başlığına tıklayarak detayları görebilirsiniz!!!
SQL dosyaları script olarak (uzantısı .SQL olan dosyalar) saklanır. Scriptler içerisinde tanımlanan tablo (table) adı verilen veri gruplarından oluşur. Tabloları belirli bir şeye ait detay bilgilerinin tutulduğu alanlar olarak düşünebilirsiniz. Örneğin; öğrenci tablomuz var, bu tablonun içerisinde adı, soyadı, numarası, bölümü gibi bilgileri tutabiliriz. Yapacağımız örnekle daha iyi anlyacaksınızdır.
Veritabananımızı (database) oluşturabilmek için DBVisualizer programımızda üst taraftan Scripts'e tıklayıp Bookmarks'a sağ tıklıyoruz ve Create File diyoruz.

Create File dedikten sonra bizden script'imize yani aslında database'imize bir isim vermemizi istiyor. Filmlerle ilgili bir veritabanı oluşturmayı düşündüğümden ben filmdb adını veriyorum. filmdb veritabanımız oluştuktan sonra filmdb.sql dosyasına sağ tıklayarak Open SQL Commander diyoruz ve bize SQL kodlamamızı yapabilmemiz için boş bir sayfa açıyor. SQL kodlarımızı, komutlarımızı, fonksiyonlarımızı bu kısımda yazıyor olacağız.

Artık kurulumlarımız ve diğer işlemler bittiği için yavaş yavaş kodlama ve birşeyler elde etme adına işlemler yapabileceğiz. MySQL kodlama dili normal günlük konuşulan İngilizce'ye çok yakındır. O nedenle İngilizce seviyenize bağlı olarak daha kolay anlayabilirsiniz.
Daha önce de belirttiğimiz üzere tablolar (table) belirli bir kapsamdaki bilgileri tutabilmemiz ve ilerde bunlar üzerinde sorgu yapabilmemiz için bize yardımcı oluyor. Bir tablo oluşturmak için CREATE TABLE (tablo oluştur) komutunu kullanıyoruz ve hemen sonrasında tablomuzun ismini belirtiyoruz. Tablo ismimiz tablonun içeriğini kolay algılayabileceğimiz şekilde belirlenmelidir. Ben filmlerle alakalı bir veritabanı oluşturacağım için tablosuna da filmler adını veriyorum.
CREATE TABLE filmler (
Herhangi bir film için gibi bilgilerin veritabanımda tutulmasını istediğimi alt taraftaki satırlarda belirliyorum. Mesela ben film_id, film_ad gibi bilgilerin olmasını istiyorum. Değişik karakterler kullanmamaya dikkat ederek, istediğiniz şekilde isimlendirme yapabilirsiniz. Şu an çok önemi yok ama bu şekilde alt tire veya tümü büyük harf gibi kullanımlar ilerde yazacağınız programlarda hangi kısmın sql tarafına ait olduğunu ayırt etmenizde size yardımcı olacaktır. film_id alanı sayısal olacaktır. Bu nedenle INT yani integer değer alacağını belirtiyoruz. film_ad alanı text yani yazı, harf veya karakterlerden oluşacaktır. Bu nedenle VARCHAR değeri alacağını belirtiyoruz. Parantez içersindeki değer kaç karakter alabileceğini belirtiyor ama şu an için çok önemli değil. Sonrasında sol üst kısımdan Run yani yeşil play tuşu benzeri tuşa basıyoruz. Bu işlemler sonucunda SYNTAX yani yazımsal bir hata yapmadıysak tablomuz oluşuyor. Eğer ilerde kod yazımında bir hata yaparsak MySQL bize SYNTAX ERROR hatası verip hata ile ilgili ipucu verecektir.
film_id INT, film_ad VARCHAR(255) );

Sol üst taraftan Databases sekmesine tıklayıp veritabanı adımızın altındaki TABLE kısmında filmler adında bir tablo oluştuğunu görüyoruz. Tabloya çift tıkladığımızda da bize tablo hakkında bilgi içeren bir ekran açıyor. Column (Kolon) kısmında tablomuza eklediğimiz alanları (film_id, film_ad gibi) ve detaylı bilgilerini (türü, uzunluğu, atanan özellikler gibi) görebiliyoruz.

Aynı ekranda Data sekmesine tıkladığımızda ise tablomuzdaki alanların yani film_id ve film_ad alanlarının başlıklarını görüyoruz. ama alt satırlarında herhangi bir bilgi görünmüyor. Bu alanlara bilgi eklemek için bir sonraki dersimizde değineceğimiz INSERT INTO komutunu kullanıyoruz.

DROP TABLE ingilizcedeki anlamıyla tablo düşürmeyi sağlayan komuttur. Aslında yaptığı şey tablo silmektir. DROP TABLE 'tablo_adı'; şeklinde kullanılır. Bir sonraki aşamada örneğimizde göreceğiniz gibi DROP TABLE IF EXISTS dediğimizde ise oluşturulmuş ise tabloyu sil şeklinde kullanılır. Amacı bir tabloyu her seferinde sıfırdan oluşturmaktır. Tabi arkasından tekrar CREATE TABLE kullanmak suretiyle. Yoksa sadece tabloyu silip bırakır.
Tablomuzdaki film_id, film_ad gibi kolonlara yeni film bilgisi girişi sağlamak için INSERT INTO komutunu kullanıyoruz. Sonrasında tablo ismimizi yazıyoruz filmler olarak. Ardından VALUES yani bu değerleri gir diyoruz. Daha önce de belirttiğimiz gibi biraz ingilizce günlük diliyle aynı terimler kullanılıyor gibi. Yani filmler tablomuza şu film bilgilerini ekle gibi bir yapı ortaya çıkıyor.
INSERT INTO filmler VALUES (1, 'AVENGERS'); INSERT INTO filmler VALUES (2, 'DOCTOR STRANGE'); INSERT INTO filmler VALUES (3, 'IRON MAN'); INSERT INTO filmler VALUES (4, 'WORLD WAR Z');
Parantez içerisine değerleri eklerken daha önce tanımladığımız türüne (type) dikkat etmemiz gerekiyor. Yoksa hata alırız. Mesela film_id kısmını INT yani sayı olarak tanımladığımızdan parantez içerisinde ilk sürundaki değerlerimiz sayı olmalıdır. film_ad kısmında ise VARCHAR tanımladığımızdan değerlerimiz herhangi bir şey olabilir. Sadece dikkat edilmesi gereken VARCHAR değeri yazarken tırnaklar içerisinde yazmamız gerektiğidir. Ayrıca yukarıda belirlediğiniz sırada değerleri giremeniz gerekiyor. Bu aşamada parantez içerisine film sıra numaralarını ve adlarını giriyorum. Belirttiğim üzere text'ler tırnak içinde olacak şekilde. Normalde konumuza dahil değil ama kodda oluşabilecek tekrarlardan dolayı kafanızın karışmaması için kodumuzun başına DROP TABLE IF EXISTS filmler; dememiz faydalı olacaktır. Bu komut sayesinde tablomuz her seferinde sıfırdan yeniden oluşturulacaktır ve şimdilik sadece bu ders için kullanacağımız bir komuttur.

Ardında yine connection1:filmler bağlantısına tıklayıp Data sekmesine geldiğimde ve Yenile dediğimde girdiğim değerlerin filmle ilgi alanların altına eklendiğini görüyorum

DELETE ile tüm tabloyu değil de sadece belirli kayıtları silme işlemini yapıyoruz. Neyin ne kadarını silmek istediğimizi bağlı olarak bir çok kullanımı vardır. Bunun için DELETE komutuyla beraber çeşitli fonksiyonlar kullanılabilir.
Konumuzu daha iyi anlamamız açısından tablomuza yayin_tarihi, film_tur, ulke ve hasilat gibi yeni alanlar ekleyerek, INSERT INTO kısmında da bu alanlara ait yeni bilgilerin eklemesini yapıyoruz. Eklemelerimizde sadece DATE türünü yeni bir tür olarak görüyoruz. DATE türünde parantezler arasına yazarken dikkat etmemiz gereken husus Amerikan tarih formatı (yıl / gün / ay şeklinde) kullandığımızdır.
DROP TABLE IF EXISTS filmler; CREATE TABLE filmler ( film_id INT, yayin_tarihi DATE, film_ad VARCHAR(255), film_tur VARCHAR (255), ulke VARCHAR (255), hasilat INT ); INSERT INTO filmler VALUES (1, '20120107', 'AVENGERS', 'Action', 'USA', '80000000'); INSERT INTO filmler VALUES (2, '20171205', 'DOCTOR STRANGE', 'Action', 'ENGLAND', '50000000'); INSERT INTO filmler VALUES (3, '20090604', 'IRON MAN', 'Action', 'USA', '78000000'); INSERT INTO filmler VALUES (4, '20110308', 'WORLD WAR Z', 'Drama', 'ITALY', '35000000'); INSERT INTO filmler VALUES (5, '20020506', 'THE PIANIST', 'Drama', 'FRANCE', '15000000'); INSERT INTO filmler VALUES (6, '20050406', 'YES MAN', 'Comedy', 'USA', '295000000'); INSERT INTO filmler VALUES (7, '19980702', 'TOMMY BOY', 'Comedy', 'ITALY', '75000000'); INSERT INTO filmler VALUES (8, '20130609', 'THE CONJURING', 'Horror', 'FRANCE', '45000000');
Biz örneğimizde film_id'si üçten küçük olan kayıtları sil diyecğeiz yani ilk iki filmi. SQL aşağıdaki kod doğrultusunda sadece onları silecektir.
DELETE FROM filmler WHERE film_id < 3


