BIGINT [(M)] [UNSIGNED] [ZEROFILL] Một số nguyên lớn. Phạm vi đã ký là -9223372036854775808 đến 9223372036854775807. Phạm vi không dấu là 0 đến 18446744073709551615.
SERIAL là một bí danh cho BIGINT KHÔNG ĐƯỢC ĐĂNG KÝ KHÔNG NULL AUTO_INCREMENT UNIITE.
Một số điều bạn cần lưu ý đối với các cột BIGINT:
■ Tất cả số học được thực hiện bằng các giá trị BIGINT hoặc NHÂN ĐÔI đã ký, vì vậy bạn không nên sử dụng các số nguyên lớn không dấu lớn hơn 9223372036854775807 (63 bit) trừ các hàm bit! Nếu bạn làm điều đó, một số chữ số cuối cùng trong kết quả có thể sai do làm tròn các lỗi khi chuyển đổi giá trị BIGINT thành NHÂN ĐÔI.
MySQL có thể xử lý BIGINT trong các trường hợp sau:
Khi sử dụng số nguyên để lưu trữ các giá trị không dấu lớn trong cột BIGINT.
Trong MIN (col_name) hoặc MAX (col_name), trong đó col_name đề cập đến cột BIGINT.
Khi sử dụng các toán tử (+, -, *, v.v.) trong đó cả hai toán hạng đều là số nguyên.
■ Bạn luôn có thể lưu trữ một giá trị số nguyên chính xác trong cột BIGINT bằng cách lưu trữ nó bằng chuỗi. Trong trường hợp này, MySQL thực hiện chuyển đổi chuỗi thành số không liên quan đến biểu diễn chính xác kép trung gian.
■ Toán tử -, + và * sử dụng số học BIGINT khi cả hai toán hạng đều là giá trị nguyên. Điều này có nghĩa là nếu bạn nhân hai số nguyên lớn (hoặc kết quả từ các hàm trả về số nguyên), bạn có thể nhận được kết quả không mong muốn khi kết quả lớn hơn 9223372036854775807.
Như bạn đã nói, miễn là bạn không thực hiện bất kỳ số học, sắp xếp hoặc sử dụng các toán tử quan hệ nào trên các giá trị, tôi sẽ đi với BIGINT.
Tài liệu chỉ đề cập đến việc lưu trữ số dưới dạng một chuỗi để bỏ qua các bước trung gian được thực hiện thông qua biểu diễn chính xác kép.