SQL中常用的约束条件使用

这是我参与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;
复制代码

执行成功 图片.png 可以看到表中的 pass_word已经是NOT NULL了。 图片.png   下面进行验证,插入一条数据,默认 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');
复制代码

执行失败。 图片.png

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');
复制代码

执行成功 图片.png

UNIQUE

  UNIQUE 约束是指列的唯一索引标识,同一列中,只能有一个值存在,如果相同值存在,则无法插入数据。为列或列集合提供了唯一性的保证。在s_user表中将nick_name昵称名称设置为唯一性,不能够重复。

ALTER TABLE `s_user`
ADD UNIQUE (s_user.nick_name)
复制代码

如下图可以看到SQL执行成功 图片.png 再次执行插入数据,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为小张的了,不能再次新增相同数据。 图片.png

PRIMARY KEY

  PRIMARY KEY:主键,主键表示 NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。 如下图字段userid是表s_user中的主键,是唯一值,此表中的主键是自动递增AUTO_INCREMENT。

图片.png

FOREIGN KEY

  FOREIGN KEY:外键, 保证一个表中的数据匹配另一个表中的值的保证数据的完整性。外键一般是其他表中的主键,作为其他表中的外键使用。

CHECK

  CHECK:检查, 保证列中的值符合指定的条件。CHECK 约束用于限制列中的值的范围。将数据表s_user中的state字段,设置为只能输入1和2 的正数值,则执行如下SQL

ALTER TABLE `s_user`
ADD CHECK (`state`>0 AND `state`<3)

复制代码

执行成功。

图片.png

DEFAULT

  DEFAULT:默认值, 规定没有给列赋值时,该数据列会初始化默认值。将数据表s_user中的email字段,如果插入数据为空时,设置为默认邮箱地址:[email protected]

ALTER TABLE `s_user`
ALTER `email` SET DEFAULT '[email protected]';
复制代码

图片.png

执行成功 图片.png

结语

  好了,以上就是SQL中常用的约束条件使用,感谢您的阅读,希望您喜欢,如对您有帮助,欢迎点赞收藏。如有不足之处,欢迎评论指正。下次见。

  作者介绍:【小阿杰】一个爱鼓捣的程序猿,JAVA开发者和爱好者。公众号【Java全栈架构师】维护者,欢迎关注阅读交流。

Guess you like

Origin juejin.im/post/7068298941132963877