mysql Tinyint 作为无符号
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/12812362/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
mysql Tinyint as unsigned
提问by
I tried to write t=t|128 but got an out of range error. I suspect tinyint is signed. However http://dev.mysql.com/doc/refman/5.5/en/numeric-types.htmlsays it may be unsigned (below). But it doesn't say how to make it unsigned. How do I?
我试图写 t=t|128 但得到一个超出范围的错误。我怀疑 tinyint 已签名。但是http://dev.mysql.com/doc/refman/5.5/en/numeric-types.html说它可能是未签名的(如下)。但它没有说明如何使其未签名。我如何能?
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
采纳答案by wallyk
UNSIGNED
is an attribute which can be added to many types. From the documentation:
UNSIGNED
是一个可以添加到许多类型的属性。从文档:
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
回答by Grumpy
You mark the unsigned with the keyword unsigned
. So, when making a table for an example:
你用关键字标记无符号unsigned
。因此,在制作表格时:
CREATE TABLE `example_table` (
`example_col` tinyint(3) unsigned NOT NULL
);
See Create Tableinstead for more, or the Alter table.
回答by Devart
Firstly, you should do something with negative values, otherwise ALTER TABLE...UNSIGNED
will throw an error. For example you could increase all values -
首先,你应该做一些负值的事情,否则ALTER TABLE...UNSIGNED
会抛出错误。例如,您可以增加所有值 -
UPDATE table SET tiny_field = tiny_field + 128;
Then use ALTER TABLE to change field type/option.
然后使用 ALTER TABLE 更改字段类型/选项。