mysql 表中性别字段用了int类型,想加check约束
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 表中性别字段用了int类型,想加check约束相关的知识,希望对你有一定的参考价值。
CREATE TABLE reader(
seq INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
readername VARCHAR(20),
passwd VARCHAR(20),
gender INT,
age INT,
region VARCHAR(50),
phone DOUBLE,
);
ALTER TABLE reader ADD CONSTRAINT col1_check CHECK (gender IN(0,1));
这样为什么不行呢,性别用3还是能插入进去,求解释,或者有更好的设计表的方法,求
对于所有的存储引擎,CHECK子句会被分析,但是会被忽略。请参见13.1.5节,“CREATE TABLE语法”。接受这些子句但又忽略子句的原因是为了提高兼容性,以便更容易地从其它SQL服务器中导入代码,并运行应用程序,创建带参考数据的表。请参见1.8.5节,“MySQL与标准SQL的差别”。-------------摘抄自mysql5.1手册13.1.5章节
至于做限制,因为是从前台取的数据,完全可以通过在页面上加下拉菜单来控制,性别项就给出男女两种选择就可以了,
如果在数据库中用枚举列也能做到,可参照yaogogo2010的方法,
-----------------------------------------------
那我在前台取数据的时候是用什么方法呢,如果是varchar这种类型的可以用getString,int用getInt,这种类型用什么呢? 回答:int和String都可以 参考技术A 可以将字段这么写,就限定了可以写入的内容
gender ENUM('0','1')追问
那我在前台取数据的时候是用什么方法呢,如果是varchar这种类型的可以用getString,int用getInt,这种类型用什么呢
本回答被提问者采纳mysql 用户表,性别的字段怎么建最好,给个脚本看看
性别字段一般取值为“男”或“女”,(或者其他字母代替),数据类型可选择char类型,但一定要是char(2), 这里长度一定要>=2,不然会发生二进制截断的。CREATE TABLE IF NOT EXISTS userinfo
(
user_id char(10) PRIMARY KEY,
user_name varchar(20) NOT NULL,
user_sex char(2) NOT NULL
CHECK(user_sex LIKE ‘男’OR user_sex LIKE ‘女’),
user_telephone char(11) NOT NULL
CHECK(LEN(user_telephone)=11),
user_address varchar(40) NULL,
)character set = utf8; 参考技术A create table user
(
sex int(1)
)
sex int(1) -- 0 女 1 男
追问那么简单,起码有几个约束,非空啊,太应付了
追答- , - 你问的是性别怎么建好撒~ 那你想看什么呢
参考技术B int 或者是 check 类型的 都可以, 加个check 约束就好了追问用过个sqlyog吗,sqlyog怎么加check约束
追答那个没用过。。。。不过要是不急的话,你可以去查查资料,自己查出来比别人说的要好
参考技术C char(1) NOT NULL CHECK(性别 IN ('男', '女'))追问用过个sqlyog吗,sqlyog怎么加check约束
参考技术D sex bit --true:男;false:女追问用过个sqlyog吗,sqlyog怎么加check约束
追答没有用过这个工具,不过脚本应该是一致的
alter table xx add constraint ck_sex check(gender in('true','false'));
以上是关于mysql 表中性别字段用了int类型,想加check约束的主要内容,如果未能解决你的问题,请参考以下文章
MySQL的时间戳2038年问题还有16年,最好在设计上的时候使用datetime就可以了,不要使用时间戳字段了,即使用了也不要用int类型进行映射,使用long类型映射即可