Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.
Aktivasyon mailiniz gelmediyse buraya tıklayın.
09, 2008, 02:26:22 am
42744 Mesaj 8090 Konu Gönderen: 17931 Üye
Son üye: medist
Turk-Php.Com Forum  |  Yardım Forumları  |  Veritabanı Yardım Forumu  |  [Çözüldü] MySQL Sütun Sayısal Öznitelikleri « önceki sonraki »
Sayfa: [1] Yazdır
Yazan Konu: [Çözüldü] MySQL Sütun Sayısal Öznitelikleri  (Okunma Sayısı 810 defa)
Allow-Man
Alaattin Kahramanlar
PHP Öğrencisi
*
Offline Offline

Mesaj Sayısı: 111



Üyelik Bilgileri WWW
[Çözüldü] MySQL Sütun Sayısal Öznitelikleri
« : 01, 2006, 08:43:59 am »

Merhabalar,

MySQL kullanma kılavuzunda tinyint, smallint, mediumint, ing ve bigint 'in kaç byte olacağı tanımlanmış. Söz gelimi int için 4 byte tutar diyor. Bu 28*28*28*28 yani 4294967296. INT olan bir alan UNSIGNED tanımlanırsa bu durumda sütunda en fazla 4294967295 saklanabiliyor.

Benim sormak istediğime gelmek istiyorum, bu niteliklerin kaç byte olduğu belli ise INT(1) ile INT(10) un farkı nedir, daha da ötesinde 1,10 vesaire esasen neyi ifade ediyor?

Teşekkür ederim.
« Son Düzenleme: 05, 2006, 03:40:51 pm Gönderen: Allow-Man » Logged

while(1) work;
aziz
PHP Programcısı
****
Offline Offline

Mesaj Sayısı: 940



Üyelik Bilgileri
Ynt: MySQL Sütun Sayısal Öznitelikleri
« Yanıtla #1 : 01, 2006, 10:22:15 am »

int 1 olursa 1 tek rakam girebilirsiniz. 10 olursa 10 rakam yayana.


Hemen düzelteceğim ,kusura bakmayın
« Son Düzenleme: 01, 2006, 11:14:48 am Gönderen: aziz » Logged

Jabber:
xmpp:aziz@member.turk-php.com
Alihan ÇETİN
www.azizce.com
Allow-Man
Alaattin Kahramanlar
PHP Öğrencisi
*
Offline Offline

Mesaj Sayısı: 111



Üyelik Bilgileri WWW
Ynt: MySQL Sütun Sayısal Öznitelikleri
« Yanıtla #2 : 01, 2006, 10:28:32 am »

Aziz bu bilginin doğru olduğuna emin misin?

INT(2) olan alana "1000"i girebiliyorum??

int 1 olursa 1 tek rakam girebilirsiniz. 10 olursa 10 rakam yayana.
Logged

while(1) work;
aziz
PHP Programcısı
****
Offline Offline

Mesaj Sayısı: 940



Üyelik Bilgileri
Ynt: MySQL Sütun Sayısal Öznitelikleri
« Yanıtla #3 : 01, 2006, 11:10:03 am »

INT -2147483648 ile 2147483647 arasında bir değer alır , pozitifse 0 ile 4294967295

BIGINT -9223372036854775808 ile 9223372036854775807 arasında bir değer alır, pozitif olursa 0 ile 18446744073709551615 arası bir değer alır.

Yanıltan rakam "0" , yanyana gelmesi ile ilgili

INT (2) INT(10) ise UNSIGNED ZEROFILL seçeneği aktif hale getirildiğinde örneğin INT(2) de 01 02 03
INT(10)da ise 0000000001 0000000002 0000000003 şeklinde görüntü sağlayacaktır. eğer INT(10) iken
UNSIGNED ZEROFILL seçeneği aktifse gidğiniz kayıt kaç rakamlı (sınırlar dahilinde) olursa olsun 10 hane dolana kadar sayının başına 0 konacaktır
« Son Düzenleme: 01, 2006, 11:26:05 am Gönderen: aziz » Logged

Jabber:
xmpp:aziz@member.turk-php.com
Alihan ÇETİN
www.azizce.com
Allow-Man
Alaattin Kahramanlar
PHP Öğrencisi
*
Offline Offline

Mesaj Sayısı: 111



Üyelik Bilgileri WWW
Ynt: MySQL Sütun Sayısal Öznitelikleri
« Yanıtla #4 : 01, 2006, 05:03:26 pm »

Evet bu daha açıklayıcı oldu teşekkür ederim ancak halen sorun var, şöyle ki söylediklerinizden anladıklarımı özetlemem gerekirse,

1. INT diyerek o alana girilebilecek en büyük sayıyı tanımlamış oluyoruz, sözgelimi UNSIGNED için bu alan değeri 4294967295'i geçemez.
2. INT(x) diyerek girilecek değerler için ayrılacak (allocate edilecek) varsayılan alanı belirliyoruz, x burada basamak sayısını belirliyor (Onluk sistemde).
3. x>10 değerleri otomatikman INT için anlamsız hale geliyor, ancak INT(15) diye bir alan oluşturmaya çalıştığımızda da bir hata dönmüyor MySQL.

Pekala şimdi sorunlara geleyim, aşağıda mysql çıktılarını veriyorum.

Kod:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 241 to server version: 4.1.9-max

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

Database changed
mysql> CREATE TABLE `deneme_tablosu` (
    -> `id` TINYINT( 2 ) NOT NULL ,
    -> PRIMARY KEY ( `id` )
    -> );
Query OK, 0 rows affected (0.13 sec)

mysql> INSERT INTO deneme_tablosu (id) VALUES(111);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO deneme_tablosu (id) VALUES(111);
Query OK, 1 row affected (0.00 sec)

mysql> SELECT id FROM deneme_tablosu;
+-----+
| id  |
+-----+
| 111 |
+-----+
1 row in set (0.00 sec)

Gördüğün gibi TINYINT(2) tanımladığım tabloya 3 basamaklı bir sayı girebiliyorum; bu durumda benim senin anlattıklarından yanlış anladığım bir şey mi var?

Zamanın için şimdiden teşekkürler


INT -2147483648 ile 2147483647 arasında bir değer alır , pozitifse 0 ile 4294967295

BIGINT -9223372036854775808 ile 9223372036854775807 arasında bir değer alır, pozitif olursa 0 ile 18446744073709551615 arası bir değer alır.

Yanıltan rakam "0" , yanyana gelmesi ile ilgili

INT (2) INT(10) ise UNSIGNED ZEROFILL seçeneği aktif hale getirildiğinde örneğin INT(2) de 01 02 03
INT(10)da ise 0000000001 0000000002 0000000003 şeklinde görüntü sağlayacaktır. eğer INT(10) iken
UNSIGNED ZEROFILL seçeneği aktifse gidğiniz kayıt kaç rakamlı (sınırlar dahilinde) olursa olsun 10 hane dolana kadar sayının başına 0 konacaktır
Logged

while(1) work;
aziz
PHP Programcısı
****
Offline Offline

Mesaj Sayısı: 940



Üyelik Bilgileri
Ynt: MySQL Sütun Sayısal Öznitelikleri
« Yanıtla #5 : 01, 2006, 05:50:57 pm »

Hayır anladıklarınız doğru. Ancak eğer int alanına mesela (12) yazılması durumunda (tam olarak burada bir istisna yönetimi var mı bimiyorum ama...) tablo için bir optimizasyon sorunu oluşacak ve verimi düşecektir diye "tahmin" ediyorum. Veri tabanlarında çok daha uzman olan arkadaşlarımız bilgilerini paylaşırlarsa sevinirim. 
Logged

Jabber:
xmpp:aziz@member.turk-php.com
Alihan ÇETİN
www.azizce.com
Allow-Man
Alaattin Kahramanlar
PHP Öğrencisi
*
Offline Offline

Mesaj Sayısı: 111



Üyelik Bilgileri WWW
Ynt: MySQL Sütun Sayısal Öznitelikleri
« Yanıtla #6 : 01, 2006, 05:54:29 pm »

Hocam yazdığım bir önceki yazıdaki "x burada basamak sayısını belirtiyor (Onluk sistemde)" ifadesi yanlış o halde?

Optimizasyon konusundaki öngörülerinizde haklısın ancak sanırım x alanın değeri için bir limit değil, denemelerim öyle gösterdi.

Net bilgisi olan yok mudur bu konuda?


Hayır anladıklarınız doğru. Ancak eğer int alanına mesela (12) yazılması durumunda (tam olarak burada bir istisna yönetimi var mı bimiyorum ama...) tablo için bir optimizasyon sorunu oluşacak ve verimi düşecektir diye "tahmin" ediyorum. Veri tabanlarında çok daha uzman olan arkadaşlarımız bilgilerini paylaşırlarsa sevinirim. 
Logged

while(1) work;
Witkey
Ziyaretçi


E-Posta
Ynt: MySQL Sütun Sayısal Öznitelikleri
« Yanıtla #7 : 05, 2006, 03:16:55 pm »

Bakınız : http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

Iyı calısmalar,
Onur Yerlikaya
Logged
Allow-Man
Alaattin Kahramanlar
PHP Öğrencisi
*
Offline Offline

Mesaj Sayısı: 111



Üyelik Bilgileri WWW
Ynt: MySQL Sütun Sayısal Öznitelikleri
« Yanıtla #8 : 05, 2006, 03:40:14 pm »

Onur sağol aşağıda siteden alıntı yaptım; Aziz'in söyledikleri ile paralel; konuyu kapatabiliriz.

Alıntı
If you assign a value to a BIT(M) column that is less than M bits long, the value is padded on the left with zeroes. For example, assigning a value of b'101' to a BIT(6) column is, in effect, the same as assigning b'000101'.

Bakınız : http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

Iyı calısmalar,
Onur Yerlikaya
Logged

while(1) work;
Sayfa: [1] Yazdır 
« önceki sonraki »
Gitmek istediğiniz yer:  


Turk-Php.Com Forum | SMF Forum Software © 2005, Simple Machines LLC. All Rights Reserved.