mysql_数据类型

作者: 鲁智深 分类: PHP 发布时间: 2015-09-24 17:10

整数型:

tinyint:无符号型0-255 有符号-128~127,tinyint占1个字节是2的8次方等于256

smallint:无符号型0-65535 有符号-32768~32767,占2个字节是2的16次方等于65536

mediumint:无符号型0-16777215 有符号-8388608~8388607,占3个字节是2的24次方等于16777216

int:无符号型0-4294967295 有符号-2147483648~2147483647,占4个字节是2的32次方等于4294967296

bigint:无符号型0-1.844674407371E+19 有符号-9.2233720368548E+18~9.2233720368548E+18,占8个字节是2的64次方等于1.844674407371E+19

属性:

unsigned

设置无符号的类型unsigned比如:alter table text add height tinyint unsigned;

数值型后面的小括号中的数字的含义tinyint(4),能表示存放最大数的位数,有符号加1(符号位)

zerofill

用0填充zerofill比如:alter table text add height tinyint zerofill;

根据定义类型的宽度,如果插入数值的位数不够是,自动在左边补零,因为补上0以后,不能表示负数,所以字段变成无符号型。

null , not null

alter tbale text add height tinyint not null default 150;

一般设置成not null,否则插入没有给值字段时会写入null,配合 default value使用。

auto_increment

自动增长,常用于主键配合使用

primary key

alter tbale text add id int auto_increment primary key;

主键(not null + unique),用来标志表中记录的唯一性,加上主键后自动加上not null,一张表中只能给一个字段加主键

小数型:

float(M,D):float(5,2) (-999.99->999.99)插入的值小数部分常常会被取近似值

decimal(M,D)又叫严格浮点数,在插入数据时候,不会自动取近似值

M:表示整数位加小数位+小数位位数

D:表示小数位的位数

字符串:

char(L)

L:字段可以存放的字符数(L<=255) ac我:3个字符

varchar(L)

最大能存放65535字节,如果说L=100,就表示这个字段能存放最大长度是100字符串(中英文)。

问题L最大?

最大能存65535字节,其中用2个资金来表示自己,1表示第1位不用的

编码是utf8,能表示最大字符是(65535-1-2)/3 = 21844

char和varchar区别:

1、char是定长的(如果存入的字符长度小于定义的长度,但所占空间不变)

2、varchar是变长的(存入多长,就占多少空间)

3、char最大只能是255字符,varchar最大是218844字符(utf8)或者32766字符(gbk)

4、由于char是定长的所以比varchar的运行效率高

5、char如果存入空格,取出数据时会被当成补空格处理掉

text

tinytext:0-255字节

text:0~65535字节(一般用于文章存储)

mediimtext:最多可以存储2^24-1字节

longtext:2^34-1字节

enum枚举型

alter table text add sex enum(“male”,”febale”,”secret”);

insert into text values(“secret”);

1
2
3
4
create table user(
        userId int(4) auto_increment primary key,
        userSex enum("1","2")
     )

日期时间型;

data 日期

格式:YYYY-MM-DD

取值范围 10000-01-01》9999-12-31

time 时间

格式:HH:MM:SS

取值范围:-838:59:59》838:59:59

datetime 日期时间型

格式:YYYY-MM-DD HH:MM:SS

取值范围:1000-01-01 00:00:00 》99999-12-31 23:59:59

timestamp 时间戳类型

时间戳:从1970-01-01 00:00:00 到当前这个时刻的所有秒数

重点关注current_timestamp属性

插入时更新当前时间戳

格式:字段名 timesramp not null default current_timestamp;

更新时更新当前时间戳

格式:字段名 timesramp on update current_timestamp;

注意:

1、按实际需求业务需要,选择适当的类型,选择太大的类型,会浪费空间。

2、如果插入的数值超过定义类型大小范围,会自动插入边界值

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

2条评论
  • 小逗比

    2018 年 4 月 30 日 03:28

    请问这个第四行一直报错
    create table article (
    h1 varchar(40),
    create_time date default null,
    like int(6) DEFAULT NULL,
    match_bookmark int(6) default null,
    comments_bookmark int(6) default null,
    category_tag_itme varchar(20),
    img_url varchar(50),
    img_url_path varchar(50),
    detail_url varchar(50) primary key not null
    ) charset=utf8;

    1. 鲁智深

      2018 年 5 月 1 日 03:30

      like 不能用户字段名称

发表评论

电子邮件地址不会被公开。 必填项已用*标注