SQLServer - 约束

VM与欧姆龙PLC通讯设置实战:Fins TCP/UDP协议详解 本文详细解析了VM(VisionMaster)与欧姆龙PLC通过Fins TCP/UDP协议进行通讯的实战设置。内容涵盖网络配置、协议选择(TCP可靠性与UDP实时性)、VM端地址映射与数据点添加、以及数据接收解析流程,并提供了常见错误排查与高级调试技巧,帮助视觉与自动化工程师快速实现稳定可靠的工业通讯集成。 阅读详情

一、约束的分类

  在SQLServer中,有3种不同类型的约束。

  1、实体约束

    实体约束是关于行的,比如某一行出现的值就不允许出现在其他行,例如主键。

  2、域约束

    域约束是关于列的,对于所有行,某一列有那些约束,例如CHECK约束。

  3、参照完整性约束

    如果某列的值必须与其他列的值匹配,那就意味着需要一个参照完整性约束,例如外键。

二、约束命名

  在学习约束之前,首先来了解下为约束命名需要注意哪些地方。

  SQLServer在我们不提供名称时,会自动创建名称,但是由系统自动创建的名称并不是特别有用。

  例如,系统生成的主键名称可能是这样的:PK_Employees_145C0A3F。 

  PK代表主键(primary key),Employees代表在Employees表中,而剩下的“145C0A3F”部分是为了保证唯一性而随机生成的值。只有通过脚本创建才会得到这种值,如果是通过Managerment Studio创建表,那么就直接是PK_Employees。

  对于系统自动生成的Check约束名称如:CK_Customers_22AA2996。CK代表这是一个Check约束,Customers代表是在Customers表中,后面的22AA2996还是一个随机数。如果一个表中有多个Check约束,则命名可能如下:

  CK_Customers_22AA2996

  CK_Customers_25869641

  CK_Customers_267ABA7A

  如果你需要修改这些约束其中的一个,那么你很难分辨这些约束到底是哪一个。

  因此,为了能够一眼看上去就知道这个约束是用来干什么的,我们应该使用一种简单明了的短语来进行命名。

  例如要确保某一列电话号码格式正确的约束,我们可以使用命名CK_Customers_PhoneNo这样的短语来命名。

  总之命名要做到以下几点:

  1、一致性

  2、通俗易懂

  3、满足以上两个条件的情况下简化名称。

三、键约束

1、主键约束

   主键是每行的唯一标识符,仅仅通过它就能准确定位到一行,其中主键列在整个表中不能有重复,必须包含唯一的值(不能为NULL)。由于主键在关系数据库中的重要性,因此它是所有键和约束中最重要的。

   下面来说说主键的创建方式

  1、在创建表的时候创建主键约束。

create table customer
(
    customerId        int identity    not null
        primary key,  --创建主键约束
    CustomerName    nvarchar(30)    not null
);

  怎么样,非常简单吧!

  2、在已存在的表上创建主键约束

  现在假设已经存在了一张表,但是还没有主键约束:

alter table person
    add constraint PK_Employee_Id  --外键名称
    primary key(personId)  --personId 字段名

  alter名称告诉SQLServer如下信息:

  1、添加了一些内容到表中(也可以删除表中的某些内容)

  2、添加了什么内容(一个约束)

  3、对约束的命名(允许以后直接访问约束)

  4、约束的类型(主键约束)

  5、约束应用于哪个列。

  3、复合主键的创建

  如果实在Management Studio中,创建复合主键,只需要按住Ctrl键,选中两个列,然后设置为主键就OK了,非常简单。下面主要讲述使用T-SQL创建复合主键的方法:

ALTER TABLE 表名 WITH NOCHECK ADD 
CONSTRAINT [PK_表名] PRIMARY KEY NONCLUSTERED 
( 
[字段名1], 
[字段名2] 
) 

  在多对多联系中,常常会有一张表来描述其他两张表的关系,就以此读者和书为例子:

复制代码
ALTER TABLE ReaderAndBook 
ADD 
CONSTRAINT [PK_ReaderAndBook] PRIMARY KEY NONCLUSTERED 
( 
ReaderId, 
BookId 
) 
复制代码

2、外键约束

  外键既能确保数据完整性,也能表现表之间的关系。添加了外键之后,插入引用表的记录要么必须被引用表中被引用列的某条记录匹配,要么外键列的值必须设置为NULL。

  外键和主键不一样,每个表中的外键数目不限制唯一性。在每个表中,每一有-~253个外键。唯一的限制是一个列只能引用一个外键。一个列可以被多个外键引用。

  1、创建表的时候创建外键

复制代码
create table orders
(
    orderId        int identity    not null
        primary key,
    customerId    int                not null
        foreign key references customer(customerId)  --约束类型-外键-引用表(列名)
);
复制代码

  2、在已存在的表中添加一个外键

  假设上面的代码去掉了添加外键行,那么可以书写代码如下:

alter table orders
    add constraint FK_Orders_CustomerId        --添加约束 名称
        foreign key (customerId)    references customer(customerId)    --外键约束,外键列名,被引用列名

  刚添加的约束和之前添加的约束一样生效,如果某行引用customerId不存在,那么就不允许把该行添加到Orders表中。

  3、级联动作

  外键和其他类型键的一个重要区别是:外键是双向的,即不仅是限制子表的值必须存在于父表中,还在每次对父表操作后检查子行(这样避免了孤行)。SQLServer的默认行为是在子行存在时“限制”父行被删除。然而,有时会自动删除任何依赖的记录,而不是防止删除被引用的记录。同样在更新记录时,可能希望依赖的记录自动引用刚刚更新的记录。比较少见的情况是,你可能希望将引用行改变为某个已知的状态。为此,可以选择将依赖行的值设置为NULL或者那个列的默认值。

  这种进行自动删除和自动更新的过程称为级联。这种过程,特别是删除过程,可以经过几层的以来关系(一条记录依赖于另一条记录,而这另一条记录又依赖其他记录)。在SQLServer中实现级联动作需要做的就是修改外键语法-只需要在添加前面加上ON子句。例如:

alter table orders
    add constraint FK_Orders_CustomerId        --添加约束 名称
        foreign key (customerId)    references customer(customerId)    --外键约束,外键列名,被引用列名
        on update     no action    --默认  修改时不级联更新子表
        on delete     cascade      --删除时级联删除依赖行

  当在进行级联删除时,如果一个表级联了另一个表,而另一个表又级联了其他表,这种级联会一直下去,不受限制,这其实是级联的一个危险之处,很容易一个不小心删掉大量数据。

  级联动作除了no action,cascade之外,还有set null和set default。后两个是在SQLServer2005中引入的,如果要兼容到SQLServer2000的话,要避免使用这两个级联动作。但是他们的才做是非常简单的:如果执行更新而改变了一个父行的值,那么子行的值将被设置为NULL,或者设置为该列的默认值(不管SET NULL还是SET DEFAULT)。

  4、外键其他方面的考虑

    外键中的之只有相中可能的选择:

    1、在列中填充与被引用表中的相应列相匹配的值。

      通过定义引用列为NOT NULL,可以使外键完全是必须的(即用户添加数据时必须引用表中必须有相匹配的一行数据)。

    2、不填充任何值,而使该值为NULL。

      允许引用列有NULL值时,用户可以选择不提供值-即使在被引用表没有与NULL值匹配的行,还是允许插入。

3、唯一约束

  唯一约束与主键比较相似,共同点在于它们都要求表中指定的列(或者列的组合)上有一个唯一值,区别是唯一约束没有被看作表中记录的唯一标识符(即使你可以按这样的方式使用也有效),而且可以有多个唯一约束(而在每个表中只能有一个主键)。

  一旦建立了唯一约束,那么指定列中的每个值必须是唯一的。如果更新或者插入一条记录在带唯一约束的列上有已经存在的值的记录,SQLServer将抛出错误,拒绝这个记录。

  和主键不同,唯一约束不会自动防止设置一个NULL值,是否允许为NULL由表中相应列的NULL选项的设置决定,但即使确实允许NULL值,一张表中也只能够插入一个NULL值(如果允许多个,那就不叫唯一了)。

  在已存在的表上创建唯一约束:

alter table Account
    add constraint AK_AccountName    --约束名
    unique (Account_Name)    -- 列名

  AK代表替换键(Alternate Key),唯一约束也叫替换键。

  主键和唯一约束的区别:

  •     主键约束不允许出现NULL值。任何索引的索引键都不允许包含null值。但唯一约束允许包含NULL值,但唯一约束把两个NULL值当作重复值,所以施加了唯一约束的每一列只允许包含一个NULL值。
  •     创建主键时会自动创建聚集索引,除非当前表中已经含有了聚集索引或是创建主键时指定了NONCLUSTERED关键字。
  •     创建唯一约束时会自动创建非聚集索引,除非你指定了CLUSTERED关键字并且当前表中还没有聚集索引。
  •     每个表中只能有一个主键,但可以由多个唯一约束。

4、CHECK约束  

  CHECK约束约束可以和一个列关联,也可以和一个表关联,因为它们可以检查一个列的值相对于另外一个列的值,只要这些列都在同一个表中以及值是在更新或者插入的同一行中。CHECK约束还可以用于检查列值组合是否满足某一个标准。

  可以像使用where子句一样的规则来定义CHECK约束。CHECK约束条件的示例如下:

目标SQL
限制Month列为合适的数字BETWEEN 1 AND 12
正确的SSN格式LIKE'[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]'
限制为一个快递公司的特定列表IN('UPS','Fed Ex',EMS')
价格必须为正数UnitPrice >= 0
引用同一行中的另外一列ShipDate >= OrderDate

  上面给出的列表只是一小部分,而条件实际上市无限多的。几乎所有可以放到where子句的条件都可以放到该约束中。而且和其他选择(规则和触发器)相比,CHECK约束执行速度更快。

  在已存在的表中添加一个CHECK约束:

alter table Account
    add constraint CN_AccountAge
    check 
    (Account_Age > 18);    -- 插入年龄必须大于18

  如果此时视图添加一条不满足的记录,将报如下错误:

  insert into Account values (22,'洪',17)
消息 547,级别 16,状态 0,第 1 行
INSERT 语句与 CHECK 约束"CN_AccountAge"冲突。该冲突发生于数据库"Nx",表"dbo.Account", column 'Account_Age'。
语句已终止。

5、DEFAULT约束

  和所有约束一样,DEFAULT约束也是表定义的一个组成部分,它定义了当插入的新行对于定义了默认约束的列未提供相应数据时该怎么办。可以定义它为一个字面值(例如,设置默认薪水为0,或者设置字符串列为"UNKNOWN"),或者某个系统值(getdate())。

  对于DEFAULT约束,要了解以下几个特性:

  1、默认值只在insert语句中使用-在update语句和delete语句中被忽略。

  2、如果在insert语句中提供了任意值,那就不使用默认值。

  3、如果没有提供值,那么总是使用默认值。

  值得注意的是,update命令的规则由一个例外,如果显示说明使用默认值就是例外。可以通过使用关键字DEFAULT表示更新的值设置为默认值。

  5.1在创建表时定义DEFAULT约束:

复制代码
create table person
(
    person_id int identity not null
        primary key,
    person_name nvarchar(30) not null
        default '无名氏',
    person_age int not null
)
复制代码

  在执行语句后:

insert into person (person_age) values(24)

  表中被插入一条记录如下:

  

   5.2在已存在的表上添加DEFAULT约束:

alter table person
    add constraint CN_DefaultName
    default    '无名氏' for person_name

6、禁用约束

   有时我们想暂时或永久地消除约束。但是SQL Server并没有提供删除约束的方法。SQL Server只允许禁用外键约束或CHECK约束,而同时保持约束的完整性。

   禁用一个数据完整性规则通常是因为已经有无效数据了。这样的数据通常分为以下两类:

  1、在创建约束时已经在数据库中的数据

  2、在约束创建以后希望添加的数据

  SQL Server允许禁用完整性检查一段时间来对例外的无效数据作处理,然后再重新启用完整性(不是物理删除数据完整性约束)。

    注意:不能禁用主键约束或者唯一约束

  6.1、在创建约束时,忽略检查之前的不满足数据

  要添加一个约束,但是有不应用到已存在的数据中,可以再执行Alter Table语句添加约束时使用WITH NOCHECK选项。

  按照上面创建Check约束的方法,已经Alter Table时,表中本身已经存在不符合的数据,那么Alter Table操作将被SQL Server拒绝执行。除非已经存在的所有数据都满足CHECK约束的条件,否则SQL Server不会执行创建约束的命令。要解决这个问题,我们可以添加WITH NOCHECK。

  我们先新建一个表只有3个字段的表,Id、姓名、年龄,并在里面插入一条不满足要求的数据:

insert into Account values (23,'洪',17)

   然后执行添加约束命令:

alter table Account
    add constraint CN_AccountAge18
    check 
    (Account_Age > 18);    -- 插入年龄必须大于18

   SQL Server报一下错误:

消息 547,级别 16,状态 0,第 1 行
ALTER TABLE 语句与 CHECK 约束"CN_AccountAge18"冲突。该冲突发生于数据库"Nx",表"dbo.Account", column 'Account_Age'。

   这时候我们换一种方式去执行:

alter table Account
    WITH NOCHECK
    add constraint CN_AccountAge18
    check 
    (Account_Age > 18);    -- 插入年龄必须大于18

   以上代码就能够成功执行,并且只有以后添加的数据具备约束,之前添加的不符合条件的数据记录依然存在。

   6.2临时禁用已存在的约束

   当我们需要从另一数据库中导入数据到表中,而表中已建立了约束的时候,可能会存在一些数据和规则不匹配。当然有一个解决方式是先删除约束,添加需要的数据,然后WITH NOCHECK在添加回去。但是这样做太麻烦了。我们不需要这么做。我们可以采用名为NOCHECK的选项来运行ALTER语句,这样就能够取消需要的约束。

  先来看看上节中创建的这个约束:

alter table Account
    add constraint CN_AccountAge18
    check 
    (Account_Age > 18);    -- 插入年龄必须大于18

   要取消以上约束可以这样来:

Alter Table Account
    NOCHECK
    constraint CN_AccountAge18

  执行命令:

  insert into Account values (25,'取消了约束',17)

  执行成功,成功添加了一行数据。

  留意到又能够向表中插入格式不匹配的数据了。

  这里要说明下,如下知道一个约束是否是启用还是禁用呢?sp_helpconstraint命令,当我们执行sp_helpconstraint的时候,会有一列status_enabled显示该约束的启用状态:

  sp_helpconstraint Account

  

   留意到status_enabled列为Disabled说明是禁用的意思。

  当要启用约束时,只需要用将语句中的NO CHECK替换为CHECK就可以了:

Alter Table Account
    CHECK
    constraint CN_AccountAge18

   执行之后,约束又启用了:再来sp_helpconstraint看下:

  

   留意到status_enabled列变成了Enabled。

  status_enabled的两种状态如下:

  Enabled:启用;

  Disabled:禁用;

7、规则和默认值

  规则和默认值的应用要早于CHECK和DEFAULT约束。他们是较老的SQL Server备用约束的一部分,当然也不是没有优点。自7.0版本之后,MicroSoft列出规则和默认值只是为了向后兼容,而不准备在以后继续支持这个特性。因此对于生成新代码时,应该使用约束。

  规则、默认值与约束的本质区别是:约束是一个表的特征,本身没有存在形式,而规则和默认值是表和自身的实际对象,本身存在。约束是在表定义中定义的,而规则和默认值是单独定义,然后"绑定到"表上。

  规则和默认值的独立对象特性使得它们可以在重用时不用重新定义。实际上,规则和默认值不限于被绑定到表上,它们也可以绑定到数据类型上。

  7.1规则

   规则和CHECK约束非常相似。它们之间的唯一区别是规则每次只能作用于一个列。可以将同一规则分别绑定到一个表中的多个列,但是规则分别作用于每个列,根本不会意识到其他列的存在。像QtyShipped

<= QtyOrdered这样的约束不适用于规则(它引用多个列),而LIKE([0-9][0-9][0-9])这样的定义适用于规则。

  定义规则:

  下面定义一个规则,这样就可以首先看到区别所在:

CREATE RULE Age18Rule
    AS @Age > 18  

  这里比较的是一个变量,不管被检查的列是什么值,这个值将用于替换@Age。因此在这个示例中,规则所绑定的任何列的值都必须大于18。

  到目前为止,只是创建了一个规则,但这个规则还没对任何表的任何列起作用,要激活这个规则需要使用一个存储过程:sp_bindrule。

  将规则Age18绑定到表person的person_age列:

  EXEC sp_bindrule 'Age18Rule','person.person_age';

  此时,如果我们执行不满足规则的插入操作:

insert into person values ('绑定规则',17)

   将返回如下报错信息:

消息 513,级别 16,状态 0,第 1 行
列的插入或更新与先前的 CREATE RULE 语句所指定的规则发生冲突。该语句已终止。冲突发生于数据库 'Nx',表 'dbo.person',列 'person_age'。
语句已终止。

  很明显,规则已经生效。

  要特别注意的是,在绑定之前,规则与任何表,任何列都没有关系,因此在绑定的时候,第二个参数要加.指定表名与列名(tablename.column)。

  解除绑定规则:

  当我们需要在一个列上解除绑定规则的时候,只要执行sp_unbindrule

  删除刚才绑定的规则:

EXEC sp_unbindrule 'person.person_age';

  这时候,执行刚才的插入操作,就不会报错了。

  删除规则:

  如果希望将规则从数据库中彻底删除,那么可以在表中使用非常熟悉的DROP语法。

DROP RULE <rule name>

  如删除刚才创建的那条规则:

DROP RULE Age18Rule

  7.2默认值

  默认值类似于DEFAULT。实际上默认值-DEFAULT约束的关系与规则-CHECK约束的关系差不多。区别在于它们被追加到表中的方式和对用户自定义数据类型的默认值(是对象,而不是约束)支持。

  定义默认值的语法和定义规则类似:

  CREATE DEFAULT <default_name>
  AS <default value>

  创建默认值:

  因此,假设要为Age定义一个值为0的默认值:

CREATE DEFAULT AgeDefault
AS 0

  绑定默认值:

  同样,如果不绑定到一个对象上,则默认值是不起作用的。要绑定的话,使用存储过程sp_bindefault。

  EXEC sp_bindefault 'AgeDefault','person.person_age';

  要从表中解决默认值的绑定,使用sp_unbindefault:

  sp_unbindefault 'person.person_age';

  删除默认值:

  如果要从数据库中彻底删除一个默认值,则可以使用DROP语法,与删除规则相同:

  DROP DEFAULT AgeDefault

  7.3确定哪个表和数据类型使用给定的规则或默认值

  如果希望删除或者修改规则或默认值。那么您可以先看看哪些表和数据类型在使用它们。SQL Server还是采用系统存储过程解决这个问题。这个存储过程是sp_depends。其语法如下所示:

  EXEC sp_depends <object name>

  sp_depends提供了依赖于你所查询对象的所有对象列表。

8、触发器

  触发器也能够用于实现数据完整性,这个内容比较多,新建一篇文章叙述。

9、如何选择

  经过以上的学习,对于数据完整性,你会发现有很多种可以选择,那么如何挑选合适的约束呢?

限制优点缺点
约束

快速

可以引用其他列

在命令执行前发生

遵循ANSI标准

必须对每个表重新定义

不能引用其他表

不能绑定到数据类型

规则

独立的对象

可重用

可以绑定到数据类型

命令执行前发生

稍慢

不能跨列使用

不能引用其他表

实际上只用于向后兼容

默认值

非常灵活

可以引用其他列或其他表

可以通过.NET引用SQL Server之外的其他信息

在命令执行之后发生

系统开销很大

  如果要实现更健壮的逻辑模型以及广泛使用用户自定义数据类型,则一般使用规则和默认值。在这种情况下规则和默认值可以提供很多功能,容易管理,而不用太多的编程开销。

  只有在不能选择约束时使用触发器。和约束一样,他们被附加到表中,而且必须对创建的每个表重新定义。好的方面是触发器几乎可以做数据完整性方面的任何操作。实际上再没有出现外键时,他们常被用作外键的替代品。

  而在其他情况下,应将约束作为数据完整性解决方案的选择。它们执行速度快,而且不难创建。他们的缺点是功能有限(除了外键约束,都不能引用其他表),而且对于通用约束逻辑来说,需要一次次地重新定义。

微信小程序逆向实战:从HTTPS抓包到API接口全解构 方案原理优点缺点方案一:使用低版本微信+系统代理微信7.0以下版本未强制不走代理操作简单容易被封号,无法使用新版小程序方案二:Hook SSL层(Xposed/Frida)动态Hook Java的TrustManager或系统的SSLContext,绕过证书校验灵活可控需要Root/越狱,技术门槛高方案三:VPN转发抓包(PacketCapture)利用Android VPNService将所有流量转发到本地代理无需Root,兼容性好部分机型存在性能问题。 阅读详情

相关推荐

拓扑优化背后的科学:ANSYS Workbench中的算法与原理

本文深入解析了ANSYS Workbench中拓扑优化的科学原理与算法实现,重点介绍了密度法(SIMP)和灵敏度分析等核心算法。通过分层架构解析和参数调优实战,展示如何有效进行模型验证与多物理场耦合优化,帮助工程师提升结构设计效率与性能。

weixin_29250403的博客 417

UNION 和 UNION ALL 操作符

UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集。 注意: 1.UNION 内部的 SELECT 语句必须拥有相同数量的列 2.列也必须拥有相似的数据类型 3.每条 SELECT 语句中的列的顺序必须相同 UNION 语法 SELECT column_name(s) FROM table_name1 UNION SELECT c

gateway6143的专栏 1280

2.数字芯片时序正确的前提—Max-transition

芯片物理设计中最基本的Max-transition检查

weixin_43868998的博客 5424

【数据库】SQL-五大约束

SQL是最流行的关系型数据库管理系统,它具有强大的功能和灵活的查询语言,但在使用过程中,对数据的正确性和完整性的保护需要特别注意。为了确保在数据库中存储的数据是符合业务需求的,SQL提供了五大约束来保护数据完整性,分别是:主键约束、唯一约束、检查约束、默认约束和外键约束。二、数据库的五大约束SQL中的五大约束是保证数据库数据完整性不可或缺的重要组成部分。当应用这些约束时,必须考虑到业务规则和数据完整性的要求,以保证数据库中的数据是正确的、完整的和可靠的。

山赶着山,山山漫漫结成关 4243

【SLAM】SVO2.0编译运行和论文代码解读

SVO2是我遇到的最难编译的代码了,可能公开版本不能放太鲁棒的代码吧,搞了快一个星期,终于跑起来了。

iwanderu的博客 5973

Rclone替代RaiDrive?零广告免费挂载Alist WebDAV到Windows资源管理器(含自启脚本)

本文详细介绍了如何使用开源工具Rclone替代RaiDrive,实现零广告、全免费的Alist WebDAV挂载方案。通过深入解析配置参数、提供完整的自启动解决方案和解决常见问题,帮助用户在Windows资源管理器中高效管理云存储,提升使用体验。

weixin_33709364的博客 634

SQL 约束

在 SQL 中,约束的作用不可谓不重要,它为数据指定规则,数据只有遵守“规则”,才有资格存储进数据库。在单个表中使用约束能够保证数据的完整性,但使用主键和外键将表联系起来,就可以保证数据库数据的一致性和完整性。

2301_81034686的博客 2043

[NVME] CMBLOC-Controller Memory Buffer Location

CMBLOC-Controller Memory Buffer Location

jinyuya的博客 989

SQLServer中的常见约束

一、什么是约束? 为了保证数据的一致性和完整性,SQL规范以约 束的方式对表数据进行额外的条件限制。 • 约束是表级的强制规定 • 可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通 过 ALTER TABLE 语句)。 二、约束分为有六种: NOT NULL:非空,该字段的值必填 UNIQUE:唯一,该字段的值不可重复 DEFAULT:默认,该字段的值不用手动插入有默认值 CHECK:检查,mysql不支持 PRIMARY KEY:主键,该字段的值不可重复并且非空

weixin_49772216的博客 3342

3台虚拟机部署Doris详细文档(含校验步骤)

摘要:本文详细介绍了Apache Doris在3台虚拟机上的集群部署方案。采用1主FE+1从FE+1观察者FE+3BE的混合部署模式,确保元数据高可用性。硬件配置建议测试环境4核16GB内存,生产环境8核64GB内存。部署步骤包括系统环境配置(关闭防火墙、内核参数优化)、FE/BE节点配置启动、集群初始化验证等。重点配置了IP白名单(172.30.0.115)和数据目录(/data/doris)。通过MySQL客户端和WebUI可监控集群状态,实现千万级数据的实时分析能力,后续可通过增加BE节点线性扩展。

weixin_41026747的博客 932

LVGL core group焦点分组管理(lv_group.c)

lv_group_t是用于焦点管理的,将需要获取焦点的对像加入到同一个分组内,再将其通过挂到指定的事件驱动中,就可以控制焦点了。而被加入的对象又可以通过焦点状态事件和事件来控制对象的焦点逻辑了。创建好的分组通过接口挂事件驱动中,这样就可以指定一个自定义的焦点分组了。;) {if(!} }友情提示:无论是接口还是都是单例的,即被设置后前一个被设置的值就失效了;此方案可以保证焦点的唯一 性,但也一定要记住要在适合的位置设置回来,以防丢失焦点。

Bigan(安)的博客 3907

SQLServer中有五种约束,Primary Key约束、Foreign Key约束、Unique约束、Default约束和Check约束,今天使用SQL Server2008来演示下这几种约束的

SQLServer中有五种约束,Primary Key约束、Foreign Key约束、Unique约束、Default约束和Check约束,今天使用SQL Server2008来演示下这几种约束的创建和使用的方法。 1、Primary Key约束     在表中常有一列或多列的组合,其值能唯一标识表中的每一行。     这样的一列或多列成为表的主键(PrimaryKey)。

李趣趣的学习笔记 1万+

【知识图谱】neo4j桌面版安装与配置-解决无法启功问题(2025年最新最全教程)

(经历过各种版本NEO4J,相比社区版而言,个人感觉桌面版更适合新手,安装调试更少更方便。如果是社区版改桌面版的,记得删除系统变量里NEO4J_HOME这个变量,否则会报错。

知识靠谱的博客 2万+

SQLServer用SQL语句给字段设置约束

文章目录SQL server数据库的基础学习一、用SQL语句给字段设置约束设置check约束设置default约束设置unique约束 SQL server数据库的基础学习 一、用SQL语句给字段设置约束 1、约束:分为主键约束、外键约束、check约束、default约束、unique约束 主键约束(primary):不允许元素重复,元素必须是唯一的,有效的避免了数据的冗余。 外键约束(foreign):通过外键约束从语法上保证了本事物所关联的其他事情一定是存在的,且事物与事物之间的关系是通过外键来体现的

cheng020316的博客 1万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SQLServer中有五种约束,Primary Key约束、Foreign Key约束、Unique约束、Default约束和Check约束

SQLServer中有五种约束,Primary Key约束、Foreign Key约束、Unique约束、Default约束和Check约束,今天使用SQL Server2008来演示下这几种约束的创建和使用的方法。1、Primary Key约束    在表中常有一列或多列的组合,其值能唯一标识表中的每一行。    这样的一列或多列成为表的主键(PrimaryKey)。一个表只能有一个主键,而且主...

xuanjiewu的专栏 4843

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

sqlserver中的约束

/* 数据完整性=数据的有效性和正确性(完整性=有效,正确) 完整性约束 1.唯一约束(允许一行数据为空) 2.主键约束(唯一约束 + 非空约束) 3.默认值约束 4.check约束 5.主外键约束 6.非空约束 一个表在不同的关系中既可以是主表又可以是子表 主外键是一对多关系 */ create table student( --字段名 数据类型 约束 (一般在此只加非空约束) stuId i...

一只苟延残喘的卑微蝼蚁 1209

SQLServer之CHECK约束

CHECK约束添加规则 1、CHECK 约束用于限制列中的值的范围。 2、Check约束通过逻辑表达式来判断数据的有效性,用来限制输入一列或多列的值的范围,在列中更新数据时,所要输入的内容必须满足Check约束的条件,否则将无法正确输入。 3、如果对单个列定义 CHECK 约束,那么该列只允许特定的值。 4、如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。 使用SSMS数...

weixin_33969116的博客 4887

MSSQL·根据约束_表名查询约束_表名

阅文时长 | 0.13分钟 字数统计 | 214.4字符 主要内容 | 1、引言&背景 2、声明与参考资料 『MSSQL·根据约束_表名查询约束_表名』 编写人 | SCscHero 编写时间 | 2021/7/13 PM11:10 文章类型 | 系列 完成度 | 已完成 座右铭 每一个伟大的事业,都有一个微不足道的开始。 一、引言&背景   完成度:100% a) 应对问题&场景 ..

SCscHero的博客 541

查SQLSERVER MSSQL查约束是哪张表

模板: 获取表名及表的触发器 select (select b.name from sysobjects as b where b.id = a.parent_obj) 表名, a.name as 触发器 from sysobjects as a where a.xtype='TR' order by 表名 实例:查一个“F = FOREIGN KEY”类型的 约束 select * from ( select (select b.name from sysobj...

小熊猫 1635

SqlServer五种约束及关键脚本

SQLServer中有五种约束,Primary Key约束、Foreign Key约束、Unique约束、Default约束和Check约束,为了防止日后用到创建脚本时重新编写sql脚本,特此整理此文档,我这里只是用到的Unique约束。 1、Primary Key约束 在表中常有一列或多列的组合,其值能唯一标识表中的每一行。 这样的一列或多列成为表的主键(PrimaryKey)。一个表只能有一个主键,而且主键约束中的列不能为空值。只有主键列才能被作为其他表的外键所创建。 --删除主键 alter tab

weixin_46681279的博客 1220

SQLServer 中有五种约束, Primary Key 约束、 Foreign Key 约束、 Unique 约束、 Default 约束和 Check 约束...

SQLServer 中有五种约束, Primary Key 约束、 Foreign Key 约束、 Unique 约束、 Default 约束和 Check 约束 原文:SQLServer 中有五种约束, Primary Key 约束、 Foreign Key 约束、 Unique 约束、 Default 约束和 Check 约束    一直在...

weixin_30394633的博客 585

MSSQL 如何删除字段的所有约束和索引

原文MSSQL 如何删除字段的所有约束和索引 代码如下: [sql] view plaincopy ----------------------------------------------------------   --  mp_DropColConstraint   --  功能:删除某个表的某列的所有约束   --  入口:   --     ...

weixin_34341229的博客 179

sqlserver之约束

在使用SqlServer中我们经常需要用到约束的概念,所谓约束,就是对数据表的字段的值进行约束,让其值在可以掌握的范围之内。这只是约束这个概念的功能性的问题,但是我们在使用约束的时候常常要做到“适可而止”。因为一旦添加了约束,那么我们在添加数据或者更新数据的时候往往就多了数据库就多了一层检查操作,因为数据库程序需要检查我们添加或修改的数据是否符合此约束,这样势必就在一定程度上降低了程序的性能。所以...

孤行者程序之路的博客 965

[转]删除MSSQL所有的约束及表格

--删除所有约束、表、视图等SQL脚本 --############################################### --删除所有外键约束 --############################################### DECLARE @SQL VARCHAR(99) DECLARE CUR_CONSTRAINT CURSOR ...

aitiao7316的博客 123

SQL Server 的约束

前言 约束是数据库中提供的自动保持数据库完整性的一种方法,通过对数据库中的数据设置某种约束条件来保证数据的完整性。不同的数据库,约束会有所差异,今天我给大家介绍一下 SQL server 的约束。 主键约束 PRIMARY KEY 关键字可以用来设置主键约束,指定一列或者多列中的数据具有唯一性,即不存在相同的数据值。 创建方式: colunm_name data_type PRIMARY K...

星辰 1万+

sqlserver数据库删除约束

sqlserver数据库删除约束 ALTER TABLE 表名 DROP CONSTRAINT 约束名 //源代码: ALTER TABLE Student DROP CONSTRAINT DF_stuAddress

cxu123321的博客 7523
上一篇: 数据库基础——九种数据库对象
下一篇: java-JDBC-ResultSet详解(java数据库操作)
硅谷纵横
博客等级 码龄9年 26粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值