SQL基础知识约束(实例)

NOT NULL约束NOT NULL 约束强制列不接受 NULL 值。NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或

今天给各位分享SQL基础知识约束(实例)的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

NOT NULL 约束强制字段始终包含值。这意味着如果不向字段添加值,则无法插入新记录或更新记录。

以下SQL 强制“Customers”表的“CustomerID”列和“Name”列不接受NULL 值:

CREATE TABLE 客户(客户ID INT NOT NULL、姓名VARCHAR(10) NOT NULL、地址VARCHAR(50) NULL、城市VARCHAR(20) NULL、邮政编码CHAR(6) NULL、省份VARCHAR(20) NULL);一旦这两个列中插入了空值NULL,系统就会报错信息。例如,我们插入以下信息:

INSERT INTO dbo.Customers (姓名、地址、城市、邮政编码、省份)VALUES (NULL,’花城大道1号’,’广州市’,’51000′,NULL)(提示:可以向左滑动代码或正确的)

结果:

独特的限制

UNIQUE 约束唯一标识数据库表中的每条记录。

UNIQUE 和PRIMARY KEY 约束都为一列或一组列提供唯一性保证。

PRIMARY KEY 约束已自动定义UNIQUE 约束。

请注意,每个表可以有多个UNIQUE 约束,但每个表只能有一个PRIMARY KEY 约束。

CREATE TABLE 时的SQL UNIQUE 约束

创建“Orders”表时,以下SQL 在“OrderID”列上创建UNIQUE 约束:

MySQL:

CREATE TABLE dbo.Orders(订单ID INT NOT NULL、客户ID INT NULL、员工ID INT NULL、订单日期DATETIME NULL、运输ID INT NULL、UNIQUE(订单ID));SQL Server/Oracle/MS 访问:

CREATE TABLE dbo.Orders(订单ID INT NOT NULL UNIQUE、客户ID INT NULL、员工ID INT NULL、订单日期DATETIME NULL、运输ID INT NULL);唯一的约束是受约束的列。插入新数据时,如果和现有列的值相同,就会报错。

INSERT INTO dbo.Orders(订单ID、客户ID、员工ID、订单日期、发货ID)值( 1001,1,2,’2018-11-21 19:21:32′,1),( 1001,2,3,’ 2018 -11-22 11:22:32′,5) 结果:

要命名UNIQUE 约束并为多个列定义UNIQUE 约束,请使用以下SQL 语法:

MySQL/SQL Server/Oracle/MS 访问:

CREATE TABLE dbo.Orders( 订单ID INT NOT NULL、客户ID INT NULL、员工ID INT NULL、订单日期DATETIME NULL、送货ID INT NULL、CONSTRAINT uc_OrderID UNIQUE (订单ID、送货ID));

ALTER TABLE 时的UNIQUE 约束

要在创建表时在“订单ID”列上创建UNIQUE 约束,请使用以下SQL:

MySQL/SQL Server/Oracle/MS 访问:

ALTER TABLE OrdersADD UNIQUE (订单ID) 要命名UNIQUE 约束并为多个列定义UNIQUE 约束,请使用以下SQL 语法:

MySQL/SQL Server/Oracle/MS 访问:

ALTER TABLE CustomersADD CONSTRAINT uc_CustomerID UNIQUE(客户ID、名称)

删除UNIQUE 约束

要删除UNIQUE 约束,请使用以下SQL:

MySQL:

ALTER TABLE OrdersDROP INDEX uc_OrderIDSQL Server/Oracle/MS 访问:

ALTER TABLE CustomersDROP CONSTRAINT uc_CustomerID

主键约束

PRIMARY KEY 约束唯一标识数据库表中的每条记录。

主键必须包含唯一值。

SQL基础知识约束(实例)

主键列不能包含NULL 值。

每个表都应该有一个主键,并且每个表只能有一个主键。

CREATE TABLE 时的主键约束

创建“Customers”表时,以下SQL 在“CustomerID”列上创建PRIMARY KEY 约束:

MySQL:

CREATE TABLE dbo.Customers(客户ID INT NOT NULL,名称VARCHAR(10) NULL,地址VARCHAR(50) NULL,城市VARCHAR(20) NULL,邮政编码CHAR(6) NULL,省份VARCHAR(20) NULL,主键(客户ID));

SQL Server/Oracle/MS 访问:

CREATE TABLE dbo.Customers(客户ID INT NOT NULL 主键、姓名VARCHAR(10) NULL、地址VARCHAR(50) NULL、城市VARCHAR(20) NULL、邮政编码CHAR(6) NULL、省份VARCHAR(20) NULL) ;

