前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BI-SQL丨Constraints

BI-SQL丨Constraints

原创
作者头像
PowerBI丨白茶
发布2021-12-18 17:12:20
7600
发布2021-12-18 17:12:20
举报
文章被收录于专栏:PowerBI

Constraints

Constraints,约束的意思。通常用来约束加入表中的数据,如果与约束冲突,则行为会被终止。

通常情况下,Constraints会与CREATE TABLE或ALTER TABLE搭配使用。

Constraints在数据仓库中一直都是一个很重要的概念,是用来管理如何插入或处理数据库数据的规则。要知道,对于数据库而言,最重要的是数据库数据的规范化和标准化,这将决定了当前数据的延展性和复用性。CREATE TABLE:创建表语句。ALTER TABLE:更新表语句。

Constraints数据仓库中经常使用的有以下几种约束:

  • NOT NULL(不为空)
  • UNIQUE(唯一)
  • PRIMARY KEY(主键)
  • FOREIGN KEY(外键)
  • CHECK(检查)
  • DEFAULT(默认值)

接下来我们来了解一下不同约束的使用场景。

A.NOT NULL

NOT NULL会约束列不接受空值,因此当插入数据或者更新数据的时候,如果列的约束为NOT NULL,那么插入和更新行为将会被终止。

语法

代码语言:txt
复制
CREATE TABLE 表名称
(
列名称 数据类型 NOT NULL,
列名称 数据类型 NOT NULL,
......
)

使用实例

代码语言:txt
复制
CREATE TABLE WHITETEST (TEST INT NOT NULL, ID INT)

我们通过上述语句创建了名为WHITETEST的表,并向TEST添加约束为不为空。

我们现在要对WHITETEST表进行数据更新。

代码语言:txt
复制
INSERT INTO WHITETEST (TEST , ID) VALUES ( NULL , 13)

在数据仓库中我们执行上述语句,会返回如下结果:

因为列限制了TEST不为空,因此数据无法更新。

我们插入其他数据看看。

代码语言:txt
复制
INSERT INTO WHITETEST (TEST , ID) VALUES ( 16 , 13)

结果如下:

我们可以清楚的看到,数据插入成功。

B.UNIQUE与PRIMARY KEY

UNIQUE会约束列的数据作为唯一标识而存在。

PRIMARY KEY作为表的主键而存在。

注意

  • UNIQUE与PRIMARY KEY区别是很大的。
  • PRIMARY KEY会自带UNIQUE的属性。
  • 表中可以有多个列为UNIQUE的约束,但是只能有一个PRIMARY KEY。

换句话理解就是维度的主键(唯一标识)可以有多个列,但是作为表的主键只能有一个。

  • PRIMARY KEY任意两行的主键值都不能相同
  • 每行都需要有一个PRIMARY KEY
  • PRIMARY KEY的列从不修改更新
  • PRIMARY KEY不允许重用,主键值被删除的情况下也不可以给新行使用
  • UNIQUE可以包含NULL值
  • UNIQUE可修改更新
  • UNIQUE可重复使用

例如: 我们有一张订单表,其中存在订单ID,那么此时订单ID可以使用UNIQUE进行约束,来保证订单ID不重复。但是我们需要一个额外的主键来标记当前表中的每一行记录。以方便其他表引用此表中的数据。注:订单ID也可以作为主键,但是有可能信息过长,而且有可能产生信息被利用的情况。

语法

UNIQUE语法

代码语言:txt
复制
CREATE TABLE 表名称
(
列名称 数据类型 NOT NULL UNIQUE,
列名称 数据类型 NOT NULL,
CONSTRAINT uc_约束名 UNIQUE (列名称,列名称...)//多个列定义约束
......
)

PRIMARY KEY语法

代码语言:txt
复制
CREATE TABLE 表名称
(
列名称 数据类型 NOT NULL PRIMARY KEY,
列名称 数据类型 NOT NULL,
CONSTRAINT pk_约束名 PRIMARY KEY (列名称,列名称...)//多个列定义约束
......
)

C.FOREIGN KEY

一个表中的外键,通常可以用来连接另外一张表中的主键。

举个例子: 我们有一张Fact表和一张Product表,两张表通过ProductID进行关联。那么Product表中的ProductID就是主键,Fact表中的ProductID就是外键。

同时,外键的存在,可以防止意外删除。这对于数据仓库来说,很重要。

语法

代码语言:txt
复制
CREATE TABLE 表名称
(
列名称 数据类型 FOREIGN KEY REFERENCES 表名称(主键ID),
列名称 数据类型 NOT NULL,
CONSTRAINT fk_约束名 FOREIGN KEY (外键)
REFERENCES 表名称(主键)//多个列定义约束
......
)

D.CHECK

CHECK通常可以用来约束限制列值的范围。

语法

代码语言:txt
复制
CREATE TABLE 表名称
(
列名称 数据类型 NOT NULL CHECK (列名称>0),
列名称 数据类型 NOT NULL,
CONSTRAINT chk_约束名 CHECK (列名称>0,列名称='条件')//多个列定义约束
......
)

E.DEFAULT

DEFAULT通常可以用来约束列的默认值,如果没有其他值插入的情况下,默认值会出现在所有记录中。

语法

代码语言:txt
复制
CREATE TABLE 表名称
(
列名称 数据类型 NOT NULL DEFAULT '默认值',
列名称 数据类型 NOT NULL,
......
)

约束的用法到这里基本上就差不多了,因为时间关系没有给小伙伴列举各个使用例子,但是建议小伙伴去动手尝试一下。

这里是白茶,一个PowerBI的初学者。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档