mysql 性别存储
2013-09-22 14:34 youxin 阅读(25998) 评论(0) 收藏 举报大家在设计数据库时,碰到 性别、状态等 这些 值比较固定的列时,数据类型 是如何定义?
通常都是采用 :
| 1 | createtable`XXX` | 
| 2 | ( | 
| 3 | ........ | 
| 4 | sex int(1) notnullcomment '0:男 1:女', | 
| 5 | status int(1) notnullcomment '0:开启 1:关闭' | 
| 6 | ) | 
这种设计吗 ?
还是?
| 1 | createtable`XXX` | 
| 2 | ( | 
| 3 | ........ | 
| 4 | sex enum('男','女') notnull, | 
| 5 | status enum('开启','关闭')  notnull | 
| 6 | ) | 
设置成枚举类型 ,也有它的道理,参考:
MySQL性能优化的最佳20+条经验 第九条 。
转自:http://www.oschina.net/question/99114_21864
其中comment表示注释:参考:http://bbs.csdn.net/topics/330026710
另一篇文章用的是enum类型
MySQL的各种复杂字段解析-enum,char,decimal
1.MySQL中ENUM类型的使用之性别男女设定默认为男:
SQL语句为:
mysql> create table student (id int(11) primary key auto_increment,name varchar( 10) NOT NULL,sex enum('男','女','保密')default '保密')ENGINE=InnoDB;
写入:
mysql>insert into student (name,sex) value ('张三','男')
注:enum中如果默认是'保密',则括号里也要有'保密'这项。
phpmyadmin操作如下图:
 
 
 
2.decimal:定点小数
decimal(p,s);
例如:decimal(2,1),有效长度为2,小数位占1位。
此时,插入数据“12.3”、“12”等会出现“数据溢出错误”的异常;插入“1.23”或“1.2345...”会自动四舍五入成“1.2”;插入“2”会自动补成“2.0”,以确保2位的有效长度,其中包含1位小数。
3.varchar和char:
varchar:字符串型,不定长,溢出则截取掉,不足则不补满。如:varchar name(10);
char:字符串型,定长,溢出则截取掉,不足则补满。如:char password(32),多用于密码md5值长度固定为32位。
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号