Apa arti `unsigned` di MySQL dan kapan menggunakannya?


278

Apa arti "unsigned" di MySQL dan kapan saya harus menggunakannya?

Jawaban:


527

MySQL mengatakan:

Semua tipe integer dapat memiliki atribut opsional (tidak standar) TIDAK DITANDATANGANI. Jenis yang tidak ditandatangani dapat digunakan untuk mengizinkan hanya nomor-nomor non-negatif dalam sebuah kolom atau ketika Anda membutuhkan rentang numerik atas yang lebih besar untuk kolom tersebut. Misalnya, jika kolom INT TIDAK DITANDATANGANI, ukuran rentang kolom adalah sama tetapi titik akhirnya bergeser dari -2147483648 dan 2147483647 ke 0 dan 4294967295.

Kapan saya menggunakannya?

Tanyakan kepada diri Anda pertanyaan ini: Apakah bidang ini pernah mengandung nilai negatif ?
Jika jawabannya tidak, maka Anda menginginkan UNSIGNEDtipe data.

Kesalahan umum adalah menggunakan kunci utama yang merupakan peningkatan otomatis INTmulai dari nol , namun tipenya adalah SIGNED, dalam hal ini Anda tidak akan pernah menyentuh angka negatif mana pun dan Anda mengurangi kisaran id yang mungkin menjadi setengah.


8
nilai yang mewakili 'ukuran' barang, seperti jumlah item tertentu pada suatu pesanan, atau jarak antara dua lokasi, biasanya tidak akan ditandatangani
SingleNegationElimination

31
Jawaban bagus, tampak aneh bahwa mysql tidak akan default bilangan bulat menjadi unsigned ketika mereka secara otomatis menambah identitas?
wired00

3
Jika Anda ingin jawaban yang lebih jelas maka lihat ini stackoverflow.com/a/11515613/6335029
NaveenDA

Saya benar-benar berharap ada juga positiveatribut, karena tampaknya lebih umum bahwa Anda hanya ingin bekerja dengan angka-angka positif, bukan nol.
still_dreaming_1
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.