2009年4月1日星期三

int(4) UNSIGNED 的取值范围是多少?varchar(255)可以取多少汉字?可以设置为varchar(600)吗 php mysql 取值范围

int(4) UNSIGNED 的取值范围是多少?
varchar(255)可以取多少汉字?
可以设置为varchar(600)吗?

一直都很不明白。

smallint(10)的取值范围?
tinyint(10)的取值范围?
float的取值范围?从多少到多少?
希望告诉一下
发表于:2009-01-01 18:07:041楼 得分:0
引用楼主 default7 的帖子:
int(4) UNSIGNED 的取值范围是多少?
varchar(255)可以取多少汉字?
可以设置为varchar(600)吗?

一直都很不明白。

smallint(10)的取值范围?
tinyint(10)的取值范围?
float的取值范围?从多少到多少?
希望告诉一下


1、int(4) UNSIGNED:你都写明了是4个数字(不带符号)。

2、varchar(255):Varchar类型,单位是字节的,一个中文字符两个字节,所以varchar(255),储存127个汉字和1个英语字符(除于2有余数)。

3、varchar(600):不能设置为600,varchar范围是1至255个字节之间。

4、smallint(10):好像有些错误,smallint的参数最多只有5,因为smallint的范围是-32768至32768,只有5位数

5、tinyint(10):同4一样,像是错了,tinyint只有-128至128,只有三位

6、float:允许的值是-3.402823466E+38到-1.175494351E-38,0 和1.175494351E-38到3.402823466E+38。(引用)

 

引用 1 楼 gingzai777 的回复:
引用楼主 default7 的帖子:
int(4) UNSIGNED 的取值范围是多少?
varchar(255)可以取多少汉字?
可以设置为varchar(600)吗?

一直都很不明白。

smallint(10)的取值范围?
tinyint(10)的取值范围?
float的取值范围?从多少到多少?
希望告诉一下


1、int(4) UNSIGNED:你都写明了是4个数字(不带符号)。

2、varchar(255):Varchar类型,单位是字节的,一个中文字符两个字节,所以varchar(255),储…


================================

3.varchar(600)是错误的,就是不可以取的,但是我在phpMyAdmin中可以这样设置的,这个?不明白?
($sql = 'ALTER TABLE `img_info` CHANGE `file_type` `file_type` VARCHAR(600) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL'; 在phpmyadmin中执行是成功的)


=================================
引用 2 楼 default7 的回复:
引用 1 楼 gingzai777 的回复:
引用楼主 default7 的帖子:
int(4) UNSIGNED 的取值范围是多少?
varchar(255)可以取多少汉字?
可以设置为varchar(600)吗?

一直都很不明白。

smallint(10)的取值范围?
tinyint(10)的取值范围?
float的取值范围?从多少到多少?
希望告诉一下


1、int(4) UNSIGNED:你都写明了是4个数字(不带符号)。

2、varchar(255):Varchar类型,单位是字节的,一个中文字符两个字节,…
好像到时候写入数据时,会把255字节后的自动删除掉的,我还没有证实过,反正,VARCHAR用时,不要超过255为好。
【1】int(4)表示的就是int最多取值是4 位对吗,那么它的取值范围是0~9999,对吗?
【2】varchar(255)最多取值255位,那么varchar(255)最多可以取值127个汉字加上一个英文字母,对吗?

=====================

【3】如果用varchar来储存数字,而且是整数,那么可以存储255位,就是"0~255位数的数字",那么比那个int的取值范围还长??(理解错误了吗?)

【4】一个数字占用了一位,就是位的关系是"1汉字=2数字",对吗?
【5】数字和英文字母的占的位是一样的,那么"1英文字母=1数字",对吗?


======================
【6】byte和bit的关系是1byte=8bits,对吗?那么int(4)表示的是4bits还是4byte呢?(希望知道的人告诉我一下)
【7】TINYINT的取值范围是(-128 到 127),括号中的-128表示的是128位?

======================

很迷惑,希望大家帮忙说明白一下。
引用 4 楼 default7 的回复:
【1】int(4)表示的就是int最多取值是4 位对吗,那么它的取值范围是0~9999,对吗?
【2】varchar(255)最多取值255位,那么varchar(255)最多可以取值127个汉字加上一个英文字母,对吗?

=====================

【3】如果用varchar来储存数字,而且是整数,那么可以存储255位,就是"0~255位数的数字",那么比那个int的取值范围还长??(理解错误了吗?)

【4】一个数字占用了一位,就是位的关系是"1汉字=2数字",对吗?
【5…
第一,第二个问题可想你那样理解。第三,既然是存储整数,那你为什么要有字符来存储呢?用字符存储可能有想不到的后果,比如如果你的一个ID自动增长做为主健,你就不能把ID定义为字符类型。如果你想要整型加大,你可以用bigint类型啊。
4,5问题是所占的字节数相当。
6,bit是字节的最小单位,bit 是位,byte是字节,1byte=8bit,int是4字节,short int是2字节,long int也是4字节,int数据最大长度为11,所以int(4)表示查询4个长度的数据。
7。TINYINT的取值范围是(-128 到 127)表示取值范围,不是128位
引用 5 楼 dzxccsu 的回复:
引用 4 楼 default7 的回复:
【1】int(4)表示的就是int最多取值是4 位对吗,那么它的取值范围是0~9999,对吗?
【2】varchar(255)最多取值255位,那么varchar(255)最多可以取值127个汉字加上一个英文字母,对吗?

=====================

【3】如果用varchar来储存数字,而且是整数,那么可以存储255位,就是"0~255位数的数字",那么比那个int的取值范围还长??(理解错误了吗?)

【4】一个数字占用了一位,就是位的…


就是说int(4)表示的是最多可以取值是4位数的数字,
而tinyint的取值范围是-127~1287的这个"-127~128"表示的是这个数字的数值范围,而不是这个数有多少位,对吗?
引用 6 楼 default7 的回复:
引用 5 楼 dzxccsu 的回复:
引用 4 楼 default7 的回复:
【1】int(4)表示的就是int最多取值是4 位对吗,那么它的取值范围是0~9999,对吗?
【2】varchar(255)最多取值255位,那么varchar(255)最多可以取值127个汉字加上一个英文字母,对吗?

=====================

【3】如果用varchar来储存数字,而且是整数,那么可以存储255位,就是"0~255位数的数字",那么比那个int的取值范围还长??(理解错误了吗?)

【4】…
范围就是这样,int(4),就是四位数字,tinyint的范围是-127至128,这当然不是位数,是数字范围,tinyint是最小的数据库单位,只需1字节储存。
引用 6 楼 default7 的回复:
引用 5 楼 dzxccsu 的回复:
引用 4 楼 default7 的回复:
【1】int(4)表示的就是int最多取值是4 位对吗,那么它的取值范围是0~9999,对吗?
【2】varchar(255)最多取值255位,那么varchar(255)最多可以取值127个汉字加上一个英文字母,对吗?

=====================

【3】如果用varchar来储存数字,而且是整数,那么可以存储255位,就是"0~255位数的数字",那么比那个int的取值范围还长??(理解错误了吗?)

【4】一个数…
你的理解正确

没有评论: