SQL 约束(Constraints) |
您所在的位置:网站首页 › sql查询约束名 › SQL 约束(Constraints) |
SQL 插入数据(INSERT INTO)SQL 创建表(CREATE TABLE)
SQL 约束(Constraints)
在本教程中,您将学习如何使用SQL约束。 什么是约束?约束只是对表的一个或多个列的限制,以限制可以存储在该列中的值的类型。约束提供了一种标准机制来维护数据库表内数据的准确性和完整性。 SQL中有几种不同类型的约束,包括: NOT NULL PRIMARY KEY UNIQUE DEFAULT FOREIGN KEY CHECK 现在,让我们详细讨论每个约束。 NOT NULL约束该NOT NULL限制指定列不接受NULL值。 这意味着,如果NOT NULL对列施加约束,那么您必须在表中插入新行而不为该列添加非NULL值。 以下SQL语句创建一个名为person的表,该表有四列,其中三列id,name和phone不接受NULL值。 CREATE TABLE persons ( id INT NOT NULL, name VARCHAR(30) NOT NULL, birth_date DATE, phone VARCHAR(15) NOT NULL );注意:空值或NULL不同于零,空白或长度为零的字符串,例如''。NULL表示尚未输入。 主键约束(PRIMARY KEY)PRIMARY KEY约束标识具有唯一标识表中的行值的列的列或集。表中的任何两行都不能具有相同的主键值。同样,您不能NULL在主键列中输入值。 以下SQL语句创建一个名为persons的表,并将id列指定为主键。这意味着该字段不允许NULL或重复值。 CREATE TABLE persons ( id INT NOT NULL PRIMARY KEY, name VARCHAR(30) NOT NULL, birth_date DATE, phone VARCHAR(15) NOT NULL );提示:主键通常由一个表中的一列组成,但是可以由多个列组成该主键,例如,员工的电子邮件地址或分配的标识号是员工表的逻辑主键。 唯一约束(UNIQUE)UNIQUE约束限制一个或多个列在表中包含唯一值。 尽管UNIQUE约束和PRIMARY KEY约束都强制唯一性,UNIQUE但是PRIMARY KEY当您要强制列或列组合(而不是主键)的唯一性时,请使用约束而不是约束。 以下SQL语句创建一个名为persons的表,并将phone列指定为unique。这意味着该字段不允许重复值。 CREATE TABLE persons ( id INT NOT NULL PRIMARY KEY, name VARCHAR(30) NOT NULL, birth_date DATE, phone VARCHAR(15) NOT NULL UNIQUE );注意:可以在一个表上定义多个UNIQUE约束,而在一个表上只能定义一个PRIMARY KEY约束。而且,与PRIMARY KEY约束不同,UNIQUE约束允许NULL值。 默认约束(DEFAULT)DEFAULT约束指定列的默认值。 列的默认值是当INSERT语句未显式分配特定值时,数据库引擎将在列中插入的某个值。 以下SQL语句为“ 国家/地区”列创建一个默认值。 CREATE TABLE persons ( id INT NOT NULL PRIMARY KEY, name VARCHAR(30) NOT NULL, birth_date DATE, phone VARCHAR(15) NOT NULL UNIQUE, country VARCHAR(30) NOT NULL DEFAULT 'Australia' );注意:如果将表列定义为NOT NULL,但为该列分配一个默认值,则在INSERT语句中无需为该列显式分配一个值即可在表中插入新行。 外键约束(FOREIGN KEY)外键(FK)是一列或列的组合,用于在两个表中的数据之间建立和加强关系。 这是显示雇员(employees)和部门(departments)表之间关系的示例图。如果仔细查看,您会注意到employees表的dept_id列与departments表的主键列匹配。因此,dept_id为的列名员工表的外键的部门表。 在MySQL中,您可以如下创建FOREIGN KEY表时通过定义约束来创建外键。以下语句在employees表的dept_id列上建立一个外键,该外键引用departments表的dept_id列。 CREATE TABLE employees ( emp_id INT NOT NULL PRIMARY KEY, emp_name VARCHAR(55) NOT NULL, hire_date DATE NOT NULL, salary INT, dept_id INT, FOREIGN KEY (dept_id) REFERENCES departments(dept_id) );检查约束(CHECK)CHECK约束用于限制可以放置在列中的值。 例如,可以通过创建一个CHECK约束来限制薪水列的值范围,该约束只允许值在3,000到10,000之间。这样可以防止输入超出正常工资范围的工资。这是一个实例: CREATE TABLE employees ( emp_id INT NOT NULL PRIMARY KEY, emp_name VARCHAR(55) NOT NULL, hire_date DATE NOT NULL, salary INT NOT NULL CHECK (salary >= 3000 AND salary |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |