BI学习笔记

BI-SQL丨Constraints

2021-12-18  本文已影响0人  Fabric丨白茶

Constraints

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

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

Constraints在数据仓库中一直都是一个很重要的概念,是用来管理如何插入或处理数据库数据的规则。

要知道,对于数据库而言,最重要的是数据库数据的规范化和标准化,这将决定了当前数据的延展性和复用性。

CREATE TABLE:创建表语句。

ALTER TABLE:更新表语句。

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

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

A.NOT NULL

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

语法

CREATE TABLE 表名称
(
列名称 数据类型 NOT NULL,
列名称 数据类型 NOT NULL,
......
)

使用实例

CREATE TABLE WHITETEST (TEST INT NOT NULL, ID INT)

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

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

INSERT INTO WHITETEST (TEST , ID) VALUES ( NULL , 13)

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

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

我们插入其他数据看看。

INSERT INTO WHITETEST (TEST , ID) VALUES ( 16 , 13)

结果如下:

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

B.UNIQUE与PRIMARY KEY

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

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

注意

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

例如:

我们有一张订单表,其中存在订单ID,那么此时订单ID可以使用UNIQUE进行约束,来保证订单ID不重复。但是我们需要一个额外的主键来标记当前表中的每一行记录。以方便其他表引用此表中的数据。

注:订单ID也可以作为主键,但是有可能信息过长,而且有可能产生信息被利用的情况。

语法
UNIQUE语法

CREATE TABLE 表名称
(
列名称 数据类型 NOT NULL UNIQUE,
列名称 数据类型 NOT NULL,
CONSTRAINT uc_约束名 UNIQUE (列名称,列名称...)//多个列定义约束
......
)

PRIMARY KEY语法

CREATE TABLE 表名称
(
列名称 数据类型 NOT NULL PRIMARY KEY,
列名称 数据类型 NOT NULL,
CONSTRAINT pk_约束名 PRIMARY KEY (列名称,列名称...)//多个列定义约束
......
)

C.FOREIGN KEY

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

举个例子:

我们有一张Fact表和一张Product表,两张表通过ProductID进行关联。

那么Product表中的ProductID就是主键,Fact表中的ProductID就是外键。

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

语法

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

D.CHECK

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

语法

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

E.DEFAULT

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

语法

CREATE TABLE 表名称
(
列名称 数据类型 NOT NULL DEFAULT '默认值',
列名称 数据类型 NOT NULL,
......
)

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

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


上一篇 下一篇

猜你喜欢

热点阅读