要命名PRIMARY KEY 约束并在多个列上定义PRIMARY KEY 约束,请使用以下SQL 语法:

MySQL/SQL Server/Oracle/MS 访问:

CREATE TABLE dbo.Customers(客户ID INT NOT NULL 主键、姓名VARCHAR(10) NULL、地址VARCHAR(50) NULL、城市VARCHAR(20) NULL、邮政编码CHAR(6) NULL、省份VARCHAR(20) NULL、 CONSTRAINT pk_CustomerID PRIMARY KEY (客户ID, 姓名));注意:上例中只有一个主键PRIMARY KEY (pk_CustomerID)。但是,pk_CustomerID 的值由两列(客户ID 和名称)组成。

ALTER TABLE 时的PRIMARY KEY 约束

要在创建表时在“客户ID”列上创建PRIMARY KEY 约束,请使用以下SQL:

MySQL/SQL Server/Oracle/MS 访问:

ALTER TABLE CustomersADD PRIMARY KEY (客户ID) 要命名PRIMARY KEY 约束并为多个列定义PRIMARY KEY 约束,请使用以下SQL 语法:

删除PRIMARY KEY 约束

要删除PRIMARY KEY 约束,请使用以下SQL:

MySQL:

ALTER TABLE CustomersDROP PRIMARY KEYSQL Server/Oracle/MS Access:

ALTER TABLE CustomersDROP CONSTRAINT pk_CustomerID

外键约束

一个表中的外键指向另一表中的主键。

让我们通过一个例子来解释外键。请看下面两个表:

“客户”表:

“订单”表:

请注意,“订单”表中的“客户ID”列指向“客户”表中的“客户ID”列。

“客户”表中的“客户ID”列是“客户”表中的主键。

“订单”表中的“CustomerID”列是“订单”表中的外键。

FOREIGN KEY 约束用于防止破坏表之间连接的行为。

FOREIGN KEY 约束还可以防止非法数据插入到外键列中,因为它必须是它指向的表中的值之一。

CREATE TABLE 时的外键约束

创建“Orders”表时,以下SQL 在“Customer ID”列上创建FOREIGN KEY 约束:

MySQL:

SQL基础知识约束(实例)

CREATE TABLE 订单(订单ID INT NOT NULL、客户ID INT NULL、员工ID INT NULL、订单日期DATETIME NULL、运输ID INT NULL、PRIMARY KEY(订单ID)、FOREIGN KEY(客户ID)REFERENCES 客户(客户ID)) SQL Server/Oracle/MS 访问:

CREATE TABLE 订单(订单ID INT NOT NULL PRIMARY KEY、客户ID INT NULL、员工ID INT NULL、订单日期DATETIME NULL、运输ID INT NULL、FOREIGN KEY(客户ID)REFERENCES 客户(客户ID))

要命名FOREIGN KEY 约束并为多个列定义FOREIGN KEY 约束,请使用以下SQL 语法:

MySQL/SQL Server/Oracle/MS 访问:

CREATE TABLE Orders( 订单ID INT NOT NULL、客户ID INT NULL、员工ID INT NULL、订单日期DATETIME NULL、运输ID INT NULL、PRIMARY KEY(订单ID)、CONSTRAINT fk_CusOrders FOREIGN KEY(客户ID)REFERENCES 客户ID))

ALTER TABLE 中的外键约束

创建“Orders”表后,要在“Customer ID”列上创建FOREIGN KEY 约束,请使用以下SQL:

MySQL/SQL Server/Oracle/MS 访问:

ALTER TABLE OrdersADD FOREIGN KEY (Customer ID) REFERENCES Customers (Customer ID) 要命名FOREIGN KEY 约束并为多个列定义FOREIGN KEY 约束,请使用以下SQL 语法:

MySQL/SQL Server/Oracle/MS 访问:

ALTER TABLE OrdersADD CONSTRAINT fk_CusOrdersFOREIGN KEY(客户ID) REFERENCES 人员(客户ID)

删除FOREIGN KEY 约束

要删除FOREIGN KEY 约束,请使用以下SQL:

MySQL:

ALTER TABLE OrdersDROP FOREIGN KEY fk_CusOrdersSQL Server/Oracle/MS 访问:

ALTER TABLE OrdersDROP CONSTRAINT fk_CusOrders

默认约束

DEFAULT 约束将默认值插入到列中。

如果未指定其他值,则默认值将添加到所有新记录中。

CREATE TABLE 时的默认约束

创建“Customers”表时,以下SQL 在“City”列上创建DEFAULT 约束:

My SQL/SQL Server/Oracle/MS 访问:

