玖叶教程网

前端编程开发入门

MySQL基础知识数据类型(mysql数据类型和用途)

在数据库中,表是存储数据的容器,是最重要的数据库对象。一个完整的表包括表结构和表数据(也叫记录)两部分内容。表结构的操作包括定义表的字段(字段名及数据类型)、约束条件、存储引擎以及字符集、索引等内容。表记录的操作包括表记录的增、删、改、查等。

表结构的管理包括创建表(create table)、修改表结构(alter table)、删除表(drop table)以及索引的管理。

创建表时,为每张表的每个字段选择合适的数据类型不仅可以有效地节省存储空间,同时还可以有效地提升数据的计算性能。MySQL提供的数据类型包括数值类型(数值类型包括整数类型和小数类型)、字符串类型、日期类型、复合类型(复合类型包括enum类型和set类型)以及二进制类型。

MySQL主要支持5种整数类型:tinyint、smallint、mediumint、int和bigint。这些整数类型的取值范围依次递增。默认情况下,既可以表示正整数,又可以表示负整数(此时称为“有符号数”)。如果只希望表示零和正整数,可以使用无符号关键字“unsigned”对整数类型进行修饰(此时称为“无符号整数”)。例如,把一个人的年龄,或者订单的id定义为无符号整数。将年龄字段定义为无符号整数,可以使用SQL 代码片段“age tinyint unsigned”,其中unsigned用于约束年龄字段的取值,使其不能为负数。

MySQL支持两种小数类型:精确小数类型decimal(小数点位数确定)和浮点数类型(小数点位数不确定)。其中,浮点数类型包括单精度浮点数与双精度浮点数,float用于表示单精度浮点数,double用于表示双精度浮点数。双精度浮点数类型的小数的取值范围和精度远远大于单精度浮点数类型的小数,但同时也会耗费更多的存储空间,降低数据的计算性能。decimal(length, precision)用于表示精度确定(小数点后数字的位数确定)的小数类型,length决定了该小数的最大位数,precision 用于设置精度(小数点后数字的位数)。例如,decimal (5,2)表示小数的取值范围是-999.99~999.99,而decimal(5,0)表示-99 999~99 999的整数。decimal(length, precision)占用的存储空间由length以及precision共同决定。例如,decimal(18,9)会在小数点两边各存储9个数字,共占用9个字节的存储空间,其中4个字节存储小数点之前的数字,1个字节存储小数点,另外4个字节存储小数点之后的数字。无符号关键字(unsigned)也可以用于修饰小数。例如,定义工资字段salary,可以使用SQL代码片段“salary float unsigned”,其中unsigned用于约束工资,使其不能为负数。float和double取的都是近似值,跟java中的定义一样。

MySQL主要支持6种字符串类型:char、varchar、tinytext、text、mediumtext和longtext。字符串类型的数据外观上使用单引号括起来,例如姓名'张老师'、课程名'java程序设计'等。

char(n)为定长字符串类型,表示占用n个字符(注意不是字节)的存储空间,n的最大值为255。例如,对于中文简体字符集gbk的字符串而言,char(255)表示可以存储255个汉字,而每个汉字占用两个字节的存储空间;对于一个utf8占用255个字符长度的存储空间,哪怕里面只存储一个汉字不足的会使用空格补上。除了varchar(n),tinytext、text、mediumtext和longtext等数据类型也都是变长字符串类型。变长字符串类型的共同特点是最多容纳的字符数(即n的最大值)与字符集的设置有直接联系。varchar(n)中n的最大取值为65535(因为需要别的开销,实际取值为65 532);

MySQL主要支持5种日期类型:date、time、year、datetime和timestamp,其中,date 表示日期,默认格式为'YYYY-MM-DD';time 表示时间,默认格式为'HH:MI:ss';year 表示年份;datetime与timestamp 是日期和时间的混合类型,默认格式为'YYYY-MM-DD HH:mi:ss'。外观上,MySQL日期类型的表示方法与字符串的表示方法相同(使用单引号括起来);本质上,MySQL日期类型的数据是一个数值类型,可以参与简单的加、减运算。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言