在SQL中,NOT NULL是一个约束条件,用于确保列不接受NULL值。

这个约束通常在创建表或修改表时使用,以确保数据的完整性和准确性。

以下是NOT NULL的一些常见用法:

  1. 创建表时指定NOT NULL约束
    当你创建一个新表时,可以在列定义后面添加NOT NULL来指定该列不能包含NULL值。

CREATE TABLE customers ( customer_id INT NOT NULL, first_name VARCHAR(50) NOT NULL, last_name VARCHAR(50) NOT NULL, email VARCHAR(100) ); 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

在这个例子中,customer_idfirst_namelast_name列都不能包含NULL值,而email列没有这个约束,所以它可以是NULL

  1. 修改表时添加NOT NULL约束
    如果一个表已经存在,但你想要添加NOT NULL约束到某个列上,可以使用ALTER TABLE语句。

ALTER TABLE customers MODIFY email VARCHAR(100) NOT NULL; 
  • 1.
  • 2.

这个语句将email列的约束从可为NULL修改为不能为NULL

  1. 在列定义中使用DEFAULT值与NOT NULL
    你可以将NOT NULLDEFAULT关键字一起使用,为列提供一个默认值。

CREATE TABLE orders ( order_id INT NOT NULL, customer_id INT NOT NULL, order_date DATETIME NOT NULL DEFAULT now() ); 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

在这个例子中,如果用户在插入新订单时没有指定order_date,那么将自动使用当前日期作为默认值。

  1. 在INSERT语句中处理NOT NULL约束
    当你向一个包含NOT NULL约束的表中插入数据时,必须为这些列提供值。

INSERT INTO orders (order_id, customer_id) VALUES (1, null); INSERT INTO orders (order_id, customer_id) VALUES (1, 1); 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

如果你尝试插入一个缺少 order_id,customer_id 值的记录,SQL将返回错误,因为这些列都有NOT NULL约束。

  1. 在UPDATE语句中处理NOT NULL约束
    即使列具有NOT NULL约束,你也可以通过UPDATE语句为这些列设置新值,只要新值不是NULL

UPDATE customers SET first_name = 'Jane' WHERE customer_id = 1; 
  • 1.
  • 2.
  • 3.

NOT NULL约束是数据库设计中非常重要的一部分,它帮助确保数据的完整性,防止不完整的数据被存储到数据库中。在设计数据库时,合理地使用NOT NULL约束可以提高数据的可靠性和应用程序的健壮性。