24 Ocak 2023 Salı

INT Sütun Tipleri

Giriş
Şöyledir
TINYINT   1 Byte [-128,127] 
SMALLINT 2 Bytes [-32768,32767]
MEDIUMINT 3 Bytes [-8388608,8388607} 
INT OR INTEGER 4 Bytes [-2147483648,2147483647]
BIGINT 8 Bytes [-2^63,-2^63-1]
Java karşılıkları şöyle
MySQL Type Java Type
CHAR, VARCHAR, LONGVARCHAR String
TEXT String
TINYINT byte
SMALLINT short
INT (INTEGER) int
BIGINT long
NUMERIC, DECIMAL java.math.BigDecimal
REAL float
FLOAT, DOUBLE double
BIT boolean
BINARY, VARBINARY, LONGVARBINARY    byte[]
BLOB, MEDIUMBLOB, LARGEBLOB    byte[]
DATE java.sql.Date
TIME java.sql.Time
DATETIME, TIMESTAMP java.sql.Timestamp
INT ve Display Width
Açıklaması şöyle
Generally, the numbers after int are only valid when used together with zerofill
Açıklaması şöyle
In MySQL, when you define a column as int(4), the 4 in parentheses is used to specify the display width of the column, not the number of bytes it will use for storage. The display width is used only for formatting output and has no impact on the range of values that can be stored in the column. The range of values that can be stored in an int column is determined by its data type, not by the display width.
Örnek
Şöyle yaparız. Burada int(1) kullanınca halen en büyük sayıyı ekleyebildiğimizi görebiliyoruz
CREATE TABLE user (
  id int(1) unsigned NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

mysql> INSERT INTO user (idVALUES (4294967295);
Query OK, 1 row affected (0.00 sec)
Nasıl Kullanılır ?
Display Width eğer zerofill ile birlikte kullanılırsa işe yarıyor
Örnek
Şöyle yaparız. Burada tablo yaratılırken zerofill belirtiliyor. Böylece sayılar 4 hane olacak şekilde gerekirse sıfır ile dolduruluyor
CREATE TABLE user (
  id int(4) unsigned zerofill NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

mysql> INSERT INTO `user` (`id`) VALUES (1),(10),(100),(1000);
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> select * from user;
+------+
| id   |
+------+
| 0001 |
| 0010 |
| 0100 |
| 1000 |
+------+
4 rows in set (0.00 sec)
1. TINYINT
Java'daki Byte tipine denk gelir.
Örnek
Şöyle yaparız.
tinyint(4) DEFAULT NULL
2. SMALLINT
Java'daki Short tipine denk gelir.
Örnek
Şöyle yaparız.
SMALLINT(5) UNSIGNED NOT NULL AUTO INCREMENT
3. INT
Java'daki Integer tipine denk gelir.
Örnek
Şöyle yaparız.
INT(11)
Kısıt koymak istersek şöyle yaparız.
INT(11) NOT NULL AUTO INCREMENT
Şöyle yaparız.
INT(11) NOT NULL DEFAULT '0'
Şöyle yaparız.
INT(11) DEFAULT NULL
4. INT UNSIGNED
Örnek
Şöyle yaparız.
INT(10) UNSINGNED NOT NULL DEFAULT '0',
Şöyle yaparız.
CREATE TABLE list_relation
(
  parent_id INT UNSIGNED NOT NULL,
  ...
);
5. BIGINT
Java'daki Long tipine denk gelir.
Örnek
Şöyle yaparız.
BIGINT(20) UNSGINED NOT NULL
Örnek
Şöyle yaparız.
CREATE TABLE questions (
  id BIGINT NOT NULL CONSTRAINT questions_pkey PRIMARY KEY,
  user_id BIGINT CONSTRAINT fk_questions_users REFERENCES users,
  question TEXT NOT NULL;
)

Hiç yorum yok:

Yorum Gönder

Soft Delete

Giriş Açıklaması  şöyle When using the soft delete mechanism on the database, you might run into a situation where a record with a unique co...