Apakah perbezaan antara Mysql tinyint(1) dan tinyint(4)

WBOY
Lepaskan: 2023-06-01 08:31:32
ke hadapan
1106 orang telah melayarinya

Apakah itu tinyint(M)?

Mula-mula mari kita fahami perbezaan antara jenis rentetan varchar(M) dan jenis berangka tinyint(M) dalam mysql ?
Jenis lajur rentetan: Dari segi varchar(M), M ialah panjang aksara maksimum yang boleh disimpan dalam medan, Maksudnya, panjang medan. Bergantung pada tetapan, anda mungkin menerima ralat apabila anda memasukkan data yang melebihi panjang medan, dan walaupun anda tidak menerima ralat, data yang anda masukkan akan dipotong secara automatik agar sesuai dengan panjang medan yang telah ditetapkan. Oleh itu, varchar(20) dan varchar(40) adalah berbeza, yang benar-benar mencerminkan panjang data yang boleh disimpan dalam medan ini .
Jenis lajur angka: Pengubah suai panjangnya mewakili lebar paparan maksimum dan tiada kaitan dengan storan fizikal medan. Dalam erti kata lain, julat berangka yang boleh disimpan oleh tinyint(1) dan tinyint(4) ialah -128…127 (atau untuk nilai tidak bertanda 0…255 adalah jenis data sama). Sudah tentu, mereka masih Terdapat sedikit perbezaan, yang akan dijelaskan di bawah.
Untuk jenis data tinyint, ia hanya menduduki 1 bait:

- tidak ditandatangani, antara 0 hingga 255, Panjang lalai ialah 3 .
- ditandatangani, julat ialah -128 hingga 127, panjang lalai ialah 4.

Algoritma julat: tinyint menduduki 1 bait, bait ialah 8 bit, iaitu 1*8=8, dan bilangan nombor yang boleh diwakili ialah 8 kali 2 Petak (2^8 = 256 nombor).

Perbezaan: Jika sifar digunakan, apabila panjang sebenar tidak mencapai panjang paparan yang ditentukan, ia akan berlapik dengan 0 di hadapan. (Fungsi zerofill secara ringkasnya ialah mengisi sifar)

Ujian

Mula-mula buat jadual ujian dan gunakan zerofill untuk semua jenis tinyint.

CREATE TABLE `pre_demo` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  `unsigned_t` tinyint(3) unsigned zerofill NOT NULL DEFAULT '000',
  `signed_t` tinyint(4) unsigned zerofill NOT NULL DEFAULT '0000',
  `t1` tinyint(1) unsigned zerofill NOT NULL DEFAULT '0',
  `t2` tinyint(2) unsigned zerofill NOT NULL DEFAULT '00',
  `t3` tinyint(3) unsigned zerofill NOT NULL DEFAULT '000',
  `t4` tinyint(4) unsigned zerofill NOT NULL DEFAULT '0000',
  `t5` tinyint(5) unsigned zerofill NOT NULL DEFAULT '00000',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Salin selepas log masuk

Kemudian, masukkan data ujian.

NSERT INTO pre_demo VALUES(NULL,8,8,8,8,8,8,8);
INSERT INTO pre_demo VALUES(NULL,123,123,123,123,123,123,123);
Salin selepas log masuk

Akhir sekali, tanya data dalam jadual data.

mysql> SELECT * FROM pre_demo;
+----+------------+----------+-----+-----+-----+------+-------+
| id | unsigned_t | signed_t | t1  | t2  | t3  | t4   | t5    |
+----+------------+----------+-----+-----+-----+------+-------+
|  1 |        008 |     0008 |   8 |  08 | 008 | 0008 | 00008 |
|  2 |        123 |     0123 | 123 | 123 | 123 | 0123 | 00123 |
+----+------------+----------+-----+-----+-----+------+-------+
2 rows in set (0.00 sec)
Salin selepas log masuk
rrree

Atas ialah kandungan terperinci Apakah perbezaan antara Mysql tinyint(1) dan tinyint(4). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan