SQL约束

SQL约束

1、说明

概念:约束是作用在表中字段上的规则,用于限制存储在表中的数据。

目的:保证数据库中数据的正确、有效和完整性。

约束 描述 关键字
非空约束 限制该字段不能为空 not null
唯一约束 保证该字段的所有数据都是唯一的、不重复的 unique
主键约束 主键是一行数据的唯一标识,要求非空且唯一 primary key
默认约束 保存数据时,如果未指定该字段值,则采用默认值 default
检查约束(8.0.16之后) 保证字段满足某一个条件 check
外键约束 用来让两张表的数据之间建立连接 foreign key

2、用法

自增:auto_increment

MySQL

ALTER TABLE my_table MODIFY id INT AUTO_INCREMENT;

SQLServer

-- 删除依赖于id列的约束
ALTER TABLE my_table DROP CONSTRAINT <constraint_name>;

-- 修改字段为自增
ALTER TABLE my_table ALTER COLUMN id INT IDENTITY(1,1);

-- 重新创建约束(如果有)
ALTER TABLE my_table ADD CONSTRAINT <constraint_name> PRIMARY KEY (id);

约束的添加

-- 1、添加主键
ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY (主键字段名);
-- 例:ALTER TABLE Orders ADD CONSTRAINT FK_Orders_Customers FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID);
-- 2、添加外键
alter table 表名 add constraint 外键名 foreign key (外键字段名) references 主表(主字段名);
-- 删除外键
alter table 表名 drop foreign key 外键名;
-- 3、添加唯一约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 (需要约束的字段);
-- 4、添加默认约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 DEFAULT '默认值' FOR 字段名;
-- 5、检查约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 CHECK (Age >= 18 检查的条件);
-- 6、非空约束
ALTER TABLE 表名 ALTER COLUMN 字段名 varchar(255) NOT NULL;

外键的作用
保证数据的完整性,设置外键字段的称为子表,相关联的表称为父表
删除和更新行为

  • no action(默认):在父表中删除/更新对应的记录时,如果该记录有外键,则不能更新/删除。
  • cascade:在父表中删除/更新对应的记录时,如果该记录有外键,则删除/更新子表中的记录。
  • set null:在父表中删除/更新对应的记录时,如果该记录有外键,则设置子表中该外键值为null。
  • set default:父表变更时,子表建外键列设置成一个默认的值(innodb不支持)。
# 指定行为
alter table 表名 add constraint 外键名 foreign key (外键字段) references 主表(主字段名) on update cascade on delete cascade;

相关推荐

  1. <span style='color:red;'>SQL</span><span style='color:red;'>约束</span>

    SQL约束

    2024-07-12 02:24:02      32 阅读
  2. SQL约束

    2024-07-12 02:24:02       25 阅读
  3. SQL-约束

    2024-07-12 02:24:02       22 阅读
  4. 2. SQL - 约束

    2024-07-12 02:24:02       51 阅读
  5. SQL常见约束及外键约束删除更新行为

    2024-07-12 02:24:02       31 阅读
  6. SQL基础 | NOT NULL 约束介绍

    2024-07-12 02:24:02       22 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 02:24:02       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 02:24:02       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 02:24:02       57 阅读
  4. Python语言-面向对象

    2024-07-12 02:24:02       68 阅读

热门阅读

  1. 在conda虚拟环境中安装llama-parse依赖

    2024-07-12 02:24:02       20 阅读
  2. Sugon RackServer服务器监控指标解读

    2024-07-12 02:24:02       27 阅读
  3. 区块链技术的应用场景和优势。

    2024-07-12 02:24:02       22 阅读
  4. 笔记第二弹

    2024-07-12 02:24:02       26 阅读
  5. 小程序 全局数据共享 getApp()

    2024-07-12 02:24:02       21 阅读
  6. 算法·二分

    2024-07-12 02:24:02       17 阅读
  7. 解决AssertionError: Negative indexing is not supported

    2024-07-12 02:24:02       23 阅读