Computer >> Máy Tính >  >> Lập trình >> MySQL

“Không dấu” trong MySQL có nghĩa là gì và sử dụng nó khi nào?

"Unsigned" trong MySQL là một kiểu dữ liệu. Bất cứ khi nào chúng tôi viết không có dấu cho bất kỳ cột nào có nghĩa là bạn không thể chèn số âm. Giả sử, với một số lượng rất lớn, bạn có thể sử dụng kiểu không dấu.

Phạm vi tối đa với int unsigned là 4294967295.

Note: If you insert negative value you will get a MySQL error.

Đây là ví dụ minh họa về kiểu không dấu. Trước tiên, chúng ta hãy tạo một bảng với cột "không dấu". Sau đây là truy vấn để tạo bảng -

mysql> create table UnsignedDemoWithPositiveValue
   -> (
   -> Distance int unsigned
   -> );
Query OK, 0 rows affected (0.86 sec)

Nếu bạn cố gắng chèn giá trị trên không có dấu 4294967295, thì lỗi sẽ tạo ra vì giá trị nằm ngoài phạm vi.

Chèn giá trị ngoài phạm vi.

mysql> insert into UnsignedDemoWithPositiveValue values(4294967296);
ERROR 1264 (22003): Out of range value for column 'Distance' at row 1

Trong ví dụ trên, tôi đã chèn 4294967296, nằm ngoài phạm vi, do đó sẽ phát sinh lỗi.

Bây giờ tôi đang chèn một giá trị khác 4294967295 vào bảng.

mysql> insert into UnsignedDemoWithPositiveValue values(4294967295);
Query OK, 1 row affected (0.30 sec)

Ở trên, bạn có thể thấy rằng truy vấn đã được thực thi thành công.

Bây giờ, chúng ta hãy xem một ví dụ khác. Nếu bạn chèn các bản ghi phủ định thì có thể thấy lỗi sau -

mysql> insert into UnsignedDemoWithPositiveValue values(-124);
ERROR 1264 (22003): Out of range value for column 'Distance' at row 1

Bây giờ tôi sẽ chỉ chèn giá trị dương với giá trị 124. Truy vấn như sau -

mysql> insert into UnsignedDemoWithPositiveValue values(124);
Query OK, 1 row affected (0.86 sec)

Như bạn có thể thấy ở trên, truy vấn đã được thực thi thành công.

Hãy để chúng tôi hiển thị bản ghi với sự trợ giúp của câu lệnh select. Truy vấn như sau -

mysql> select *from UnsignedDemoWithPositiveValue;

Đây là kết quả -

+------------+
| Distance   |
+------------+
| 4294967295 |
| 124        |
+------------+
2 rows in set (0.00 sec)