您的位置:首页 > 数据库 > MySQL

mysql入门之三大列类型

2016-07-28 11:25 483 查看
数据库的概念大致可以分为三层,数据库服务器、库、表。数据库服务器相当于仓库管理员,帮助我们对数据进行管理。库就相当于仓库,用来存放数据。所有的数据最后都是以表(文件)的形式存储的,我们与表的交互也是最多的。我们知道,建立一张表最重要的就是定义表头,也就是声明列的过程。为了使每列的数据既能够存储的下,又不至于浪费很多空间,所以要学习列的类型。
列的类型大致分为三类:
数值型:
整型:
tinyint/smallint/mediumint/int/bigint
小数型:
float(M,D)/decimal(M,D)

字符串型:
char(M)/varchar(M)/text

日期和时间型:
日期: date
时间: time
日期和时间型: datetime
年: year

一、数值型
1、整型
整型系列的存储范围如下:





2、整型的可选属性
例:tinyint(M) unsigned zerofill;
M:表示宽度(在0填充的时候才有意义)
unsigned:表示无符号类型
zerofill:表示0填充(默认是无符号)

假如我们要给100名学生进行编号,则应该选用tinyint型,为了使所有学生的号码都是同样的宽度,则用001表示第一名,依次类推。则001就是用0进行填充的。





可以看到这与我们的结论不一样,这是因为M只在0填充的时候才有意义,注意观察id的类型:





下来我们增加一列id2





可以看到id2的类型,接下来在增加一条信息。





3、小数型
小数型分为浮点型float(M,D)和定点型decimal(M,D)。在这里M表示总的位数,不包括小数点,D表示小数位。
例:对于float(4,2)表示的范围就是-99.99~+99.99,无符号的话就是0~+99.99。

其中decimal更精确。
例如:float(9,2),decimal(9,2),分别输入1234567.23观察其值。





可以看到float进行了四舍五入,而decimal则保留了原有的数据。

二、字符串型





注意:M表示字符的个数,不是字节个数。

char和varchar的区别:
1、char定长:申请M个空间,存入小于M个字符,实际占M个字符。
2、varchar变长:申请M个空间,存入N个字符,N<=M,实际占N个字符。
3、一般情况下varchar的空间利用率更高。
5、char(M)存字符的时候,若实际存入的字符个数小于M,则以剩余的空间以空格填充。而当取出这部分内容时,最后一个字符后面的空格全部都被省略。varchar在存入的时候和取出的时候保持数据的一致性。
6、使用定长速度更快。

三、日期和时间类型





1、year是用一个字节表示的,从1901到2155年,还有一个字节表示0000年,用来表示非法的数值。
2、一般都不用datetime类型,而用时间戳。时间戳就是1970-01-01 00:00:00到当前的秒数。

四、枚举类型
命令: 列名 enum('情况');

五、SET类型

SET是一个字符串对象,可以有零或多个值,其值来自表创建时规定的允许的一列值。指定包括多个SET成员的SET列值时各成员之间用逗号(‘,’)间隔开。这样SET成员值本身不能包含逗号。

例如,指定为SET('one', 'two') NOT NULL的列可以有下面的任何值:

''

'one'

'two'

'one,two'


SET最多可以有64个不同的成员。

附加:
1、新增一列
假如我们新建了一张stu表,表中只有name和id两列。





现在我们要新增age这一列,可以采用命令:alter table stu add 列名 类型。





2、我们发现NULL很讨厌,在mysql里面NULL与任何值比较的结果都为NULL,所以NULL的判断都用is null,is not null。所以我们在声明列的时候一般都指定期默认值的。
命令:列名 类型 not null default 0;
例:接着上面的题,我们再新增一列id2.

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: