MySQL’de Collation’lar

UTF-8 bildiğiniz üzere çok geniş bir karakter setini destekliyor. Peki utf8_turkish_ci, utf8_general_ci, utf8_unicode_ci gibi collation’lar ne işe yarıyor?

Collation aslında tablodan select yaparken, tabloyu sıralarken ya da tablolar arasında join yaparken işimize yarayan bir şey. Hangi karakterlerin hangi karakterlerle aynı şeyi ifade ettiğine mysql bu bilgilere göre karar veriyor (collation tablosuna göre).

Okumaya devam et “MySQL’de Collation’lar”

MySQL tablo yapılarında sayısal değerlerin yanındaki uzunluk ne işe yarıyor

MySQL tablo yapılarına baktığımızda tinyint(4) gibi değerler görüyoruz. Ya da int(11), bigint(20)

tinyint’in boyutu standart olarak 0-255 arası sayıları kapsıyor (unsigned ise eğer). Dolayısıyla tinyint(4) ‘nin anlamı kapasite ile alakalı olmamalı.

Okumaya devam et “MySQL tablo yapılarında sayısal değerlerin yanındaki uzunluk ne işe yarıyor”

SQL ile tekrarlı kayıtları silmek

MySQL tablosundan tekrarlı kayıtların nasıl silineceği hakkında bilgi vereceğim. Tekrarlı kayıtları silmek disk alanından kazanmayı ve sorguların daha hızlı çalışmasını sağlar.

Okumaya devam et “SQL ile tekrarlı kayıtları silmek”

tinyMy ve DBKiss: single PHP file db browser

tinyMy, MySQL veritabanlarını yönetmek için hazırlanmış küçük bir PHP betiğidir. tinyMy tek bir PHP dosyasından oluşan çok küçük ve basit bir betik.

Genellikle web üzerinden MySQL veritabanlarını yönetmek için phpMyAdmin kullanılsada bazı durumlarda phpMyAdmin biraz fazla gelebilmekte. phpMyAdmin birçok özelliği bünyesinde barındırıyor, çok fazla dosyadan oluşuyor ve bazen bu dosyaların boyutu ve kodların çokluğu sunucu başarımı açısından sorun teşkil edebiliyor. Ayrıca dial-up gibi düşük bir bağlantı söz konusu olduğunda biraz konfor kaybı olabiliyor. Çok fazla beklentiniz yoksa tinyMy size göre.

Okumaya devam et “tinyMy ve DBKiss: single PHP file db browser”

MySQL ile bir tablonun kopyasını üretmek

Bir MySQL tablosunun üzerinde denemeler yapmadan önce onu yedeklemelisiniz. Yedek üzerinde çalışmak herzaman güzel bir davranıştır. Aşağıdaki SQL komutu ile çalışacağınız tablonun yedek olacak bir kopyasını üretebilirsiniz.

CREATE TABLE yedek_tablo SELECT * FROM asil_tablo

Eğer tablonuzda çok fazla veri varsa sadece asıl tablonun belirli satırlarından meydana gelen yedek bir tablo oluşturabilirsiniz. Bunun için aşağıdaki SQL cümlesini kullanabilirsiniz.

CREATE TABLE yedek_tablo
SELECT * FROM asil_tablo WHERE alan1='deger' LIMIT 0, 10000;

Yukarıdaki SQL’de asil_tablo’nun alan1 adlı alanında ‘deger’ verisi olan ilk 10,000 kayıt ile yedek_tablo oluşturuluyor.

Hertürlü projeniz için: EmbededMySQL

Projelerinizde gömülü olarak kolayca kullanabileceğiniz bir MySQL paketi hazırladım. Google’un bile kullandığı MySQL,herzaman performansı ve rahat kullanımıyla dikkat çeker. Ticari olmayan projelerdeki kullanımında herhangi bir kısıtlama olmayan MySQL veri tabanı sunucusunu, kolay bir şekilde her türlü projenizde kullanabilirsiniz.

Okumaya devam et “Hertürlü projeniz için: EmbededMySQL”

ZEOSDBO Select * from hatasını gidermek

ZEOSDBO-6.6.2-rc ile ZQuery1.SQL.Add(‘select * from links’); sorgusunu çalıştırıp  ZQuery1.FieldbyName(‘title’).AsVariant; ile veriyi almaya calıştığımda aşağıdaki hata mesajını alıyordum;

Application raised an exception class EZSQLException with mesage ‘Column with name “Extra” was not found”

Okumaya devam et “ZEOSDBO Select * from hatasını gidermek”

MySQL: INSERT DELAYED

