这是我参与2022首次更文挑战的第27天,活动详情查看:2022首次更文挑战」
前言
在我们的世界中充满各种各样的规则,然儿其实规则有很多种不同的定义,也有很多种不同层次的规则,规则约束着行为也保护着受体。那么在SQL中也是有约束条件的,本文将简单了解一下SQL中的常用约束条件。
SQL约束
在我们的SQL中的约束,一般是指规定表中的数据规则,当我们在操作数据表中的数据时,如果违反了约束的数据行为,将进行的行为将会被约束禁止。
常用的约束有以下几个:
- NOT NULL:非空。
- UNIQUE:唯一索引。
- PRIMARY KEY:主键。
- FOREIGN KEY:外键。
- CHECK:检查。
- DEFAULT:默认值。
测试使用数据表:
CREATE TABLE `s_user` (
`userid` int(11) NOT NULL AUTO_INCREMENT,
`nick_name` varchar(50) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`email` varchar(50) DEFAULT NULL COMMENT '邮箱',
`pass_word` varchar(255) DEFAULT NULL,
`state` tinyint(3) DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`userid`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
复制代码
NOT NULL
NOT NULL表示数据库表中某一列值不能存在NULL值。上面测试表中除了主键userid是非空外。其他的数据字段都是可以为空的。我们为 pass_word
设置为非空。执行的语句如下
ALTER TABLE `s_user`
MODIFY s_user.pass_word varchar(255) NOT NULL;
复制代码
执行成功 可以看到表中的 pass_word
已经是NOT NULL了。 下面进行验证,插入一条数据,默认 pass_word
为空,看是否可以插入成功。可以看到 已经提示 pass_word
子弹不能为空了。如果将 pass_word
字段的NULL换成其他值,则可以新增数据成功。
INSERT INTO `test`.`s_user`( `nick_name`, `name`, `email`, `pass_word`, `state`, `create_time`) VALUES ('小张', '小张', '[email protected]', NULL, 1, '2022-02-10 19:48:43');
复制代码
执行失败。
INSERT INTO `test`.`s_user`( `nick_name`, `name`, `email`, `pass_word`, `state`, `create_time`) VALUES ('小张', '小张', '[email protected]', '789', 1, '2022-02-10 19:48:43');
复制代码
执行成功
UNIQUE
UNIQUE 约束是指列的唯一索引标识,同一列中,只能有一个值存在,如果相同值存在,则无法插入数据。为列或列集合提供了唯一性的保证。在s_user
表中将nick_name
昵称名称设置为唯一性,不能够重复。
ALTER TABLE `s_user`
ADD UNIQUE (s_user.nick_name)
复制代码
如下图可以看到SQL执行成功 再次执行插入数据,nick_name
还是使用“小张”。
INSERT INTO `test`.`s_user`( `nick_name`, `name`, `email`, `pass_word`, `state`, `create_time`) VALUES ('小张', '小张', '[email protected]', '789', 1, '2022-02-10 19:48:43');
复制代码
可以看到已经存在nick_name
为小张的了,不能再次新增相同数据。
PRIMARY KEY
PRIMARY KEY:主键,主键表示 NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。 如下图字段userid
是表s_user
中的主键,是唯一值,此表中的主键是自动递增AUTO_INCREMENT。
FOREIGN KEY
FOREIGN KEY:外键, 保证一个表中的数据匹配另一个表中的值的保证数据的完整性。外键一般是其他表中的主键,作为其他表中的外键使用。
CHECK
CHECK:检查, 保证列中的值符合指定的条件。CHECK 约束用于限制列中的值的范围。将数据表s_user
中的state
字段,设置为只能输入1和2 的正数值,则执行如下SQL
ALTER TABLE `s_user`
ADD CHECK (`state`>0 AND `state`<3)
复制代码
执行成功。
DEFAULT
DEFAULT:默认值, 规定没有给列赋值时,该数据列会初始化默认值。将数据表s_user
中的email
字段,如果插入数据为空时,设置为默认邮箱地址:[email protected]
ALTER TABLE `s_user`
ALTER `email` SET DEFAULT '[email protected]';
复制代码
执行成功
结语
好了,以上就是SQL中常用的约束条件使用,感谢您的阅读,希望您喜欢,如对您有帮助,欢迎点赞收藏。如有不足之处,欢迎评论指正。下次见。
作者介绍:【小阿杰】一个爱鼓捣的程序猿,JAVA开发者和爱好者。公众号【Java全栈架构师】维护者,欢迎关注阅读交流。