MySQL学习笔记(3)
时间:2006-12-12 来源:bitterness
mysql数据类型
-
数字类型
日期和时间类型
字符串(字符)类型
--------
数字类型
---
---decimal=numcric //作为字符串存储,不是以二进制浮点数
商品价格888.88 price decimal(5,2) //数字总长度为5位,小数位是2位,小数点不占位数
create table t (a decimal(5,2))
insert into t values(100.111);
select * from t;
100.11 //会丢掉最后一个1
insert into t values(1000000000000000);
select * from t;
100.11
9999.99 //对很大的数,以最高值来表示
----
mysql中整数有5种
integer(int 4个字节,2的32次方减1),smallint,tinyint,bigint,..
create table zhen(a int);
insert into t values(1.1);
insert into t values(1.5);
select *from t;
1
2
--------
所有的整形实数可以有一个可选(非标准的)属性unsigned,如果希望在一个列中只允许正值并需要一个稍大一点的数字范围,就可以使用无符号值
create table test(price int unsigned);
---------
单精度浮点数,4个字节 float
也可以指定精度如:col float(4,2);
也可以是无符号数,如col float(4,2)unsigned
双精度浮点数,8个字节 double
real,
----------
日期和时间类型
datatime,date,timestamp(时间戳,和datatime差不多),time,year
注意:MYSQL允许存储不严格的,合法的日期,例如
1999.11.31 //11月没有31号,mysql不管
datatime : yyyy-mm-dd hh:mm:ss
date : yyyy-mm-dd
reate table tt(a datetime);
insert into tt values('2006-11-22 18:58:12');
insert into tt values(now());
-------
timestamp yyyy-mm-dd hh:mm:ss
范围1970-2037,任意一时刻
如果插入超过这个范围的,显示的是0000-00-00-00:00:00
--------
time : hhh:mm:ss
-838:59:59~838:59:59
小部分可以>24,time类型不仅可以用于表示一天的时间,还可以表示所经过的时间或二个事件之间的时间间隔,可是一个负值
不合法的值转为00:00:00
-------
year类型是一个以1个字节描述年份
yyyy 1901-2155
超出的置0000
--------
固定长度char
name char(10), n(长度)<255
可变长度varchar 开销位:1
name varchar(10), 需要11个字节,n<255
如果name只用了4个,就分配5个字节
blob tinyblob,medimblob,longblob
可以保存可变长度数据的二进制大对像 n<216 ,开销位:2
-------
test类似blob
是一个忽略字母大小写的blob
--------
ENUM 枚举类型 通常是一个允许的值列表
level enum("A","B","C","D")
-
数字类型
日期和时间类型
字符串(字符)类型
--------
数字类型
---
---decimal=numcric //作为字符串存储,不是以二进制浮点数
商品价格888.88 price decimal(5,2) //数字总长度为5位,小数位是2位,小数点不占位数
create table t (a decimal(5,2))
insert into t values(100.111);
select * from t;
100.11 //会丢掉最后一个1
insert into t values(1000000000000000);
select * from t;
100.11
9999.99 //对很大的数,以最高值来表示
----
mysql中整数有5种
integer(int 4个字节,2的32次方减1),smallint,tinyint,bigint,..
create table zhen(a int);
insert into t values(1.1);
insert into t values(1.5);
select *from t;
1
2
--------
所有的整形实数可以有一个可选(非标准的)属性unsigned,如果希望在一个列中只允许正值并需要一个稍大一点的数字范围,就可以使用无符号值
create table test(price int unsigned);
---------
单精度浮点数,4个字节 float
也可以指定精度如:col float(4,2);
也可以是无符号数,如col float(4,2)unsigned
双精度浮点数,8个字节 double
real,
----------
日期和时间类型
datatime,date,timestamp(时间戳,和datatime差不多),time,year
注意:MYSQL允许存储不严格的,合法的日期,例如
1999.11.31 //11月没有31号,mysql不管
datatime : yyyy-mm-dd hh:mm:ss
date : yyyy-mm-dd
reate table tt(a datetime);
insert into tt values('2006-11-22 18:58:12');
insert into tt values(now());
-------
timestamp yyyy-mm-dd hh:mm:ss
范围1970-2037,任意一时刻
如果插入超过这个范围的,显示的是0000-00-00-00:00:00
--------
time : hhh:mm:ss
-838:59:59~838:59:59
小部分可以>24,time类型不仅可以用于表示一天的时间,还可以表示所经过的时间或二个事件之间的时间间隔,可是一个负值
不合法的值转为00:00:00
-------
year类型是一个以1个字节描述年份
yyyy 1901-2155
超出的置0000
--------
固定长度char
name char(10), n(长度)<255
可变长度varchar 开销位:1
name varchar(10), 需要11个字节,n<255
如果name只用了4个,就分配5个字节
blob tinyblob,medimblob,longblob
可以保存可变长度数据的二进制大对像 n<216 ,开销位:2
-------
test类似blob
是一个忽略字母大小写的blob
--------
ENUM 枚举类型 通常是一个允许的值列表
level enum("A","B","C","D")
相关阅读 更多 +