MySQL’in birdiğer güzel özelliği de Insert delayed. Burada yazdığına göre; Insert delayed, bir insert sorgusunun tamamlanmasını beklemeye gerek bırakmıyor. Genellikle log’lama uygulamalarında diğer select ve update sorgularından oluşan iş akışını duraksatmamasından dolayı kullanılan bir MySQL özelliği. Insert delayed ile insert sorguları, tablonun uygun olduğu bir anda eklenmek üzere belleğe alınır.

Başka bir güzel özelliğide birçok istemciden gelen insert delayed isteklerinin topluca tabloya yazılması. Bu birçok bağımsız insert’den daha hızlı gerçekleşir.

Tablo kullanımda olmasa bile, insert delayed normal insert’den daha yavaştır. Sunucu insert delayed ‘lerin işlem yaptığı tablolarda kuyruk oluşturmak ve uygun zamanı kollamak için bir miktar işlem gücü sarfeder.

SQL-Translator: Veritabanı dönüştürücüsü

SQL-Translator SQL formatında ihraç edilmiş (şimdilik sadece tablo şemasını çevirebiliyor) birçok veritabanını yine SQL formatında birbiri arasında dönüştüren bir perl scripti. Oracle, Sybase, or PostgreSQL gibi veritabanı tablolarını birbirine dönüştürebiliyor. Belki lazım olur.

Microsoft Access Permissions Explorer

PermExpl, Microsoft Access veritabanı (mdb) gibi Microsoft Jet veritabanını motorunu kullanan veritabanları üzerinde ileri düzey yetkilendirmeler yapmaya yarıyor. Kullanıcı ve kullanıcı gruplarını görme ve bu birimlere, tablo ve sorgu gibi nesneler üzerinde okuma, yazma ve oluşturma gibi izinlerin izlenmesini ve değiştirilebilmesini sağlıyor. PermExpl erişim tablosunda hasar oluşmuş veritabanlarına müdahale edilebilmesi açısından ileri düzey kullanıcılara hitap eden bir araç ve dikkatli kullanılması gerekiyor.

SQL için ayrılmış kelime kontrolü

SQL dili her nekadar bir standartta olsa da MySQL, Oracle ve MSSQL gibi farklı veritabanı sunucularında geçerli olabilecek programcı tanımlamaları farklılıklar göstermektedir. Bir kelimenin tablo, alan veya indeks isimleri gibi kullanıcı tanımlı girdilerde kullanılıp kullanılamaycağını bilmek gerekir. Bu sayfadan bir kelimenin en çok kullanılan veritabanı sunucularında kullanılıp kullanılmadığı sorgulanabiliyor.

phpMySQLAutoBackup – Otomatik yedekleme

phpMySQLAutoBackup MySQL veritabanlarının yedeklenmesini otomatik hale getiriyor. PHP script’i veritabanını okuyor (verileri ve yapıları), gzip biçiminde sıkıştırıyor ve belirttiğiniz e-posta adresine gönderiyor. Veritabanı kullanan ve verilerin güncelliğinin önemli olduğu web siteleri için mutlaka bir acil durum planı yapılmalıdır.

Okumaya devam et “phpMySQLAutoBackup – Otomatik yedekleme”

Problem: PhpMyAdmin ile veri yükleme

Büyük sql dosyalarını veritabanı sunucusuna yüklemek bazen sıkıntılı olabiliyor. Benzer sorunu başkalarının da yaşama ihtimalini düşünerek  sorunun çözümü hakkında bilgi vermek istiyorum. Kullandığım hosting firması (site dosyalarını bilgisayarında barındıran firma) MySQL veritabanı sunucusuna doğrudan erişim vermemiş. Yani işlem yapmak için doğrudan veritabanı sunucusuna bağlanamıyorum.Servislere dışarıdan doğrudan erişiminin kapatılması (servisi izin verdiği standart arayüze) sunucu güvenliği açısından çok tercih edilen bir yöntem. Dışarıya nekadar az servis açık olursa güvenlik de o denli yüksek tutulmuş olur.

Büyük sql dosyalarını veritabanı sunucusuna yüklemek bazen sıkıntılı olabiliyor. Benzer sorunu başkalarının da yaşama ihtimalini düşünerek  sorunun çözümü hakkında bilgi vermek istiyorum. Kullandığım hosting firması (site dosyalarını bilgisayarında barındıran firma) MySQL veritabanı sunucusuna doğrudan erişim vermemiş. Yani işlem yapmak için doğrudan veritabanı sunucusuna bağlanamıyorum.Servislere dışarıdan doğrudan erişiminin kapatılması (servisi izin verdiği standart arayüze) sunucu güvenliği açısından çok tercih edilen bir yöntem. Dışarıya nekadar az servis açık olursa güvenlik de o denli yüksek tutulmuş olur.

Okumaya devam et “Problem: PhpMyAdmin ile veri yükleme”