CREATE TABLE dbo.Customers(客户ID INT NOT NULL,姓名VARCHAR(10) NULL,地址VARCHAR(50) NULL,城市VARCHAR(20) NULL DEFAULT ‘北京’,邮政编码CHAR(6) NULL,省份VARCHAR(20)无效的);

DEFAULT 约束也可用于使用GETDATE() 等函数在SQL Server 中插入系统值:

CREATE TABLE dbo.Orders(订单ID INT NOT NULL、客户ID INT NULL、员工ID INT NULL、订单日期DATETIME NULL DEFAULT GETDATE()、送货ID INT NULL);

ALTER TABLE 时的DEFAULT 约束

要在创建表时在“City”列上创建DEFAULT 约束,请使用以下SQL:

MySQL:

ALTER TABLE CustomersALTER city SET DEFAULT ‘北京城市’SQL Server/MS Access:

ALTER TABLE CustomersADD CONSTRAINT DF_Customers DEFAULT(‘北京市’) FOR City–注释

–customers是表名

–城市已列出

–DF_Customers 是我们创建的默认约束的名称。约束名称一般为:约束类型缩写_表名。

SQL基础知识约束(实例)

甲骨文:

ALTER TABLE CustomersMODIFY city DEFAULT ‘北京市’

删除DEFAULT 约束

要删除DEFAULT 约束,请使用以下SQL:

MySQL:

ALTER TABLE CustomersALTER City DROP DEFAULTSQL Server/Oracle/MS Access:

ALTER TABLE 客户ALTER COLUMN 城市DROP DEFAULT

检查约束

CHECK约束用于限制列中值的范围。

如果在单个列上定义CHECK 约束,则该列只允许使用特定值。

如果在表上定义了CHECK 约束,则该约束会根据该行中其他列的值来限制特定列中的值。

创建表时检查约束

创建“Customers”表时,以下SQL 在“CustomerID”列上创建CHECK 约束。 CHECK 约束规定“CustomerID”列必须仅包含大于0 的整数。

MySQL:

CREATE TABLE dbo.Customers(客户ID INT NOT NULL,名称VARCHAR(10) NULL,地址VARCHAR(50) NULL,城市VARCHAR(20) NULL,邮政编码CHAR(6) NULL,省份VARCHAR(20) NULL,CHECK (客户ID0)) ;

SQL Server/Oracle/MS 访问:

CREATE TABLE dbo.Customers(客户ID INT NOT NULL CHECK (客户ID0)、名称VARCHAR(10) NULL、地址VARCHAR(50) NULL、城市VARCHAR(20) NULL、邮政编码CHAR(6) NULL、省份VARCHAR(20) NULL) ;要命名CHECK 约束并为多个列定义CHECK 约束,请使用以下SQL 语法:

MySQL/SQL Server/Oracle/MS 访问:

CREATE TABLE dbo.Customers(客户ID INT NOT NULL、名称VARCHAR(10) NULL、地址VARCHAR(50) NULL、城市VARCHAR(20) NULL、邮政编码CHAR(6) NULL、省份VARCHAR(20) NULL、CONSTRAINT chk_Customers CHECK(客户ID0 AND city=’北京’));

ALTER TABLE 期间检查约束

要在创建表时在“CustomerID”列上创建CHECK 约束,请使用以下SQL:

MySQL/SQL Server/Oracle/MS Access:

ALTER TABLE CustomersADD CHECK (Customer ID0) 要命名CHECK 约束并为多个列定义CHECK 约束,请使用以下SQL 语法:

MySQL/SQL Server/Oracle/MS 访问:

ALTER TABLE CustomersADD CONSTRAINT chk_Customers CHECK (客户ID0 AND city=’北京’)

删除CHECK 约束

要检查约束,请使用以下SQL:

SQL Server/Oracle/MS 访问:

ALTER TABLE CustomersDROP CONSTRAINT chk_CustomersMySQL:

ALTER TABLE CustomersDROP CHECK chk_Customers

注解

用户评论

SQL基础知识约束(实例)
别留遗憾

终于找到一篇讲 SQL 基础知识约束的博客了!看完这篇文章,我对数据约束的概念和应用有了更深入的理解,那些例子都很贴近实际情况,受益匪浅。我之前总是觉得约束很麻烦,现在看来它们其实很好用,可以有效地维护数据库完整性。 👍

    有11位网友表示赞同!

SQL基础知识约束(实例)
南宫沐风

学习 SQL 的时候常常会碰到约束,但是总感觉不太明白作用。这篇文章讲的比较清楚,用实例进行解释也很生动,一下子就明白了!还是要注意学习这些基础知识,以后做数据开发时一定派上用场。

    有20位网友表示赞同!

