SQL的五大约束作用、语法、应用场景及举例

SQL的五大约束包括主键约束(PRIMARY KEY)、唯一性约束(UNIQUE)、外键约束(FOREIGN KEY)、非空约束(NOT NULL)和默认约束(DEFAULT)

sql约束的作用:主要是保证数据的完整性、准确性和一致性 ,从而确保 数据库中存储的数据质量

温馨提示:以下举例为mysql版本,若您是oracle或其他数据库,语法会有差异!!!

  1. 主键约束(PRIMARY KEY) :确保某列必须要有唯一的标识符。
    应用场景 :用于唯一标识数据库表中的每条记录。
    注意点 :一个表中只能有一个主键,主键列的值必须是唯一的,不能为空。
    举例

    CREATE TABLE Employees (
    EmployeeID int NOT NULL,
    FirstName varchar(50),
    LastName varchar(50),
    BirthDate date,
    PRIMARY KEY (EmployeeID)
    );

在上述示例中,EmployeeID被定义为主键,确保每个员工都有一个唯一的标识符。

当表被创建后,可以使用ALTER TABLE语句来添加或删除约束

复制代码
--添加
ALTER TABLE 表名   ADD PRIMARY KEY (列名);
--例子:将"user_info"表的"UserID"列设置为主键
ALTER TABLE user_info ADD PRIMARY KEY (UserID);
--删除
ALTER TABLE 表名  DROP  PRIMARY KEY ;
--例子:删除用户表的主键
ALTER TABLE user_info DROP PRIMARY KEY ;
  1. 唯一性约束(UNIQUE) :唯一性约束确保在非主键列中不输入重复的值。
    应用场景 :用于防止在列中输入重复的值。
    注意点 :唯一性约束允许空值,但当和参与唯一性约束的任何值一起使用时,每列只允许一个空值。
    举例

    复制代码
    CREATE TABLE Users (  
        UserID int NOT NULL,  
        Username varchar(50) NOT NULL,  
        Email varchar(100),  
        UNIQUE (Username),  
        UNIQUE (Email)  
    );

    在上述示例中,UsernameEmail字段都被定义为唯一约束,确保用户名和电子邮件地址都是唯一的。
    当表被创建后,可以使用ALTER TABLE语句来添加或删除约束

    --添加唯一约束
    ALTER TABLE 表名 ADD UNIQUE (列名);
    -- 例子
    ALTER TABLE user_info ADD UNIQUE (USERID);
    -- 删除唯一约束
    ALTER TABLE 表名 DROP KEY 字段名;
    -- 例子
    ALTER TABLE user_info DROP KEY USERID;

  2. 外键约束(FOREIGN KEY) :外键约束用于强制参照完整性,提供单个字段或者多个字段的参照完整性。
    应用场景 :用于保证数据库表之间的关系,确保数据表中的数据符合某种引用完整性。
    注意点:外键列的值必须在被参照表的相应列中有对应的数据。

    复制代码
    CREATE TABLE Orders (  
        OrderID int NOT NULL,  
        OrderNumber int NOT NULL,  
        CustomerID int,  
        PRIMARY KEY (OrderID),  
        FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)  
    );

    Orders表中的CustomerID字段是一个外键,它引用另一个表Customers中的CustomerID字段,确保订单与客户的关联关系。

    当表被创建后,可以使用ALTER TABLE语句来添加或删除约束

    --添加外键
    ALTER TABLE 表名 ADD FOREIGN KEY 约束名(列名) REFERENCES 另一个表名 (列名);
    -- 例子
    ALTER TABLE user_role ADD FOREIGN KEY user_role_userid (userid) REFERENCES user_info (userid);
    -- 删除外键
    ALTER TABLE 表名 DROP FOREIGN KEY 约束名;
    -- 例子
    ALTER TABLE user_role DROP FOREIGN key user_role_userid ;

  3. 非空约束(NOT NULL) :设置非空约束,该字段不能为空。
    应用场景 :用于确保某列必须有值,不能为NULL。
    注意点:非空约束是一种强制性的约束,它要求列中的值必须被指定,不能为NULL。

    CREATE TABLE ContactDetails (
    ContactID int NOT NULL,
    Name varchar(100) NOT NULL,
    PhoneNumber varchar(20)
    );

在上述示例中,Name字段被定义为非空约束,确保联系人的姓名不能为空。

当表被创建后,可以使用ALTER TABLE语句来添加或删除约束

复制代码
--添加非空约束
ALTER TABLE 表名 MODIFY 列名 字段类型 NOT NULL;
-- 例子
ALTER TABLE user_info MODIFY userID varchar(64)  NOT NULL;
-- 删除非空约束
ALTER TABLE 表名 MODIFY 列名 字段类型 NULL;
-- 例子
ALTER TABLE user_info MODIFY userID varchar(64) NULL;
  1. 默认约束(DEFAULT) :该数据的默认值。
    应用场景 :为没有提供输入值的字段或列提供默认值。
    注意点:默认值必须满足列的数据类型的要求,如果未指定值则会自动使用默认值。

    复制代码
    CREATE TABLE Products (  
        ProductID int NOT NULL,  
        ProductName varchar(100),  
        Price decimal(10, 2),  
        DefaultStock int DEFAULT 0
    );

    在上述示例中,DefaultStock字段被定义为默认约束,其默认值为0。当插入新产品时,如果没有指定库存数量,则会默认给0。

    当表被创建后,可以使用ALTER TABLE语句来添加或删除约束

    --添加DEFAULT约束
    ALTER TABLE 表名 ALTER 字段名 SET DEFAULT 默认值;
    -- 例子
    ALTER TABLE user_info ALTER CITY SET DEFAULT '北京';
    -- 删除DEFAULT约束
    ALTER TABLE 表名 ALTER 字段名 DROP DEFAULT;
    -- 例子
    ALTER TABLE user_info ALTER CITY DROP DEFAULT;

相关推荐
星河耀银海7 分钟前
C语言与数据库交互:SQLite实战与数据持久化
c语言·数据库·sqlite·交互
过期动态23 分钟前
MySQL中的约束
android·java·数据库·spring boot·mysql
程序员陆通28 分钟前
月烧 400 刀到不到 20 刀:我是怎么把 OpenClaw 的 Token 账单砍掉 95% 的
java·前端·数据库
Shan120531 分钟前
站在计算机领域视角看:SQL注入攻击
网络·数据库·sql
轻刀快马1 小时前
别干背八股文了:从一场“双十一秒杀”惨案,看懂 InnoDB 事务、锁与索引的底层齿轮
数据库·sql
万事大吉CC1 小时前
【1】Django 基础:MTV 架构与核心组件
数据库·架构·django
曾凡宇先生1 小时前
mysql局域网授权
数据库·mysql
xcLeigh2 小时前
IoTDB Rust 原生接口开发指南:从零生成 + 完整 RPC 调用
数据库·rpc·rust·接口·api·时序数据库·iotdb
努力努力再努力wz2 小时前
【MySQL 进阶系列】拒绝滥用root:从 mysql.user 到权限校验,带你彻底理解用户管理与授权机制!
android·c语言·开发语言·数据结构·数据库·c++·mysql
薛定谔的悦3 小时前
储能充放电状态机执行逻辑详解
linux·数据库·能源·储能·bms