发布网友 发布时间:2022-04-25 14:16
共3个回答
懂视网 时间:2022-04-30 06:59
1、数值类数据列类型
数据列类型 |
存储空间 |
说明 |
取值范围 |
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字节 |
大整数 |
带符号值:-263~263-1 无符号值:0~264-1 |
FLOAT |
4或8字节 |
单精度浮点数 |
最小非零值:+- 1.175494351E-38 最大非零值:+- 3.402823466E+38 |
数据列类型 |
存储空间 |
说明 |
取值范围 |
DOUBLE |
8字节 |
双精度浮点数 |
最小非零值:+- 2.225073E-308 最大非零值:+- 1.797693E+308 |
DECIMAL |
自定义 |
以字符串形式表示的浮点数 |
取决于存储单元字节数 |
整型注意事项:
INT(3)、SMALLINT(3)等整型后面的数字不会影响数值的存储范围,只会影响显示 整型后面的数字只有配合零填充的时候才有实际意义。 整型后面的数字可以省略 浮点型注意事项: 浮点型后面的数字会将存入的数字四舍五入,例如:把一个1.234存入FLOAT(6,1)数据列中,结果是1.2,6代表显示长度,1代表小数位长度,会四舍五入。 2、字符串类数据列类型
数据列类型 |
存储空间 |
说明 |
取值范围 |
CHAR[(M)] |
M字节 |
定长字符串 |
M字节 |
VARCHAR[(M)] |
L+1字节 |
可变字符串 |
M字节 |
TINYBLOB,TINYTEXT |
L+1字节 |
非常小的BLOB(二进制大对象)和文本串 |
28-1字节 |
BLOB,TEXT |
L+2字节 |
小BLOB和文本串 |
216-1字节 |
MEDIUMBLOB, MEDIUMTEXT |
L+3字节 |
中等的BLOB和文本串 |
224-1字节 |
LONGBLOB, LONGTEXT |
L+4字节 |
大BLOB和文本串 |
232-1字节 |
ENUM(‘value1’,’value2’…) |
1或2字节 |
枚举:可赋予某个枚举成员 |
65535个成员 |
SET(‘value1’,‘value2’…) |
1,2,3,4或8字节 |
集合:可赋予多个集合成员 |
64个成员 |
数据列类型 |
存储空间 |
说明 |
取值范围 |
DATE |
3 字节 |
“YYYY-MM-DD”格式表示的日期值 |
1000-01-01~9999-12-31 |
TIME |
3 字节 |
“hh:mm:ss”格式表示的时间值 |
-838:59:59-838:59:59 |
DATETIME |
8 字节 |
“YYYY-MM-DD hh:mm:ss”格式 |
1000-01-01 00:00:00~9999-12-31 |
TIMESTAMP |
4 字节 |
“YYYYMMDDhhmmss”格式表示的时间戳 |
19700101000000-2037年的某个时刻 |
YEAR |
1 字节 |
“YYYY”格式的年份值 |
1901~2155 |
在MySQL的表达式中,如果某个数据值的类型与上下文所要求的类型不相符,MySQL则会根据将要进行的操作自动地对数据值进行类型转换。如:
1+’2’ #会自动转换成1+2=3
1+’abc’ #会自动转换成1+0=1
6、数据字段属性
UNSIGNED 只能用于设置数值类型,不允许出现负数 最大存储长度会增加一倍 ZEROFILL 只能用于设置数值类型,在数值之前会自动用0补齐不足的位数 AUTO_INCREMENT 用于设置字段的自动增长属性,每增加一条记录,该字段的值会自动加1 NULL和NOT NULL 默认为NULL,即插入值时没有在此字段插入值,默认为NULL值,如果指定了NOT NULL,则必须在插入值时在此字段填入值 DEFAULT 可以通过此属性来指定一个默认值,如果没有在此列添加值,那么默认添加此值MySQL数据表设计
标签:
热心网友 时间:2022-04-30 04:07
表统计信息是数据库基于成本的优化器最重要的参考信息;统计信息不准确,优化器可能给出不够优化的执行计划或者是错误的执行计划。对统计信息的计算分为非持久化统计信息(实时计算)与持久化统计信息。热心网友 时间:2022-04-30 05:25
应该是这样的:: select name,brand_id,concat(floor((sum(goods_num)/(select sum(goods_num) from tablename))*100),'%') as goods_num_rate from tablename group by name;