您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

ad_sql__Constraints

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()
    );
    

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

    来源:https://www.runoob.com/sql/sql-constraints.html