Mysql基本内容之字段类型

来源:互联网 发布:怎样把淘宝店铺做好 编辑:程序博客网 时间:2024/06/10 21:41

综述

mysql中常用的数据类型有下面这些
mysql中的基本数据类型

整数类型

整型各类型的空间的值的区别

参数 所占字节 带符号最小值 无符号最小值 带符号最大值 无符号最大值 | tinyint 1 -128 0 127 255 smallint 2 -32768 0 32767 622335 mediumint 3 -8388608 0 8388607 16777215 int 4 -2147483648 0 2147483647 4294967295 bigint 8 -9223372036854775808 0 9223372036854775807 18446744073709551615

注意:最大值和系统有关系,如windows32位和64的最大值是不一样的,windows和linux的最大值也是不一样的;

使用形式:

//类型名【(长度)】  【unsigned】 【zerofill】tinyint(2) unsigned

说明:
1,长度:就是用来设定要“显示”的长度位数(数字个数),
2,unsigned:就是用于设定该类型中的数字没有符号(正负号),即没有负数;
3,zerofill:就是“填充0”的意思,即如果一个数字,没有达到指定的长度,则系统就会用0填充到其左边。
- 其中M表示“显示长度”,其需与zerofill结合使用才有效,即不够该长度的会自动左侧补0,当然如果超出也不影响。
- unsigned表示“无符号数”,表示其中的数值是“非负”数字
- 如果设置了zerofill,则自动也就表示同时具备了unsigned修饰
- 如果设置了zerofill但没有设定长度M,则其会默认将所有数的左边补0到该类型的最大位数

小数类型

浮点型:

单精度浮点型:float,其精度大约可以精确到6-7位;
双精度浮点型:double,其精度大约可以精确到15位左右;
特点:浮点型的小数,其内部的二进制形式,很可能是非精确的

定点型:

decimal,或使用dec。
形式:

//decimal(总精度,小数部分精度);decimal(12,2)

说明:
1,总精度,其实就是可以用于精确表达的位数,包括小数部分的位数和整数部分的位数;
2,总精度最大为65位,小数部分的精度(位数),最大为30位。

字符类型

char类型:

定长字符串,表示设定的长度,其存储的时候,就是该长度——不够就会自动补空格填满;
最大可设定为255,表示可存储255个字符;

varchar类型:

变长字符串,表示设定的长度,是可存储的最大长度,实际存储长度可以小于该长度;
该类型存储的时候,还需要在字段内的最前面额外存储该字段的实际长度;
最大可设定为65533,表示最大可存储65533个字符;
因为考虑因素:一行的总的存储空间限制是65535字节,
但有考虑字符编码的问题,又会出现:
如果存储的是纯英文字符,则实际最多可存储65533个字符;
如果存储的是纯gbk的中文字符,则实际最多可存储的是65533/2个字符;
如果存储的是纯utf8的中文字符,则实际最多可存储的是65533/3个字符;

text类型:

它通常用于存储“大文本”,因为其可存储65535个字节,并且,不受行存储空间的限制;

enum类型:

用于存储若干个“可选项之一”的一种字符类型。
通常,是在字段定义时,预先设定多个选项,而且是作为单选项,实际存储数据的时候,就可以选择其中一个存入数据库。
它适合于存储在网页中的“单选项”数据,比如:单选按钮,下拉列表选项值等等;
形式:

enum(‘单选项1’, ‘单选项2’, ‘单选项3’, ....... );     //最多65535个。

说明:
这些选项,在系统内部,实际对应的是如下这些数字值:1, 2, 3, 4, 5, 6, ….

set类型:

用于存储若干个“多选项”的一种字符类型。
通常,是在字段定义时,预先设定多个选项,而且是作为多选项,实际存储数据的时候,就可以选择其中若干个选项值存入数据库。
它适合于存储在网页中的“多选项”数据,比如:多选按钮;
形式:

set(‘多选项1’, ‘多选项2’, ‘多选项3’, ....... );      //最多64个。

说明:
这些选项,在系统内部,实际对应的是如下这些数字值:1, 2, 4, 8, 16, ….

时间和日期类型

date类型:

用于存储(记录)年月日这种时间的数据,其范围可以为:’1000-01-01’到’9999-12-31’

time类型:

用于存储(记录)时分秒这种时间的数据,其范围可以为:’-838:59:59’到’838:59:59’

datetime类型:

用于记录年月日时分秒这种较为精确的时间数据,其范围为:’1000-01-01 00:00:00’到’9999-12-31 23:59:59’

year类型:

用于记录一个年份数据,通常就是指年份数字,比如2018,1983,其有两种形式:
使用一个数字:
2位数字:1-99之间
4位数字:1901-2155之间
使用一个字符串:
2位字符串:’00’到’99’
4位字符串:’1901’到’2155’

timestamp类型:

用于记录一个“当前时间”的精确的时间戳——也就是某个时刻的对应整数值;
该整数值,表示,从1970年1月1日0时0分0秒开始算起到该时候所经历的秒数;
而且,其有如下特征:
该字段的值,会在一个表的某行数据执行insert或update的时候,自动获取该时刻的时间戳值;

注意:
作为时间日期类型的数据,如果是在代码中插入一个具体的字面数据值,则需要用单引号引起来——跟字符类型一样。
如果是存时间戳的话可以直接用int类型,查询的时候效率更高

原创粉丝点击