打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Mysql 对无效数据的约束
      Mysql 对无效数据的约束
 
     在MySQL 5.0.2之前,MySQL对非法或不当值并不严厉,而且为了数据输入还会强制将它们变为合法值。
在MySQL 5.0.2和更高版本中,保留了以前的默认行为,但你可以为不良值选择更传统的处理方法,从而
使得服务器能够拒绝并放弃出现不良值的语句。本节介绍了MySQL的默认行为(宽大行为),新的严格的
SQL模式,以及它们的区别。
如果你未使用严格模式,下述情况是真实的。如果将“不正确”的值插入到列,如将NULL值插入非NULL
列,或将过大的数值插入数值列,MySQL会将这些列设置为“最可能的值”,而不是生成错误信息。
·
如果试图将超范围的值保存到数值列,MySQL服务器将保存0(最小的可能值)取而代之,或最大
的可能值。
·
对于字符串,MySQL或保存空字符串,或将字符串尽可能多的部分保存到列中。
·
如果打算将不是以数值开头的字符串保存到数值列,MySQL将保存0。
·
MySQL允许将特定的不正确日期值保存到DATE和DATETIME列(如“2000-02-31”或“2000-02-
00”)。其观点在于,验证日期不是SQL服务器的任务。如果MySQL能保存日期值并准确检索相同的值,
MySQL就能按给定的值保存它。如果日期完全不正确(超出服务器能保存的范围)将在列中保存特殊的日
期值“0000-00-00”取而代之。
·
如果试图将NULL值保存到不接受NULL值的列,对于单行INSERT语句,将出现错误。对于多行
INSERT语句或INSERT INTO ... SELECT语句,MySQL服务器会保存针对列数据类型的隐含默认值。一般情
况下,对于数值类型,它是0,对于字符串类型,它是空字符串(''),对于日期和时间类型是“zero”。在
13.1.5节,“CREATE TABLE语法”一节中,讨论了隐含的默认值。
·
如果INSERT语句未为列指定值,如果列定义包含明确的DEFAULT子句,MySQL将插入默认值。如
果在定义中没有这类DEFAULT子句,MySQL会插入列数据类型的隐含默认值。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
教你快速掌握Mysql ENUM和SET约束
御丽诗妃Mysql同一个事务
MySQL算术运算符
MySQL数据类型和常用字段属性总结
mysql 空值(null)和空字符('')的区别
SQLServer
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服