SQL中常用的约束条件使用(sql约束表达式大全)
前言
在我们的世界中充满各种各样的规则,然儿其实规则有很多种不同的定义,也有很多种不同层次的规则,规则约束着行为也保护着受体。那么在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 ('小张', '小张', '123@qq.com', NULL, 1, '2022-02-10 19:48:43'); 复制代码
执行失败。
INSERT INTO `test`.`s_user`( `nick_name`, `name`, `email`, `pass_word`, `state`, `create_time`) VALUES ('小张', '小张', '123@qq.com', '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 ('小张', '小张', '123@qq.com', '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
字段,如果插入数据为空时,设置为默认邮箱地址:123@qq.com
ALTER TABLE `s_user` ALTER `email` SET DEFAULT '123@qq.com'; 复制代码
执行成功
结语
好了,以上就是SQL中常用的约束条件使用,感谢您的阅读,希望您喜欢,如对您有帮助,欢迎点赞收藏。如有不足之处,欢迎评论指正。下次见。
作者:小阿杰
链接:https://juejin.cn/post/7068298941132963877