
#创建表
CREATE TABLE `user`(
id INT,
`name` VARCHAR(255),
`password` VARCHAR(255),
birthday DATE)
CHARACTER SET utf8 COLLATE utf8_bin ENGINE INNODB;
1、TINYINT:1字节
2、SMALLINT:2字节
3、MEDIUMINT:3字节
4、INT:4字节
5、BIGINT:8字节
在能够满足需求的情况下,尽量选择占用空间小的类型
#如果没有指定unsigned,则TINYINT就是有符号的
#如果指定unsigned,则TINYNIT就是无符号
CREATE TABLE `user`(
id TINYINT UNSIGNED);INSERT INTO `user` VALUES(128);
1.基本使用:
bit(M)
M指定位数,默认为1,范围1-64
2.细节说明:
bit字段显示时,按照位的方式显示
查询的时候仍然可以使用添加的数值
如果一个值只有0/1,可以考虑使用bit(1),可以节约空间
CREATE TABLE t1(
num BIT(8));
#显示按照位的方式
INSERT INTO t1 VALUES(1);
1.float:单精度,4字节
2.double:双精度,8字节
3.decimal[M,D]:大小不确定,可以支持更加精确的小数位,M是小数位数的总数,D是小数点(标度)后面的位数。如果D是0,则值没有小数点或分数部分。M最大65,D最大30,如果D被省略,默认为0,如果M被省略,默认为10
如果希望小数的精确度更高,推荐使用decimal
char(size):固定长度字符串,最大255字符
varchar(size):可变长度字符串,最大65532字节
使用细节:
1.char(4)这个4表示字符数(最大255),不是字节数,不管是中文还是字母都是存放四个,按字符计算;varchar(4)这个4表示字符数,不管是字母还是中文都以定义好的表的编码来存放数据;不管是中文还是英文,都是最多存放4个,是按照字符来存放的
2.char(4)是定长(固定的大小),就是说,即使插入'aa',也会占用分配的4个字符的空间,多余空间浪费;varchar(4)是变长,就是说,如果插入了'aa',实际占用空间大小并不是4个字符,而是按照实际占用空间来分配(varchar本身还需要占用1-3个字节来记录存放内容长度)
3.什么时候使用char,什么时候使用varchar
如果数据是定长,推荐使用char,如:密码,邮编,手机,身份证号等
如果一个字段的长度是不确定的,推荐使用varchar,如:留言,文章等
查询速度:char >varchar
4.在存放文本时,也可以使用Text数据类型,可以将Text列视为varchar列,注意Text不能有默认值,大小0-2^16字节,如果希望存放更多字符,可以选择mediumtext(0-2^24)或者longtext(0-2^32)
CREATE TABLE t1(
birthday DATE,
job_time DATETIME,
login_time TIMESTAMP
NOT NULL DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP);#更新表中某条记录,login_time列以当前时间自动更新,需配置
INSERT INTO t1(birthday,job_time)
VALUES('2022-11-11','2022-11-11 10:10:10');
