1.整数:
tinyint 1bit
smallint 2bit
mediumint 3bit
int 4bit
bigint 8bit
java中整数是byte,short,int,long, 分别是1,2,4,8 储存的时候可以对应起来-。- mediumint感觉没什么用。。。
CREATE TABLE table1( num1 INT, #有符号,支持负数, oracle注解可以用//,meysql不行,不过两个都可以用/* */ num2 INT UNSIGNED #无符号,只能插入正数 )
定义的时候的int(10) , 10代表的显示长度,int默认为11(因为最大值是个11位的数字)
2.浮点型
CREATE TABLE table2( num1 FLOAT, #4字节 num2 DOUBLE, #8字节 num3 DEC(5,3) #整数+小数 5位,小数3位,可设置的最大范围和double一样 )
3.字符型
CREATE TABLE table3( num1 CHAR(10), #固定长度,相当于oracle中的varchar,括号里的数字是字符长度,默认为1 num2 VARCHAR(10) #可变长度,相当于oracle中的varchar2 )
4.枚举
CREATE TABLE table4( sex ENUM ('男','女') #enum里面只能是字符串 ); INSERT INTO table4 VALUES('男'), ('女'), ('女'), ('男'), ('男'); #如果插入不是enum的值会报错,据说以前貌似会插入空值,网上说可以('男','女')这么插入,但是我试的时候不行,感觉版本变化蛮大的,还是尽量正规方法来吧 SELECT COUNT(*) FROM table4 WHERE sex = '男'; SELECT COUNT(*) FROM table4 WHERE sex = 1; #下标从1开始,所以男是1,女是2,可以直接用下表取值。
5.日期
date 年月日
datetime 年-月-日 时:分:秒
timestamp 年月日时分秒
time 时:分:秒
year 年
CREATE TABLE table5( t1 TIMESTAMP, # 修改时区后数值会跟着改变 t2 DATETIME # 数值不变 ); INSERT INTO table5 VALUES(NOW(),NOW()); SHOW VARIABLES LIKE 'time_zone'; #查询时区 SET time_zone = '+9:00'; #修改时区 SELECT NOW(); #t1变了,t2不变 SET time_zone = 'SYSTEM'; #把时区改回去