约束
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连再起飞吧