字符串型: 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.