mysql数据类型和字段属性原理与用法详解
本文实例讲述了mysql数据类型和字段属性。分享给大家供大家参考,具体如下:
本文内容: 数据类型 数值类型 整数型 浮点型 定点型 日期时间类型 字符串类型 补充: 显示宽度与zerofll 记录长度 字段属性 空不为空值:NULL、NOT NULL 主键:primary key 唯一键:unique key 自增长:auto_increment 默认值:default 字段描述:comment 补充: 复合键首发日期:2018-04-08
数据类型:mysql的数据类型就是存储数据的类型。
数值类型: 整数类型:tinyint,smallint,mediumint,integer,bigint 默认是有符号,如果需要使用无符号的数据类型要在后面加'UNSIGNED'类型 简写 字节大小 (signed)范围 (unsigned)范围 备注 整数型: TINYINT 1 0~255 -128~127 SMALLINT 2 0~65535 -32768~32767 MEDIUMINT 3 0~16777215 -8388608~8388607 INTEGER INT 4 0~4294967295 -2147483648~2147483647 BIGINT 8 0~264-1 -263~263-1 小数类型: 浮点类型:float(size,d),double(size,d) size是数值的最大位数,d是小数点右侧的位数(即使你没输够那么多位也会补全那么多位)。 FLOAT的精度为6~7位(依据情况不同?毕竟机器是以二进制存储的),DOUBLE的精度为14~15位 整数部分的个数为SIZE-D,直接存入的值的个数不能多于这个,但如果浮点数四舍五入导致整数进位而溢出超过最大位数的,系统允许成立(某些版本貌似已经不允许了,所以一般小数位也不要超过)。 很多时候没必要关注两个浮点的数值范围大小(是极大的),注重点应该是它的精度。


时间日期类型包括date,time,datetime,timestamp,year;
Datetime:时间日期,格式是YYYY-MM-DD HH:II:SS,表示的范围是从1000到9999年(有些版本已经允许0-9999?不确定);




create table my_set(hobby set(’football’,’basketball’,’pingpong’,’computer’))charset utf8;insert into my_set values(’basketball,computer’);insert into my_set values(3);-- 3=0011insert into my_set values(5);-- 5=0101
create table my_enum(gender enum(’male’,’female’,’unknown’))charset utf8;



create table myInt(t1 TINYINT(3));drop table myInt;insert into myInt values(127),(1);select * from myInt;alter table myInt modify t1 tinyint(3) zerofill;select * from myInt; 不要轻易的使用最大限度来存储字符串,因为涉及记录长度问题 : MySQL中规定任何一条数据最长不能超过65535个字节 如果有任何一个字段允许为空,那么系统会自动从整个记录中保存一个字节来存储NULL; text文本不占用记录长度,额外存储。 UTF8中varchar的最大限度:65535-2(需要两个字节来存储长度) /3=21844,所以最大字符数为21844 GBK中varchar的最大限度:65535-2(需要两个字节来存储长度) /2=32766 字段属性:
字段属性是字段除数据类型外的属性,一般有空不为空值、主键、唯一键、自增长、默认值、描述等属性。
空不为空值:NULL、NOT NULL 字段的数据默认情况下是允许为空的,比如说一条人的信息记录中可以没有邮箱(或许有些人考虑用“空字符串”来代表),我们允许可以不填入数据的字段可以设置为null;但比如说某些必填数据,我们不想填入的时候留空,可以设置这个字段为not null 允许为空时的数据,空的数据显示为null:






alter table 表名 drop primary key; 唯一键:unique key 唯一键的功能与主键有点类型,但不同的是主键只能有一个,唯一键可以有多个,而且唯一键的字段的数据允许为空。 唯一键可以约束字段,使得字段的数据不能重复 如果唯一键同时也有not null,并且表中没有主键的话,在desc查看表结构中会显示成主键 如果唯一键也不允许为空,那么功能与主键相同 唯一键的定义方法可以参考主键的。 唯一键的删除:
alter table 表名 drop index 唯一键名; -- 唯一键默认使用字段名来定义名字 自增长:auto_increment 自增长的功能是可以使某个字段的数据随着记录的插入而进行增长(不给这个字段插入数据的情况下) 自增长的前提是这个字段必须是一个“索引”,比如主键、唯一键 自增长的前提这个字段的数据类型是一个数值型的,(如果给了float,也不会增长成小数,而仅仅是整数) 一个表只能有一个自增长。 只有不给值,或者给null的情况下,才能正确自增长;如果某一次自增长失败了,那么下一次会从当前字段的最大值开始继续自增长。 自增长的定义方法:;当然也可以通过修改字段的形式来给字段定义not null属性 自增长的修改: 修改增长速度:set auto_increment = 值; 修改下次增长的值:alter table 表名 auto_increment = 值; 【修改的值只能变大,不能变小,因为可能导致数据重复问题】 自增长的查看:show vairable like 'auto_increment%'; 自增长的删除:利用alter来删除,alter修改字段属性的时候如果不带上原来的属性就会被删掉: 默认值:default 默认值的功能是当我们不给一个字段赋值的时候,使用默认值作为数据,比如不选择性别的时候,默认使用“保密”; 默认值的定义方式:
字段描述:comment 字段描述是用来描述字段的,能在查看数据表创建语句的时候显示出来(不会再select结果中显示出来),可以帮助我们了解某一个字段的意义。 定义方式:
补充: 复合键:可以将多个字段组成一个键,比如学生可以选多门课,但学生号跟课程号一起的时候应该是唯一的,这里使用主键来限制这个情况 定义方法(复合以主键为例):
数据约束(以上面的表为例):
更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL查询技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》、《MySQL数据库锁相关技巧汇总》及《MySQL常用函数大汇总》
希望本文所述对大家MySQL数据库计有所帮助。
相关文章:
1. MySQL收归Oracle 开源数据库或将很受伤2. Mybatis数据批量插入如何实现3. Oracle向Apache基金会捐赠ADF项目4. Sql Server下数据库链接的使用方法5. 解决mybatis使用foreach批量insert异常的问题6. Aqua Data Studio 4.7 发布- Oracle DBA 工具7. Mybatis查询方法如何实现没有返回值8. 在sqlserver2005中安装sql server 2000的示例数据库northwind9. 基于mybatis batch实现批量提交大量数据10. SQL Server Express 数据库自动部署问题及解决