最近遇到一些基础知识,发现快忘的差不多了,还得现写实验才能拿准。三年,就记不住了,还是整理一下吧。
先整理数据库之mysql方面的(mysql 5.1.47)。
1、关于column type
设置列的类别时,常常要指定长度,但是要注意,这个“长度”不一定跟“存储长度”有关。
其中,varchar、char等字符类型(找不出合适的叫法,就叫字符类型吧)跟“存储长度”有关,比如char(1)和char(200)的“存储长度”肯定是不一样的;
但是,int、bigint、smallint等数值类型就跟“存储长度”无关了,因为存储他们的字节数是一定的(三种各自都有各自的标准,不列了),那么,int(1)和int(50)的“存储长度”是一样的。问:既然这样,那问什么要指定呢?答:只是代表显示宽度。
2、mysql 设置 默认当前时间
有很多这样的需求,就是,当我向某表中插入一条数据时,不给createtime这个字段赋值,插入时,自动赋上当前时间的值。怎么做?
5.1.47这个版本目前只有一种形式:把列设置为 timestamp,并default current_timestamp,比如:
create table test
(
id int not null auto increment primary key,
createtime timestamp not null default current_timestamp
);
这样就可以了。
但是,当你在一个表中设置两个timestamp列、并想把他们都设成“默认当前时间”时,你会发现有问题了,mysql会提示你:一个表中只能设置一个列为default current_timestamp。
没办法了英雄,只能设置一个了。。。
3、Java读取NULL的数据
String:
表中有一列为:varchar,数据为:NULL时,那么:
string value = rs.getString("columnname"); // value == null
int、long等:
表中有一列为:int,数据为NULL时,那么:
int value = rs.getInt("columnname");// value == 0,java自动设置
而:
Object value = rs.getObject("columnname"); // value == null
待续。。。