Get Adobe Flash player

Veri Tabanı

MyISAM tablolarını INNODB’ye topluca çevirmek

Umarım işinize yarar.

<?php 
 // Veritabanına bağlantı yapılıyor
$vthost = 'localhost';
$vtkullanici = 'root';
$vtsifre = '';

$baglanti = mysql_connect($vthost, $vtkullanici, $vtsifre) or die ('MySQL Baglanti Hatasi');
$vtismi = 'veritabani';
mysql_select_db($vtismi);

// İş yapan kodumuzun başlangıcı
$sql = "SHOW tables";
$rs = mysql_query($sql);
while($satir = mysql_fetch_array($rs))
{
$tbl = $satir[0];
$sql = "ALTER TABLE $tbl ENGINE=INNODB";
mysql_query($sql);
echo "".$tbl;
}
echo " Tamamlandı.";
?>
Share

SQL’de limit ile belli bir adet çekilen kaydı sıralamak.

Tablomuzdan 10 adet ile sınırlı veri çekmek istediğimizi varsayalım. Bu çektiğimiz verileri belli bir kritere göre sıralamak istiyoruz. sorgumuza ORDER BY ile bir kriter eklersek, bu kriteri uyguladıktan sonra 10 adet kayıt getireceği için istediğimiz sonuç dönmeyecek. Bizim istediğimiz, 10 adet kayıt çekelim, sonra bu kayıtları sıralayalım. Bunun için aşağıdaki gibi bir sorgu yazmamız gerekiyor.

select * from (SELECT * FROM `tablo` order by id limit 10) aliastablo order by kriter

sorguyu açıklayacak olursak,  SELECT * FROM `tablo` order by id limit 10 kısmı ile ilk 10 kaydı çekiyoruz, bunu aliastablo isimli bir tablo olarak isimlendiriyoruz. Böylece 10 kayıttan oluşan bir sanal tablomuz oluyor. Bu tablomuzda da ORDER BY işlemini uyguluyoruz.

Çözüm için Mesut Uğurlu’ya teşekkür ederim.

Share

SQL Gelir Gider Hesabı Sorgusu

Soru :

Sadeleştirilmiş şekli aşağıdakine benzer bir tablom var.

Tip Tutar Grup
1 100 1
1 200 2
0 23 1
1 16 1
0 110 2

Tip 1 ise gelir
Tip 0 ise gider

Gruplara göre tek seferde gelir toplamı, gider toplamı ve bakiyeyi SQL ile
nasıl alabilirim ?

yani

Grup Gelir Gider Bakiye
1 116 23 93
2 200 110 90

gibi sonuç döndüren bir sorgu lazım. Nasıl yapılır?

Devamını okuyun »

Share

MsSql I/O sorunu çözümü

MSSQL veri tabanı kullanırken okuma yazma hatası ile karşılaşırsanız, bu kodlar çok işinize yarayacak.

Genellikle backup komutu ile ya da kopyalayarak yedekleme işlemi yapmak istediğinizde farkında olduğunuz okuma yazma hatasını bu şekilde çözebilirsiniz.

Öncelikle aşağıdaki kod ile veritabanındaki hataları kontrol ediyoruz.

DBCC CHECKDB ('veritabaniismi')

Sonra veritabanını tek kullanıcılı moda almamız gerekiyor.

alter database veritabaniismi set SINGLE_USER with No_Wait

daha sonra onarım işlemini başlatıyoruz.

DBCC CHECKDB ('veritabaniismi', repair_allow_data_loss)

İşlem tamamlandıktan sonra çok kullanıcı moda geçiş yapıyoruz.

alter database veritabaniismi set MULTI_USER WITH No_Wait
Share

Son girilen personel sayısı

Bir arkadaşım SQL ile ilgili bir soru sorunca, sık sık karşılaştığım SQL soru ve cevaplarını bir başlık altında toplayayım, belki birilerine faydası olur diye düşündüm.

id firma_id personel_sayisi
1 1 10
2 2 104
3 1 5
4 3 40
5 2 50
6 3 10

Yukarıdaki tablo örneğindeki gibi kayıtlar var. Bu kayıtlardan firma_id tekrar edebiliyor ama firmaların en son personel sayısını listelemek istiyorum. Her firmanın en son kaç personeli var? Devamını okuyun »

