Mysql的数据类型

一:整型数据
	tinyint:1 byte
	smallint 2 byte
	mediumint: 3 byte
	int: 4 byte
	big: 8 byte
	这里详解tinyint,其他几种和它的用法类似。
	tinyint 无符号表示范围:0-255,有符号表示范围:-128-127
	1、 三个修饰的可选属性:tinyint(M) unsigned zerofill
		(M):宽度(在0填充时才有意义)
		unsigned:无符号(要是不写,默认是有符号的)eg:age tinyint unsigned
		zerofill:0填充(默认无符号)
	2、当不填充数据时,推荐使用设置默认值。因为不设置时,没数据时会默认null,但null不好
	   比较(比较null的语句为select x is null。返回值1表示是)。eg:not null default 0
	3、添加一个新列
		// 添加age列到表msg中,列是tinyint型,5位0填充,默认值为0
		eg: alter table msg add age tinyint(5) zerofill not null default 0;
		
二:小数型数据
	float(M, D) 浮点型小数
	decimal(M, D) 定点型小数
	M:表示小数的总位数,不包括小数点
	D:小数的位数
	eg:float(6, 2) 表示数的范围为:-9999.99 —— +9999.99
	   float(6, 2) unsigned 表示范围为: 0.00 —— +9999.99(与整型的无符号表示有点区别)
	float和deciaml的区别在于,后者表示的数据更精确。
	eg: alter table msg add age float(6, 2) zerofill not null default 0.0;
	这里要注意一下,0填充为:000.00 加小数点一共6位。
	
三:字符型数据
	char 		定长字符串		char(M) 		0	<= M <=	255
	varchar 	变长字符串		varchar(M)		0	<= M <=	65535
	text  		文本串			text 			存2万到6万个字符
	char与varchar的区别:
	1、存储范围不同
		上面的M代表存放字符的个数,如char(8)表示可以存放8个字符(注意:'a','王',
		前者占一个字节,后者占两个字节,但都只算一个字符)。varchar与char有点区别,
		它最多存放65535个字节的数据,由于一个utf8数据占3个字节,因此存放utf8的字符
		大约是两万个,这就是text为什么存放数据为2万到6万。
	2、空间利用率不同
		char是定长的:申请M个空间,实存N个空间,当N<M时还是占用M个空间
		varchar是变长的:申请M个空间,实存N个空间,当N<M时占用N+2byte个空间
		(2byte用来表示实际存储长度)
	3、对末尾空格的处理不同
		我们知道,char当实际存储空间小于申请空间时,剩下的空间用空格填充。
		因此当数据的末尾是空格时,char型存储会把空格当填充数据处理
		因此会导致数据的丢失。varchar就不会出现这种情况。
	4、定长的char型虽然有时候浪费空间,存储、读取速度快。
		
	text是文本类型,可以存比较大的文本段,但收索速度较慢,如果文本不是特别长
	建议用char或者varchar代替还有就是text不用加默认值,加了也没用。


四:时间类型:
	1、year类型:典型格式:1994	表示范围:1901——2155 注意:0000表示错误的选择
		当输入两位数时:00——69表示:2000年到2069年
						70——99表示:1970年到1999年
	2、date类型:典型格式:1949-10-01	表示范围:1000-01-01——9999-12-31
	3、time类型:典型格式:12:12:12		表示范围:-838:59:59——+838:59:59
	4、datetime类型:典型格式:1949-10-01 12:12:12		
					表示范围:1000-01-01 00:00:00 —— 9999-12-31 23:59:59
	
	时间戳:表示1970-01-01 00:00:00 到当前时刻的秒数。
	datetime类型表示时间虽然便于我们观察,但不便于计算机的运算,因此一般存储注册时间、
	商品发布时间等使用int来记录时间戳,这样既便于计算机运算,又便于转换成易于观察的格式。
	
	
	小知识点:
	1、在一条语句前面加入#号表示,该行为注释。eg: #时间类型:
	2、关于enum枚举类型。它是字符类型中的一种,但不太符合数据库的设计原则
		eg:
		// 插入时数据要么为'男', 要么为'女'
		create table gender(
		
			gender enum('男', '女')
		);
		// 正确(注意插入时不加列选项,表示插入所有列)
		insert into gender
		values
		('男');
		// 错误
		insert into gender
		values
		('王');
	
	
	
	
	
	
	
	

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值