AyhanBaris.com Yazılım Mühendisi » MySQL

Archive for the 'MySQL' Kategori

Linux’da shell’den MySQL ‘ e data import etme iÅŸlemi için :
mysql sunucu : localhost
veritabanı adı : lyrics
yedeklenmiÅŸ mysql verisi : lyrics.sql

# mysql -p -h localhost lyrics < lyrics.sql

unutmadan bunun birdedump edeh hali var , o da şöyle:

#Â mysqldump lyrics > lyrics.sql

phpMyAdmin 2.11 versiyonundan itibaren soldaki tablo listesine limit eklenmiş. Bu değer varsayılan olarak 250 tablo, 250 üzeri tablosu olan bi veritabanınız varsa sayfalama seceneği aktif oluyor. Bir sayfafa goruntulenecek tablo sayısını arttırmak için config.inc.php dosyasına $cfg['MaxTableList'] = 400; satırını ekleyin.

MySQL 5 versiyonu itibari ile sorgularda Regular Expressions kullanılabiliyor.

Mesela:
SELECT * FROM personel WHERE isim REGEXP ‘^$ilk_harf’
(siz select * from sendromuna kapılmayın sadece ihtiyacınız olan alanları çekin)

Daha detaylı bilgi için bu adresten faydalanabilirsiniz.

Sphinix projesi 2001 yılında baÅŸlamış full-text aramalara hız katan bir arabirimdir. Sphinix kelimesi “SQL Phrase Index”den türemiÅŸtir, GPL lisansı ile dağıtılır. Yazarı Andrew Aksyonoff, Rus asıllı bir yazılımcıdır.

PHP, MySQL ile entegre edilerek büyük verilerde çok hızlı arama işlemi yapar ve sitenize hız katar.

MySQL de SQL sorgularını kullanarak veritabanınızı UTF8′e çevirebilirsiniz.

1- Veritabanını çevirmek için:

ALTER DATABASE veritanabi_adı
 CHARACTER SET utf8
 DEFAULT CHARACTER SET utf8
 COLLATE utf8_general_ci
 DEFAULT COLLATE utf8_general_ci
 ;

(more…)

Sevgili PHP programcısı arkadaşlar ,

Bir an önce UTF8 e geçmenizi tavsiye ederim. UTF8 açık kaynak kodlama standardı olma yolunda emin adımlarla yürüyor.

Sebeplerine gelince :
- Sayfada aynı anda Türkçe, Rusça, İngilizce yazı yazabilme.
- Web sitesine esnek dil desteÄŸi verebilme.
- PHP kodların farkli serverlarda, işletim sistemlerinde dil sorunu cıkarmaması.
- ve benzeri söylenebilir…

(more…)

Karşılaştırma Operatörleri

a = 5 :a 5 e eÅŸit ise

a < 5 :a 5ten küçük ise

a > 5 :a 5ten büyük ise

a <> 5 :a 5e eÅŸit deÄŸil ise

a>=5 :a 5ten büyük yada 5e eşit ise

a<=5 :a 5ten küçük yada 5e eşit ise

(more…)

MySQL Veritabanında tarih, saat deÄŸerini timestamp olarak tutuyorsanız sık sık timestapm’ı anlaşılır, okunabilir tarih ve saat deÄŸerine çevirmeniz gerekebilir. Delphi’de yaptığım bu ufak .exe programcık ile bu dönüştürme iÅŸine hız katabilirsiniz.

Programı indirmek için tıklayın. (180kb)

timestamp_donusturucu.gif

TEXT - YAZI
CHAR( ) : Sabit 0 - 255 karakter.
VARCHAR( ) : DeÄŸiÅŸken 0 - 255 karakter.
TINYTEXT : En Fazla 255 karakter.
TEXT : En Fazla 65.535 karakter.
BLOB : En Fazla 65.535 karakter.
MEDIUMTEXT : En Fazla 16.777.215 karakter.
MEDIUMBLOB : En Fazla 16.777.215 karakter.
LONGTEXT : En Fazla 4.294.967.295 karakter.
LONGBLOB : En Fazla 4.294.967.295 karakter.

SAYILAR
TINYINT( ) : -128 ,127 yada 0-255 UNSIGNED.
SMALLINT( ) : -32.768 ,32.767 yada 0 – 65.535 UNSIGNED.
MEDIUMINT( ) : -8.388.608 , 8.388.607 yada 0 – 16.777.215 UNSIGNED.
INT( ) : -2.147.483.648 , 2.147.483.647 yada 0 – 4.294.967.295 UNSIGNED.
BIGINT( ) : -9.223.372.036.854.775.808 , 9.223.372.036.854.775.807 yada 0 – 18.446.744.073.709.551.615 UNSIGNED.
FLOAT : Küçük Noktalı sayı.
DOUBLE( , ) : Büyük Noktalı sayı.
DECIMAL( , ) : DOUBLE tipte string şeklinde saklanır.

TARİH , SAAT
DATE : YYYY-MM-DD
DATETIME : YYYY-MM-DD HH:MM:SS
TIMESTAMP : YYYYMMDDHHMMSS
TIME : HH:MM:SS

