2012-10-10 32 views
10

Tôi cố viết t = t | 128 nhưng có lỗi ngoài phạm vi. Tôi nghi ngờ tinyint được ký kết. Tuy nhiên http://dev.mysql.com/doc/refman/5.5/en/numeric-types.html nói rằng nó có thể không được ký (bên dưới). Nhưng nó không nói làm thế nào để làm cho nó unsigned. Làm thế nào để tôi?mysql Tinyint là unsigned

Type  Storage Minimum Value  Maximum Value 
     (Bytes) (Signed/Unsigned) (Signed/Unsigned) 
TINYINT  1   -128     127 
          0      255 
SMALLINT 2   -32768     32767 
          0      65535 
MEDIUMINT 3   -8388608    8388607 
          0     16777215 
INT   4   -2147483648   2147483647 
          0     4294967295 
BIGINT  8  -9223372036854775808 9223372036854775807 
          0    18446744073709551615 

Trả lời

11

UNSIGNED là thuộc tính có thể được thêm vào nhiều loại. Từ documentation:

data_type:

BIT[(length)] 
    | TINYINT[(length)] [UNSIGNED] [ZEROFILL] 
    | SMALLINT[(length)] [UNSIGNED] [ZEROFILL] 
    | MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL] 
    | INT[(length)] [UNSIGNED] [ZEROFILL] 
    | INTEGER[(length)] [UNSIGNED] [ZEROFILL] 
    | BIGINT[(length)] [UNSIGNED] [ZEROFILL] 
    | REAL[(length,decimals)] [UNSIGNED] [ZEROFILL] 
    | DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL] 
    | FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL] 
    | DECIMAL[(length[,decimals])] [UNSIGNED] [ZEROFILL] 
    | NUMERIC[(length[,decimals])] [UNSIGNED] [ZEROFILL] 
    | DATE 
    | TIME 
    | TIMESTAMP 
    | DATETIME 
    | YEAR 
    | CHAR[(length)] 
     [CHARACTER SET charset_name] [COLLATE collation_name] 
    | VARCHAR(length) 
     [CHARACTER SET charset_name] [COLLATE collation_name] 
    | BINARY[(length)] 
    | VARBINARY(length) 
    | TINYBLOB 
    | BLOB 
    | MEDIUMBLOB 
    | LONGBLOB 
    | TINYTEXT [BINARY] 
     [CHARACTER SET charset_name] [COLLATE collation_name] 
    | TEXT [BINARY] 
     [CHARACTER SET charset_name] [COLLATE collation_name] 
    | MEDIUMTEXT [BINARY] 
     [CHARACTER SET charset_name] [COLLATE collation_name] 
    | LONGTEXT [BINARY] 
     [CHARACTER SET charset_name] [COLLATE collation_name] 
    | ENUM(value1,value2,value3,...) 
     [CHARACTER SET charset_name] [COLLATE collation_name] 
    | SET(value1,value2,value3,...) 
     [CHARACTER SET charset_name] [COLLATE collation_name] 
    | spatial_type 
5

Bạn đánh dấu unsigned với từ khóa unsigned. Vì vậy, khi thực hiện một bảng cho một ví dụ:

CREATE TABLE `example_table` (
    `example_col` tinyint(3) unsigned NOT NULL 
); 

Xem Create Table thay vì để biết thêm, hoặc Alter table.

1

Thứ nhất, bạn nên làm điều gì đó có giá trị âm, nếu không ALTER TABLE...UNSIGNED sẽ phát sinh lỗi. Ví dụ: bạn có thể tăng tất cả các giá trị -

UPDATE table SET tiny_field = tiny_field + 128; 

Sau đó sử dụng ALTER TABLE để thay đổi loại trường/tùy chọn.

Các vấn đề liên quan