CategoryVeritabanı

MySQL Veri Tipi Dönüştürme

M

Merhabalar,

Hazırladığım Windows Forms tabanlı bir proje de MySQL veritabanından gelen 0 ve 1 değerlerini “iletildi” ve “iletilmedi” şeklinde dönüştürmem gerekiyordu. Bunun için devexpress gridinde bulunan repository özelliğinden faydalanacaktım. Neredeyse tüm int/byte tiplerini denememe rağmen devexpress gelen değeri tanıyamadı ve replace (değiştirme) işlemini yapamadı. Çözüm ise gelen değeri string’ e çevirerek ve string karşılaştırma yaparak buldum.

MySQL’ deki çevirme işlemi için CAST fonksiyonundan yararlandım, kullanımı aşağıdaki gibidir.

[sql]CAST(kolon_adi AS yeni_veri_tipi) AS yeni_kolon_adi[/sql]

Örneğin durum adında integer türünde bir kolonumuz var ve gelen değeri string e çevirmek istiyoruz;

[sql]CAST(durum AS CHAR) AS durum2[/sql]

Aşağıdaki listeden dönüştürebileceğiniz veri tiplerine bakabilirsiniz.

  1. BINARY[(N)]
  2. CHAR[(N)]
  3. DATE
  4. DATETIME
  5. DECIMAL[(M[,D])]
  6. SIGNED [INTEGER]
  7. TIME
  8. UNSIGNED [INTEGER]

MySQL Apply Security Settings Error 1045

M

Windows Server 2008 üzerinde mevcut mysql ayarlarımı değiştirmek nedeniyle komple MYSQL’ i kaldırdım. Tekrar kurmak istediğimse ise yukarıdaki saç baş yolduran hata ile karşılaştım :)

1. Prepare configuration (pass)
2. Write configuratin file (pass)
3. Start service (pass)
4. Apply security setting (failed)

işleminde hata vermekteydi.

Çözüm olarak;

1. MySQL’ i komple siliyoruz.
2. C:/ProgramFiles/MySQL dizinini komple siliyoruz.
3. C:/ProgramData/MySQL dizinini komple siliyoruz. (Gözükmüyorsa gizli dosyaları göstermeniz gerekmektedir.)
4. Denetim Masası > Windows Firewall dan MySQL’ i kaldıracağız, bu sayede 3306 portu boşa düşecek.

Yukarıdaki adımları yaptıktan sonra tekrar MySQL kurulumunuzu yapabilirsiniz.

MySQL Tablo Sıfırlama

M
[sql]TRUNCATE table TabloAdı[/sql]

komutu ile tablo içerisindeki herşeyi silip ID değerinin 0 (sıfır) dan başlamasını sağlayabilirsiniz. Tablo yeniden yaratılmış gibi ilk haline dönecektir.

Microsoft Access Veri Türleri

M

Microsoft Access güçlü bir veritabanı olmasa da ufak çaptaki projeler için oldukça kullanışlı bir veritabanıdır. Eğer Access üzerinde büyük miktarlarda veri tutacaksak veritabanımızın tablo yapısını iyi bir şekilde düzenlememiz gerekir. Aksi taktirde proje büyüdükçe Access’ in gücü de bu oranda düşecektir.

İyi bir tablo yapısı için hangi kolonlarda hangi veritürlerini kullanacağımızı ve bu veri türlerine ne kadar yer ayıracağımızı iyi hesaplamamız gerekir. Örneğin bir üyenin üyeliğinin durumunu tuttuğumuz (aktif/pasif) bir kolonda değerleri aktif, pasif değilde “Sayı” formatında 0 – 1 şeklinde tutmamız tablodaki satır sayısı arttıkça veritabanının yavaşlamasına engel olacaktır. Aynı şekilde bir üyenin cep telefonu numarasını “Metin” olarak tutmamız daha avantajlı olacaktır.

Yukarıda da belirttiğim gibi bir tablo yapısı için veri türlerini iyi bilmek gerekir, bu makalemde de Microsoft Access veritabanındaki veritabanı türlerine değineceğim.

(daha&helliip;)

Database .NET Çoklu Veritabanı Yöneticisi

D

Database .NET çoklu veritabanı yöneticisi ile hemen hemen tüm veritabanlarını sorunsuz olarak yönetebilirsiniz. Sql Management Studio, PLSQL yada Navicat kadar iddalı olmasa da boyutunun ufak olması ve kurulum gerektirmeden çalışması (portable) acil ihtiyaçlar halinde yardımcı oluyor.