Share

MsSQL log dosyalarını temizleme

MsSQL’de LDF uzantılı log dosyalarının boyutu büyüdükçe performansta azalma olmaktadır. Bu sorunu çözmek için uzun uğraşlar vermek yerine, basit birkaç SQL sorgusu ile log dosyasını temizleyebiliriz. Öncelikle her önemli sorgu öncesinde olduğu gibi bu işlemden önce de veritabanı yedeğini almanızı tavsiye ediyorum. Sonra sırası ile aşağıdaki sorguları çalıştırarak log dosyamızı temizleyebiliriz.

backup log VERiTABANIiSMi with truncate_only
DBCC SHRINKDATABASE (VERiTABANIiSMi, NOTRUNCATE)
DBCC SHRINKDATABASE (VERiTABANIiSMi, TRUNCATEONLY)
Share

ezSQL Veritabanı Sınıfı

ezSQL PHP scriptlerinizde veritabanınızı (MySQL / Oracle8/9 / interBase / FireBird / PostreSQL / MS-SQL / SQLite / SQLite c++) kullanmanızı hızlandıran ve kolaylaştıran bir PHP sınıfı. Oldukça da güçlü bir sınıf olup, WordPress’in veritabanı alt yapısını da oluşturuyor. Sınıfın genel özellikleri şunlar;

•Scriptinizin başında include ettiğiniz tek bir dosyadan oluşur. Ardından standart PHP veritabanı fonksiyonları erine daha kısa ve anlaşılır ezSQL fonksiyonlarını kullanabilirsiniz.
•ezSQL otomatik olarak sorguları önbelleğe alır ve kolayca kullanabilmenize izin verir ayrıca da sunucuya ekstra yük bindirmez.
•SQL sorgunuzu kontrol etmek (debug) etmeniz için harika fonksiyonlar sunar.
•ezSQL fonksiyonlarının birçoğu Object (Nesne), Associative Arrays (Bağımlı Diziler) veya Numerical Arrays (Sayısal Diziler) şeklinde sonuç döndürebilirler.
•Kod geliştirme sürenizi ve kod satır sayınızı oldukça düşürür, kodlarınızı hızlandırır, veritabanı sorgularınızı optimize etmenizi ve hata kontrolünüzü kolaylaştırır.
•ezSQL küçük bir sınıftır ve web sitenize yük bindirmez.

Devamını okuyun »

Share

Bigdump Veritabanı Yükleme Scripti

Bigdump betiği büyük çaplı veritabanı yedeklerinizi yeniden veritabanına yüklemenize yardım eder. Normal bir yükleme işleminde (büyük bir dosyadan bahsediyorum) veritabanında yüzlerce sorguyu çalıştırmak zaman alacağı için “time limit exceeded” şeklinde bir hata alırsınız ve işleminiz yarıda kalır. Bahsettiğim tek bir php dosyasından oluşan betik sayesinde ise belirli bir satır sayısı belirliyorsunuz ve her defasında kaldığı yerden devam ederek belirttiğiniz kadar satırı veritabanında çalıştırıyor. Bu işlemi yaparken sayfayı otomatik olarak tekrar tekrar yüklüyor. Tabi sayfanın sürekli tekrar yüklenmesi bir süre sonra”permission denied” hatası almanıza sebep olur. Ama buna da çözüm getirilmiş ve betiğe dahil edilen bir ayarla her işlemden sonra sunucuyu dinlendirmek için ne kadar bekleyeceğini belirtme fırsatı verilmiş.
Devamını okuyun »

Share

php ile veritabanı yedeğini almak

Php ile veri tabanı yedeğinizi alabilirsiniz. Hatta bu işi cronjob ile otomatikleştirebilirsiniz. İşte gerekli olan php kodu.

Devamını okuyun »

Share

Linux’de Mysql Root Şifresi Oluşturma

MYSQL Root Şifresi Oluşturma

sisteminizi kurdunuz. mysql giris yapiyorsunuz ama size sifre filan sormuyor. Bu buyuk bir guvenlik acigidir. Bunun için mysql bir sifre koymaliyiz (genede siz bilirsiniz) Devamını okuyun »

Share