SQL基础知识约束(实例)
∞◆暯小萱◆

这篇博文写的很不错,对SQL的基础知识进行了很好的阐述,特别是关于限制条件的例子,让我更加直观地明白了它们的作用。现在感觉再写数据库脚本的时候会更加的轻松了!

    有11位网友表示赞同!

SQL基础知识约束(实例)
箜篌引

文章内容确实对理解 SQL 基础知识很有帮助,特别是对于入门的小白来说非常有用。但是一些术语的解释感觉略显简略,希望能更深入地讲解一下。

    有11位网友表示赞同!

SQL基础知识约束(实例)
夏以乔木

数据约束真的很重要,这篇文章提醒我要从写代码一开始就做好数据的规范控制。例如在添加一个数据库字段的时候,就应该考虑使用合适的限制条件来确保数据类型和范围的一致性。

    有15位网友表示赞同!

SQL基础知识约束(实例)
哥帅但不是蟋蟀

讲真,看这文章还是有点费劲, SQL 基础知识本来就比较抽象,加上例子也显得过于繁琐了,读起来不太通畅。希望以后能够用更生动的语言和图片来讲解,更容易理解!

    有11位网友表示赞同!

SQL基础知识约束(实例)
箜明

我觉得这篇博文太注重理论知识的解释了,缺乏实践操作指导。最好能结合一些实际项目案例进行演示,这样更加贴近我们的学习需求。

    有16位网友表示赞同!

SQL基础知识约束(实例)
男神大妈

SQL 相关的约束类型比较多,这篇文章整理得很清楚,而且用例子说明得也不错!以后在做数据库设计的时候可以用到这篇博文。

    有17位网友表示赞同!

SQL基础知识约束(实例)
早不爱了

终于明白什么叫做数据完整性和一致性了!谢谢作者的细致讲解。有了这些约束知识,我相信可以写出更 robust 的数据库脚本!

    有16位网友表示赞同!

SQL基础知识约束(实例)
惦着脚尖摘太阳

这篇文章只是讲了一些非常基础的东西啊,我还想深入了解一些更高级的数据约束机制,例如外键约束和触发器等。希望以后文章能涵盖更多内容!

    有5位网友表示赞同!

SQL基础知识约束(实例)
一笑抵千言

对于刚接触 SQL 的人来说,这篇博文可能会有些难懂,建议可以先把一些基本的语法介绍一下,再讲解约束的概念。

    有6位网友表示赞同!

SQL基础知识约束(实例)
隔壁阿不都

数据约束是写 SQL 最重要的方面之一,这篇文章的讲解很有帮助,让我对这个知识点更加深入的理解了,强烈推荐给所有学习SQL 的朋友们!

    有17位网友表示赞同!

SQL基础知识约束(实例)
玻璃渣子

我之前总觉得约束只是代码中的一个小细节,其实它关系到数据的完整性和一致性。这篇博文让我开眼界,以后我会更加重视数据约束的设计和编写。

    有5位网友表示赞同!

SQL基础知识约束(实例)
煮酒

数据库表的设计很重要啊, 只能用这篇文章例子说明一些基本情况,我还想了解针对不同场景的数据约束设计,例如电商网站、社交平台等等的数据库表设计案例!

    有13位网友表示赞同!

SQL基础知识约束(实例)
自繩自縛

文章写得不错,很清晰地讲解了不同类型的 SQL 数据约束。不过我觉得对于每个约束类型来说,可以添加更多实用的代码例子,这样对理解更加深化。

    有6位网友表示赞同!

SQL基础知识约束(实例)
容纳我ii

SQL 基础知识很重要,这篇博文讲的很好用,让我掌握了一些基础的数据库设计技能! 👍

    有16位网友表示赞同!

SQL基础知识约束(实例)
冷落了♂自己·

文章讲解得很棒!终于明白为什么数据约束这么重要了,它能够有效地维护数据库的数据质量和完整性。以后我也要把数据约束融入到我的编程习惯中。

    有6位网友表示赞同!

SQL基础知识约束(实例)
我就是这样一个人

学习 SQL 真不容易啊!这篇博文虽然只是一些基础知识,但我还是感觉很有帮助,感谢作者的辛苦分享!

    有10位网友表示赞同!

SQL基础知识约束(实例)
白恍

这篇文章没有提到一些高级的数据约束,例如数据库触发器。我希望以后文章可以介绍更加深入的内容。

    有15位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/121198.html

(0)
小su's avatar小su
上一篇 2024年9月1日 下午2:06
下一篇 2024年9月1日 下午2:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注