Ayrıca Microsoft Access veritabanını kullanıyorsanız eğer Access’ in kendi yöneticisinden çok daha kullanışlı olduğunu fark edeceksiniz. Access’ de sorgu çalıştırmak için binbir türlü çaba gerekirken bu program ile diğer veritabanı yöneticilerindeki rahatlığı bulabiliyorsunuz.

Program Türkçe dahil bir çok dil desteği ile birlikte geliyor.

Desteklediği veritabanı türleri:
Access, Excel, dBASE, Firebird, MySQL, SQL Server, SQL Azure, SQLCe, SQLite, PostgreSQL, Oracle, DB2, OleDBODBC, OData

Resmi Web Sitesi:
http://fishcodelib.com/Database.htm

MS Access IFNULL Fonksiyonu

M

Daha önceki makalelerimde ORACLE ve MySQL veritabanlarında eğer null ise kontrolünün (if null) nasıl yapılacağını anlatmıştım. Microsoft Access veritabanı içinde aşağıdaki sorguyu kullanabilirsiniz.

Sorguda öncelikle “ogrenciler” tablosunda sıra numarası olan en yüksek öğrenciyi MAX komutunu kullanarak arıyoruz. Eğer tablo boşsa ve null bir değer dönüyorsa “NZ” komutunu kullanarak bunu 0 (sıfır) ile replace (değiştirmek) ediyoruz.

[sql]SELECT NZ(MAX(sira),0) FROM ogrenciler[/sql]

veya

[sql]SELECT Switch(MAX(sira) Is Null,0,MAX(sira) Is Not Null,MAX(sira)) FROM ogrenciler[/sql]

şeklinde kullanabilirsiniz.

MySQL IFNULL Fonksiyonu

M

Merhabalar,

Bu yazımda sıkça kullanmakta olduğum bir MySQL fonksiyonundan bahsedeceğim. Oracle veritabanı ile çalışıyorsanız NVL fonksiyonunu kullanıyorsunuzdur yada duymuşsunuzdur. Bu fonksiyonun amacı veritabanından gelen null değerini istediğimiz bir değere çevirebilmesidir. MySQL’ deki IFNULL fonksiyonunun karşılığıda Oracle’ daki NVL fonksiyonuna denk geliyor.

Kullanım şekli aşağıdaki gibidir.

[sql]SELECT sirano FROM urunler WHERE id=3[/sql]

yukarıdaki sorgumuzda sirano değeri null bir değer geliyor ise hata verecektir. Örneğin sirano değeri null geldiğinde bunu 1 (bir) ile değiştirmek istiyorsak aşağıdaki IFNULL fonksiyonunu kullanabiliriz.

[sql]SELECT IFNULL(sirano,1) FROM urunler WHERE id=3[/sql]

sirano değeri null ise 1 olarak gelecektir.

ORA-02289: sıra mevcut değil (sequence does not exist)

O

Oracle veritabanında sequence tanımlaması yapmadığınız durumlarda aşağıdaki hatayı alırsınız.

Server was unable to process request. —> ORA-02289: sıra mevcut değil

Çözüm için yeni sequence yaratabilirsiniz. Squence yaratmış iseniz INSERT sorgunuzda bu squence’ i kullanmıyor olabilirsiniz.

Veritabanlarında Indexleme Mantığı

V

Piyasada bulunan popüler veritabanlarının tamamında (Mysql, Microsoft SQL, Oracle) index desteği vardır. Eğer büyük boyutlarda veritabanlarıyla çalışıyorsak iyi bir peformans alabilmemiz için index kullanmak zorundayız. Bu yazımda nerelerde index kullanmalıyız, index kullanmanın avantajları ve dezavantajlarından bahsedeceğim.

Index Nedir ?
Index tablolalarınızda bulunan kolonların içerisindeki verilerin belirli bir düzene göre sıralanmasıdır. Bu sıralamanın amacı ulaşmak istediğimiz veriye çok daha hızlı sürelerde ulaşabilmektir. Örneğin aşağıdaki gibi bir sorgumuz olsun.

[sql]SELECT * FROM kullanicilar WHERE isim="Sinan"[/sql]

yukarıdaki sorguda kullanıcılar tablomuzda 100.000 kayıt olduğunu düşünelim. Eğer Sinan isimli kullanıcı 90.000 inci üye ise veritabanımız bu isme ulaşana kadar satır satır sorgulama yapacaktır. 90.000 inci kayıtta bu ismi bulduğunda ise kaydımızı ekrana getirecektir.

Eğer burada index yapısını kullansaydık (daha&helliip;)

Get in touch

Quickly communicate covalent niche markets for maintainable sources. Collaboratively harness resource sucking experiences whereas cost effective meta-services.