Khi nào tôi nên sử dụng UNSIGNED và SIGNED INT trong MySQL? Điều gì tốt hơn để sử dụng hay đây chỉ là sở thích cá nhân? Bởi vì tôi đã thấy nó được sử dụng như thế này;

id INT(10) UNSIGNED NOT NULL AUTO_INCREMENTvà

id INT(11) NOT NULL AUTO_INCREMENT

UNSIGNEDchỉ lưu trữ các số dương (hoặc số 0). Mặt khác, có dấu có thể lưu trữ số âm (nghĩa là, có thể có một dấu âm ).

Đang xem: Unsigned là gì, kiểu và khai báo biến trong c

Dưới đây là bảng các phạm vi giá trị mà mỗi INTEGERloại có thể lưu trữ:

*

UNSIGNEDphạm vi từ 0đến n, trong khi đã ký có phạm vi từ sắp -n/2đến n/2.

Trong trường hợp này, bạn có một AUTO_INCREMENTcột ID, vì vậy bạn sẽ không có phủ định. Như vậy, sử dụng UNSIGNED. Nếu bạn không sử dụng UNSIGNEDcho AUTO_INCREMENTcột, giá trị tối đa có thể của bạn sẽ cao bằng một nửa (và nửa âm của dải giá trị sẽ không được sử dụng).

— Anh chàng khôn ngoan nguồn
14
Tuy nhiên, hãy lưu ý rằng đó UNSIGNEDlà tính năng dành riêng cho MySQL và không phải là một tính năng SQL tiêu chuẩn. Điều này có nghĩa là việc sử dụng UNSIGNEDcó thể làm cho việc di chuyển trong tương lai sang một RDBMS khác phức tạp hơn hoặc khiến bạn gặp khó khăn khi sử dụng các thư viện phần mềm nhắm mục tiêu SQL tiêu chuẩn như SQLAlchemy. Tôi nghĩ đây phải là một phần của câu trả lời.
8

Sử dụng UNSIGNEDcho các số nguyên không âm.

— Paul Denisevich nguồn
4

Về cơ bản UNSIGNED, bạn đang cung cấp cho mình gấp đôi không gian cho số nguyên vì bạn chỉ định rõ ràng rằng bạn không cần số âm (thường là vì các giá trị bạn lưu trữ sẽ không bao giờ âm).

Xem thêm: Tcs Là Gì – Vai Trò Của Hệ Thống Tcs Trên Ô Tô

— Srneczek nguồn
1

Tôi không đồng ý với cp vipin .

Sự thật là bit đầu tiên được sử dụng để biểu diễn dấu hiệu. Nhưng 1 là giá trị âm và 0 là giá trị dương. Nhiều giá trị âm hơn được mã hóa theo cách khác nhau (bổ sung của hai). Ví dụ với TINYINT:

The sign bit|1000 0000b = -128d … 1111 1101b = -3d 1111 1110b = -2d 1111 1111b = -1d 0000 0000b = 0d 0000 0001b = 1d 0000 0010b = 2d … 0111 1111b = 127d
— Kinga the Witch nguồn
1
Đối với giá trị số nguyên âm, SIGNEDđược sử dụng và đối với giá trị số nguyên không âm, UNSIGNEDđược sử dụng. Nó luôn được đề xuất sử dụng UNSIGNEDcho id làm KHÓA CHÍNH.

— Sheikh Hafizur Rahman nguồn
0

Một điều tôi muốn thêm Trong a signed int, là dấu default value in mysql, 1 bitsẽ được sử dụng để đại diện sign. -1 for negative and 0 for positive. Vì vậy, nếu ứng dụng của bạn chỉ chèn giá trị dương thì tốt hơn nên chỉ định không dấu.

Xem thêm: Chất Liệu Tencel Là Gì? Vải Tencel Là Gì ? Vải Tencel Có Bền Và Mát Không

— vipin cp nguồn
0

Nếu bạn biết loại số bạn sẽ lưu trữ, bạn có thể chọn cho phù hợp. Trong trường hợp này, bạn có “id” không bao giờ có thể là số âm. Vì vậy, bạn có thể sử dụng int unsigned. Phạm vi int có dấu: -n / 2 đến + n / 2 Phạm vi int không dấu: 0 đến n Vì vậy, bạn có gấp đôi số dương có sẵn. Chọn cho phù hợp.

— Bình minh Debanik nguồn
0

Tôi nghĩ, UNSIGNEDsẽ là lựa chọn tốt nhất để lưu trữ giá trị như time_duration(Ví dụ resolved_call_time = resolved_time(DateTime)-creation_time(DateTime):) ở định dạng phút hoặc giờ hoặc giây chắc chắn sẽ là một số không âm

— Kamal nguồn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.

Leave a Reply

Your email address will not be published. Required fields are marked *