菜鸟教程 -- 学的不仅是技术,更是梦想!

SQL 教程
(追記) (追記ここまで)

SQL 约束(Constraints)


SQL 约束(Constraints)

SQL 约束用于规定表中的数据规则。

如果存在违反约束的数据行为,行为会被约束终止。

约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。

SQL CREATE TABLE + CONSTRAINT 语法

CREATE TABLE table_name
(
 column_name1 data_type(size) constraint_name,
 column_name2 data_type(size) constraint_name,
 column_name3 data_type(size) constraint_name,
 ....
);

在 SQL 中,我们有如下约束:

  • NOT NULL - 指示某列不能存储 NULL 值。
  • UNIQUE - 保证某列的每行必须有唯一的值。
  • PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
  • FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
  • CHECK - 保证列中的值符合指定的条件。
  • DEFAULT - 规定没有给列赋值时的默认值。
  • INDEX - 用于快速访问数据库表中的数据。

1. NOT NULL

确保列不能有 NULL 值。

实例

CREATE TABLE Students (
StudentID INT NOT NULL,
LastName VARCHAR(50) NOT NULL,
FirstName VARCHAR(50),
Age INT
);

2. UNIQUE

确保列中的所有值都是唯一的。

实例

CREATE TABLE Employees (
EmployeeID INT NOT NULL UNIQUE,
LastName VARCHAR(50) NOT NULL,
FirstName VARCHAR(50),
Email VARCHAR(100) UNIQUE
);

3. PRIMARY KEY

唯一标识表中的每一行记录。PRIMARY KEY 约束是 NOT NULL 和 UNIQUE 的结合。

实例

CREATE TABLE Orders (
OrderID INT NOT NULL PRIMARY KEY,
OrderNumber INT NOT NULL,
OrderDate DATE NOT NULL
);

4. FOREIGN KEY

确保一个表中的值匹配另一个表中的值,从而建立两表之间的关系。

实例

CREATE TABLE Orders (
OrderID INT NOT NULL PRIMARY KEY,
OrderNumber INT NOT NULL,
CustomerID INT,
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);

5. CHECK

确保列中的值满足特定的条件。

实例

CREATE TABLE Products (
ProductID INT NOT NULL PRIMARY KEY,
ProductName VARCHAR(100) NOT NULL,
Price DECIMAL(10, 2) CHECK (Price >= 0)
);

6. DEFAULT

为列设置默认值。

实例

CREATE TABLE Customers (
CustomerID INT NOT NULL PRIMARY KEY,
LastName VARCHAR(50) NOT NULL,
FirstName VARCHAR(50),
JoinDate DATE DEFAULT GETDATE()
);

7. INDEX

用于快速访问数据库表中的数据。

CREATE INDEX idx_lastname ON Employees (LastName);

综合示例

实例

CREATE TABLE Students (
StudentID INT NOT NULL PRIMARY KEY,
LastName VARCHAR(50) NOT NULL,
FirstName VARCHAR(50) NOT NULL,
Age INT CHECK (Age >= 18),
Email VARCHAR(100) UNIQUE,
EnrollmentDate DATE DEFAULT GETDATE()
);

通过这些约束,数据库管理系统能够确保数据的一致性、完整性和准确性。

在下面的章节,我们会详细讲解每一种约束。

AI 思考中...

2 篇笔记 写笔记

  1. #0

    张耘翡

    869***[email protected]

    544

    PRIMARY KEY 约束的实例

    CREATE TABLE Persons
    (
     Id_P int NOT NULL,
     LastName varchar(255) NOT NULL,
     FirstName varchar(255),
     Address varchar(255),
     City varchar(255),
     PRIMARY KEY (Id_P) //PRIMARY KEY约束
    )
    CREATE TABLE Persons
    (
     Id_P int NOT NULL PRIMARY KEY, //PRIMARY KEY约束
     LastName varchar(255) NOT NULL,
     FirstName varchar(255),
     Address varchar(255),
     City varchar(255)
    )

    张耘翡

    869***[email protected]

    9年前 (2018年01月06日)
  2. #0

    徐家豪

    317***[email protected]

    317

    foreign key 用法:

    create table if not exists per(
     id bigint auto_increment comment '主键',
     name varchar(20) not null comment '人员姓名',
     work_id bigint not null comment '工作id',
     create_time date default '2021-04-02',
     primary key(id),
     foreign key(work_id) references work(id)
    )
    create table if not exists work(
     id bigint auto_increment comment '主键',
     name varchar(20) not null comment '工作名称',
     create_time date default '2021-04-02',
     primary key(id)
    )

    徐家豪

    317***[email protected]

    5年前 (2021年04月02日)

点我分享笔记

  • 昵称 (必填)
  • 邮箱 (必填)
  • 引用地址

AltStyle によって変換されたページ (->オリジナル) /