DİĞER
ENUM () : Kullanıcı tanımlı liste tipi. Ör; ENUM(’e',’h')
SET : Küme Tipi. ENUM benzeri. Aynı anda birden fazla kayıt tutabilir.

Debian üzerinde MySQL'e erişmek için mysql.h hader dosyasina ihtiyacımız var.
Eger sisteminizde libmysqlclient12-dev kurulu degilse :

# apt-get install libmysqlclient12-dev

komutu ile sisteminize kurun.

Örneğimizde MySQL personel tablosuna bağlanıp tum kayıtları listeleyeceğiz.

personel tablosunda 2 alan var :
- id (int)
- ad (varchar)

Örnek (mysqltest.c):

C++:
  1. #include <mysql/mysql.h>
  2. #include <stdio.h>
  3.  
  4. int main() {
  5. MYSQL *mysql;
  6. MYSQL_RES *sonuc;
  7. MYSQL_ROW sira;
  8. char *SQL;
  9. int t,r;
  10.  
  11. mysql_server_init(0, NULL, NULL);
  12. mysql = mysql_init(NULL);
  13.  
  14. if (mysql_real_connect(mysql,"localhost", "root", NULL, "test", 0, NULL, 0) == NULL) {
  15. printf("MySQL Servera baglanti kurulamadi %s!\n",mysql_error(mysql));
  16. exit(-1);
  17. }
  18. else {
  19. printf("MySQL Baglantisi Kuruldu.\n\n");
  20. }
  21.  
  22. SQL="SELECT * FROM personel";
  23.  
  24. if (mysql_real_query(mysql,SQL,(unsigned int) strlen(SQL) )) {
  25. printf("%s sorgulamada Hata : %s\n",SQL,mysql_error(mysql));
  26. exit(-1);
  27. }
  28. else {
  29. printf("%s basari ile sorgulandi.\n",SQL);
  30. }
  31.  
  32. sonuc=mysql_use_result(mysql);
  33.  
  34. while (sira=mysql_fetch_row(sonuc)) {
  35. for (t=0;t<mysql_num_fields(sonuc);t++) {
  36. printf("%s",sira[t]);
  37. }
  38. printf("\n");
  39. }
  40.  
  41. mysql_close(mysql);
  42. mysql_server_end();
  43. return 0;
  44. }

Derleme İşlemi :
# gcc "mysqltest.c" -lmysqlclient

komutundan sonra ayni dizinde olusacak olan a.out dosyasini #./a.out şeklinde calistirarak sonucu görebilirsiniz.

Çikti :
(benim sistemimdeki çıktı)

ayhan@debian:~/c$ gcc "mysqltest.c" -lmysqlclient
ayhan@debian:~/c$ ./a.out
MySQL Baglantisi Kuruldu.
SELECT * FROM personel basari ile sorgulandi.
1ayhan
2baris

Fonksiyon Açıklamaları :
mysql_server_init()
int mysql_server_init(int argc, char **argv, char **groups
Sunucunun kullandığı ( mysys , InnoDB, vb.) alt sistemleri kullanılır hale getirir. Bu fonksiyon çalıştırılmazsa programınız hata verecetir.

mysql_init()
MYSQL *mysql_init(MYSQL *mysql)
MySql bağlantısını hazırlar.

mysql_real_connect()
MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag)
Makina üzerinde çalışan MySQL sunucusuna bağlanmaya çalışır. Herhangi bir sorgulama işlemi yapmadan önce mysql_real_connect() başarı ile calıştırılmalıdır.

mysql_real_query()
int mysql_real_query(MYSQL *mysql, const char *query, unsigned long length)
SQL sorgusunu çalıştırır. Genel olarak 1 komutla tek bir sorgu çalıştırılmalıdır. Binary veri içeren sorgulamalarda mysql_real_query() kullanılmalıdır.

mysql_use_result()
MYSQL_RES *mysql_use_result(MYSQL *mysql)
Başrı ile gercekleşen her sorgulama işleminden sonra mysql_use_result() fonksiyonu çalıştırılmalıdır. Sorgulamadan gelen verileri kullanmamızı sağlar, işimiz bittiğinde mysql_free_result() fonksiyonu ile o bellek alanını boşaltmamoz gerekir.

mysql_fetch_row()
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
Sorulama sonucunda oluşan veri kümesinden sonucları sıra ile alır. Her çalıştırılışta 1 satır çeker. Herhangi bir sonuç gelmediyse NULL döndürür. Bir satırda kaç alan olduğu mysql_num_fields() fonksiyonu ile bulunabilir.

mysql_num_fields()
unsigned int mysql_num_fields(MYSQL_RES *result)
Sorgulama sonuç kümesinde kaç kolon olduğunu bulmak için kullanılır.

mysql_close()
void mysql_close(MYSQL *mysql)
Aktif bağlntıyı kapatır.

mysql_server_end()
void mysql_server_end(void)
Bu fonksiyon tüm MySQL fonksiyonlarından sonra sadece bir kez caliştirilmalıdır. Tüm alt sitemleri kapatır.

Dökümanı Hazırlayan : Ayhan BARIŞ (20 Temmuz 2005)