视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
关于MYSQL检察check约束
2020-11-09 13:34:20 责编:小采
文档


关于MYSQL 检查check约束 MYSQL 目前版本貌似不支持 SQL标准的 检查约束(check); SQL如: ALTER TABLE emp ADD CONSTRAINT ck_emp_sex CHECK (sex ='男' OR sex='女'); ? CHECK子句会被分析,但是会被忽略。请参见13.1.5节,“CREATE?TABLE语法”。接受这

关于MYSQL 检查check约束

MYSQL 目前版本貌似不支持 SQL标准的 检查约束(check);

SQL如:

ALTER TABLE emp ADD CONSTRAINT ck_emp_sex CHECK
(sex ='男' OR sex='女');

?

CHECK子句会被分析,但是会被忽略。请参见13.1.5节,“CREATE?TABLE语法”。接受这些子句但又忽略子句的原因是为了提高兼容性,以便更容易地从其它SQL服务器中导入代码,并运行应用程序,创建带参考数据的表。请参见1.8.5节,“MySQL与标准SQL的差别”。

?

但使用过程往往需要MYSQL 提供类似check约束的DDL语句;

?

可以使用SQL枚举值:

ALTER TABLE emp MODIFY sex ENUM("男","女");

?

1 查询雇员表:

SELECT * FROM emp;

empno? ename???????? deptno? sal?? sex?
1????? 张三??????? 10????? 2000? 女?
2????? 李四??????? 10????? 3000? 男?
3????? xiaohong????? 10????? 4000? 男?
4????? 杨国??????? 10????? 5000? 男?
5????? 苏三??????? 20????? 8000? 男??
?

2 修改雇员编号1 的性别为 人妖;

UPDATE emp SET sex ='人妖' WHERE empno =1 ;?

?

执行结果:

(1 row(s) affected, 1 warning(s))
Execution Time : 00:00:00:156
Transfer Time? : 00:00:00:000
Total Time???? : 00:00:00:156

Note : To see complete list of warning(s), enable Tools -> Preferences -> General -> Show Warning(s) in Messages Tab

?

3 再次查询

empno? ename???????? deptno? sal?? sex?
1????? 张三??????? 10????? 2000??????
2????? 李四??????? 10????? 3000? 男?
3????? xiaohong????? 10????? 4000? 男?
4????? 杨国??????? 10????? 5000? 男?
5????? 苏三??????? 20????? 8000? 男?

雇员编号为1 的张三 性别为 空;

?

4 插入语句

INSERT INTO emp VALUE ('张飞', 10, 3000, '人妖');

?

Query : insert into emp value ('张飞', 10, 3000, '人妖')
Error Code : 1136
Column count doesn't match value count at row 1
Execution Time : 00:00:00:000
Transfer Time? : 00:00:00:000
Total Time???? : 00:00:00:000

?

报错切插入失败!

?

?

?

?

?

?

?

?

1 楼 fanjf 11 小时前 为什么 update 不报错,结果为空?

下载本文
显示全文
专题