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是没用的,
对于所有的存储引擎,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类型映射即可

MySQL数据表的修改:修改字段类型

mysql 用户表,性别的字段怎么建最好,给个脚本看看

MySQL数据库中建表字段性别(sex)的类型

mysql数据库中sql修改字段类型要怎么做

Java中short类型想加为啥会成为int型