mysql创建表字段注意点

create table student_info (
id int unsigned not null auto_increment primary key comment '自增主键 mysql自用', ##【说明:每张表都要有本字段,这个id为mysql自身维护聚集索引数据,业务不要使用】
gmt_create datetime not null default current_timestamp comment '创建时间,自动填充insert时间', ##【说明:每张表都要有本字段,行记录生成时间】
gmt_modified datetime not null default current_timestamp on update current_timestamp comment '修改时间,自动更新修改时间', ##【说明:每张表都要有本字段,行修改后的时间】
gmt_del tinyint unsigned not null default 0 comment '是否删除, 1-已删除, 0-未删除', ##【说明:每张表都要有本字段】
user_id int unsigned not null default 0 comment '用户ID', ##【说明:有符号的int最大可存24亿,如加unsigned,即无符号时,数值范围会翻倍,可以存42亿,所以无需使用bigint,尽量用数值代替UUID字段串,uuid离散无序,不易索引】
name varchar(20) not null default '' comment '姓名', ##【说明:20个字符足够存储姓名,varchar够用就好,不宜过大,占空间】
sex tinyint unsigned not null default 2 comment '性别, 1-男, 0-女, 2-未填', ##【说明:数值比字符串的性能快太多,默认值可按需设置】
age tinyint unsigned not null default 0 comment '年龄', ##【说明:tinyint无符号最大可存到255,人的年龄寿命完全在这个范围内】
identity_card char(18) not null default '' comment '身份证号', ##【说明:身份证号就固定位数,共18位,用char】
birthday date not null default '0000-00-00' comment '生日', ##【说明:date类型示例】
sno mediumint(8) unsigned zerofill not null default 0 comment '学号', ##【说明:学号 用mediumint最大可存到1千6百万,足够用,前缀0补齐到8位,如00000158】
city enum('beijing','shanghai','guangdong','shenzhen','other') not null default 'other' comment '是否来自一线城市,哪个', ##【说明:枚举类型示例】
province tinyint unsigned not null default 0 comment '来自哪个省份, 0-未填,1-北京, 2-河北,3-天津,4-山东,5-湖南,6-安徽,7-海南......', ##【说明:数值如果无负数需求,一律用无符号这个规范习惯】
head_url varchar(100) not null default '' comment '用户头像URL', ##【说明:按需给值】
mobile_phone char(11) not null default '' comment '手机号码', ##【说明:手机号为固定值11位,用char(11),不要用varchar】
telephone varchar(20) not null default '' comment '座机号码', ##【说明:座机号码不固定 用varchar】
address varchar(60) not null default '' comment '地址信息', ##【说明:按需要给字符数】
email varchar(35) not null default '' comment '电子邮箱', ##【说明:按需给值】
content varchar(5000) not null default '' comment '客服与用户的聊天内容', ##【说明:尽量用varchar代替text,text性能弱很多,如果字符超过8000,再考虑用text】
total_call_time smallint unsigned not null default 0 comment '当天通话时长', ##【说明:smallint无符号支持最大65535换算成秒为18小时,足够存储当天的通话时长,空间占2字节;无需使用int,会占4字节】
ip int unsigned not null default 0 comment '登录ip地址', ##【说明:ip地址固定长度,用数值表示比varchar快很多 可用内部函数进行转换 如inet_ntoa(4294967295)转成255.255.255.255 】
total_account decimal(20,2) DEFAULT '0.00' COMMENT '账户总额', ##【说明:浮点类型示例,钱还可以使用int类型 以'分'为单位存储】
index idx_identity_card (identity_card), ##【说明:索引名都要使用小写字母】
index idx_mobile_phone (mobile_phone),##【说明:索引要前缀idx_】
unique index uqidx_user_id (user_id), ##【说明:唯一索引要前缀uqidx_】
index cpidx_name_age (name,age) ##【说明:复合索引前缀cpidx,列以最左匹配原则】
)
engine=innodb ##【说明:存储引擎一律使用innodb】
default charset=utf8mb4 collate=utf8mb4_general_ci ##【说明:为达到更好的兼容性,都采用该字符集】
comment='学生信息表'; ##【说明:1.以上是有常用的各数值类型的示例,每字段都有默认值,且都消除了null值,null值不易计算比对,性能差 2.命名上(如库名、表名、字段名、索引名)全为小写字母,分开时加下划线"_",不要使用"-",禁止超过32个字符 2. 3.尽量用数值代替字符串 4.给值时够用就好,尽可能不使用text,可用varchar代替; 慎用bigint、longtext、blob】

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值