2012-10-10 4 views
10

t = t | 128을 쓰려고했지만 범위를 벗어났습니다. tinyint가 서명 된 것 같습니다. 그러나 http://dev.mysql.com/doc/refman/5.5/en/numeric-types.html은 서명되지 않았을 수도 있습니다 (아래). 그러나 그것을 서명하지 못하게하는 방법을 말하지 않습니다. 내가 어떻게 할?mysql Tinyint as 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 

답변

11

UNSIGNED은 많은 유형에 추가 할 수있는 속성입니다. 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

당신은 키워드 unsigned와 부호 표시합니다. 예제 테이블을 만들 때, :

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

대신 더 또는 Alter table에 대한 Create Table를 참조하십시오.

1

먼저 음수 값으로 작업해야합니다. 그렇지 않으면 ALTER TABLE...UNSIGNED이 오류를 발생시킵니다. 예를 들어 모든 값을 늘릴 수 있습니다.

UPDATE table SET tiny_field = tiny_field + 128; 

그런 다음 ALTER TABLE을 사용하여 필드 유형/옵션을 변경하십시오.