MySQL-约束:非空约束、唯一性约束、PRIMARY KEY 约束、自增列:AUTO_INCREMENT、FOREIGN KEY 约束、CHECK 约束、DEFAULT约束

1、非空约束(NOT NULL)

非空约束用于确保某一列的值在插入或更新时不能为NULL。如果尝试将NULL值插入到具有非空约束的列中,数据库系统将会拒绝此次操作并返回错误
例子:

   CREATE TABLE Employees (
       EmployeeID INT PRIMARY KEY,
       FirstName VARCHAR(50) NOT NULL,  -- 非空约束
       LastName VARCHAR(50),
       HireDate DATE NOT NULL
   );

在这里插入图片描述
在这个例子中,FirstName和HireDate两列被定义为不能存储NULL值。

2、唯一性约束(UNIQUE)

唯一性约束用来保证指定列中的所有行的值都必须是唯一的但允许有且仅有一个NULL值。如果有多个NULL值也是允许的,具体取决于数据库系统(例如MySQL允许Oracle不允许)。
例子:

   CREATE TABLE Users (
       UserID INT PRIMARY KEY AUTO_INCREMENT,
       Username VARCHAR(50) UNIQUE,  -- 唯一约束
       Email VARCHAR(100) UNIQUE
   );

在此例中,Username和Email字段被设置为唯一约束,这意味着在表Users中不会有重复的用户名和电子邮件地址
在这里插入图片描述

3、主键约束(PRIMARY KEY)

主键约束是一个特殊的唯一性约束,它同时要求该列的值既不能为空也不能重复每个表只能有一个主键,它可以由单个列或多列(复合主键)组成
例子:

   CREATE TABLE Orders (
       OrderID INT PRIMARY KEY AUTO_INCREMENT,  -- 主键约束
       CustomerID INT NOT NULL,
       OrderDate DATE NOT NULL
   );

在这个例子中,OrderID列作为主键,其值自动递增且不可为空也不可重复。这确保了每一笔订单都有一个独一无二的标识符

4、自增列(AUTO_INCREMENT)

自增列通常用于设置主键或唯一标识符,其值在每次插入新行时自动递增。该特性常见于MySQL和其他一些数据库系统。
例子:

   CREATE TABLE Employees (
       EmployeeID INT PRIMARY KEY AUTO_INCREMENT,
       FirstName VARCHAR(50) NOT NULL,
       LastName VARCHAR(50),
       HireDate DATE NOT NULL
   );

在这个例子中,EmployeeID列被定义为自增列,每当向Employees表中插入新的员工记录时,EmployeeID的值会自动增加1,并确保每个员工有一个唯一的ID。

5、外键约束(FOREIGN KEY)

外键约束用于在两个表之间建立关联关系,它确保一个表中的某一列的值必须存在于另一个表的某一列中。这样可以保证数据的一致性和完整性
例子:

   CREATE TABLE Orders (
       OrderID INT PRIMARY KEY,
       CustomerID INT,
       OrderDate DATE,
       FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
   );

   CREATE TABLE Customers (
       CustomerID INT PRIMARY KEY,
       FirstName VARCHAR(50),
       LastName VARCHAR(50),
       Email VARCHAR(100)
   );

在此例中,Orders表中的CustomerID列是一个外键,它引用了Customers表的CustomerID主键列,确保每一个订单都关联到一个已存在的客户。
在这里插入图片描述

6、CHECK 约束

CHECK 约束允许我们在创建表定义一列或多列应满足的条件,只有当插入或更新的数据满足这些条件时,操作才能成功执行
例子:

   CREATE TABLE Students (
       StudentID INT PRIMARY KEY,
       Age INT CHECK (Age >= 18 AND Age <= 30),  -- CHECK约束
       EnrollmentYear INT
   );

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这个示例中,我们对Age列添加了一个CHECK约束,确保插入的学生年龄在18至30岁之间。

7、DEFAULT 约束

DEFAULT 约束指定当插入新行时如果没有为某列提供具体的值,则自动使用默认值
例子:

   CREATE TABLE Products (
       ProductID INT PRIMARY KEY,
       ProductName VARCHAR(100),
       Price DECIMAL(10, 2) DEFAULT 0.00
   );

在这里插入图片描述
在这里插入图片描述
在上述Products表中,Price列具有一个DEFAULT约束,如果在插入新产品时没有明确给出价格信息,那么默认的价格将被设定为0.00。

MySQL-约束:非空约束、唯一性约束、PRIMARY KEY 约束、自增列:AUTO_INCREMENT、FOREIGN KEY 约束、CHECK 约束、DEFAULT约束 到此完结,笔者归纳、创作不易,大佬们给个3连再起飞吧

  • 28
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小孔靠得住

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值