首页 > 数据库 >30. SQL--check:检查性约束

30. SQL--check:检查性约束

时间:2022-08-31 18:11:10浏览次数:59  
标签:website varchar -- age 30 约束 SQL null check

1. 前言

sql check 约束(检查性约束)用来限制字段的取值范围。您可以在 check 约束中添加限制条件,只有满足这些条件的值才允许进入该字段。

您可以为一个字段或者多个字段定义 check 约束。

2. 示例

创建一个名为 website 的新表,该表包含七个字段,我们为 age 字段添加 check 约束,要求网站年龄不大于 25 岁。代码如下:

create table website (
    id      int              not null   auto_increment,
    name    varchar(20)      not null,
    url     varchar(30),
    age     tinyint unsigned not null check(age<=25),
    alexa   int unsigned     not null,
    uv      float                       default '0',
    country char(3)          not null ,
    primary key (id)
);

它一些常见用法:

`1. 规定体重必须大于 0 并且小于 100 公斤:

weight NUMERIC(9, 2) CHECK( weight>0 AND weight<=100 )

2. 规定性别只能是男(male)和女(female):

sex char(6) check( sex='male' or sex='female' )

当然,您也可以为多个字段添加 CHECK 约束。例如,在创建 website 表时,规定网站年龄不大于 25 岁,并且 Alexa 排名不能高于 10000,如下所示:

create table website (
    id      int              not null   auto_increment,
    name    varchar(20)      not null,
    url     varchar(30),
    age     tinyint unsigned not null check(age<=25),
    alexa   int unsigned     not null check(alexa<=10000),
    uv      float                       default '0',
    country char(3)          not null ,
    primary key (id)
);

或者写作:

create table website (
    id      int              not null   auto_increment,
    name    varchar(20)      not null,
    url     varchar(30),
    age     tinyint unsigned not null,
    alexa   int unsigned     not null,
    uv      float                       default '0',
    country char(3)          not null ,
    primary key (id),
    constraint mycheck check(age<=25 and alexa<=10000)
);

myCheck 为自定义的约束名字。

如果您已经创建了 website 表,并且希望向 age 字段添加约束,则可以使用下面的语句:

alter table website
modify age tinyint unsigned not null check(age<=25);

如果您希望给多个字段添加约束,可以使用下面的语法:

alter table website
add constraint mycheck check(age<=25 and alexa<=10000);

3. 删除约束

要想删除 check 约束,请使用下面的语法:

alter table website
drop constraint mycheck;

 

标签:website,varchar,--,age,30,约束,SQL,null,check
From: https://www.cnblogs.com/jiajunling/p/16644082.html

相关文章

  • 3
    DROPTABLEIFEXISTS`student`;CREATETABLE`student`( `studentno`INT(4)NOTNULLCOMMENT'学号',`loginpwd`VARCHAR(20)DEFAULTNULL,`studentname`VAR......
  • 如何快速给宝宝的照片去除背景以及换背景呢?
    新生婴儿对我们来说是如此珍贵,以至于我们想要捕捉他们的每一刻。无论是长出第一颗牙齿、迈出第一步,还是小婴儿说话,我们都想保留他们的小动作。说到婴儿,他们所做的一切都......
  • 4
    --查询全部学生select字段from表SELECT*FROMstudent--查询指定字段SELECT`studentno`,`studentname`FROMsyudent--别名,给结果起一个名字AS可以给字段起别......
  • 雅礼集训 2018 Day1
    「雅礼集训2018Day1」树首先发现这个期望是诈骗,我们只需要求出\(g_i\)表示深度为\(i\)的树的个数然后带权除以总方案数即可。树的题目容易想到一个子树一个子树抠出来,......
  • 下载UE5源码
    要下载UE的源码首先需要在gethub上和自己的github账号关联EpicGame。怎么关联,好久了,我也忘记了。获取到下载权限后,建议直接下载压缩包,更快。文件实在是太庞大了,UE5有20G左......
  • XSS漏洞
    (备注:以下为个人学习笔记)一、什么是XSS答:XSS(crosssitescript)或者说跨站脚本是一种Web应用程序的漏洞,恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之......
  • Hive中insert into 和 insert overwrite的区别
    相同点insertinto和insertoverwrite都是往表中插入数据的。 不同点区别1:insertinto:其实是将数据追加到表的末尾,注意可不是覆盖是追加。insertoverwrite......
  • mybatis 实体使用@Builder 与 @Data时,赋值错误
    最近在工作中遇到了一个问题,使用mybatis新增数据的时候,定义好一个实体类,填充对应的数据并插入表之后。根据返回的id查询的时候,发现本不应该有数据的字段有数据返回,找了......
  • OSPF动态路由协议详解
    我们知道RIP协议最多只能允许15跳,且完全根据跳数距离来选择最佳路径,不考虑带宽,这是不符合现代网络标准的。所以我们介绍另外一种动态路由路由协议-OSPF。 一、自治系统......
  • 广角镜头和超广角镜头
    广角镜头和超广角镜头不同于一般标准镜头和望远镜头。广角镜头的焦距一般是指焦距在24mm-35mm之间的镜头,超广角一般是在14-20mm之间,了解广角镜头和超广角镜头的特性,运......