2012-10-10 23 views
10

Ho provato a scrivere t = t | 128 ma ho ottenuto un errore fuori intervallo. Sospetto che tinyint sia firmato. Tuttavia, http://dev.mysql.com/doc/refman/5.5/en/numeric-types.html dice che potrebbe essere non firmato (sotto). Ma non dice come renderlo non firmato. Come posso?mysql Tinyint come 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 

risposta

11

UNSIGNED è un attributo che può essere aggiunto a molti tipi. Dal 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

si seleziona la unsigned con la parola chiave unsigned. Così, quando si effettua un tavolo per un esempio:

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

Vedi Create Table, invece, per di più, o Alter table.

1

In primo luogo, si dovrebbe fare qualcosa con valori negativi, altrimenti ALTER TABLE...UNSIGNED genererà un errore. Ad esempio è possibile aumentare tutti i valori -

UPDATE table SET tiny_field = tiny_field + 128; 

Quindi utilizzare ALTER TABLE per modificare il tipo di campo/opzione.

Problemi correlati