【MySql】表的约束

表的约束,列的限制主要包括以下几种:

  1. 数据类型(Data Type):每个列必须指定一个数据类型,如INT、VARCHAR、DATE等。数据类型定义了列可以存储的数据种类和形式。
  2. 长度或大小(Size): 对于一些数据类型,你还需要定义长度或大小。例如,对于VARCHAR类型,需要定义最大长度。
  3. 是否允许为空(Nullability): 列可以定义为允许NULL值,也可以定义为不允许NULL值。如果列定义为不允许NULL值,那么在插入新行或更新现有行时,必须为该列提供值。
  4. 默认值(Default Value):可以为列定义一个默认值。当插入新行时,如果没有为该列提供值,那么将用默认值填充。
  5. 唯一性约束(Unique Constraint):可以为列设置唯一性约束,要求该列的值在整个表中是唯一的。
  6. 主键约束(Primary Key Constraint):每个表通常都有一个列或一组列作为主键。主键的值在整个表中是唯一的,并且主键列不允许NULL值。
  7. 外键约束(Foreign Key Constraint):可以为列设置外键约束,要求该列的值在相关表的主键列中存在。
  8. 检查约束(Check Constraint):可以为列设置检查约束,要求该列的值满足指定的条件。
  9. 自动递增(AUTO_INCREMENT): 对于整数类型,可以设置为自动递增。每次插入新行时,该列的值自动增加。

以上就是数据库列的一些常见限制。根据实际需求,可以灵活地为列设置合适的限制。

以下是关于以上每个限制的例子:

  • 数据类型(Data Type):
CREATE TABLE employees (
    employee_id INT,      -- 整数类型
    first_name VARCHAR(50), -- 可变长字符串类型
    hire_date DATE          -- 日期类型
);
  • 长度或大小(Size):
CREATE TABLE employees (
    employee_id INT,
    first_name VARCHAR(50), -- 可变长字符串,最大长度为50
    hire_date DATE
);
  • 是否允许为空(Nullability):
CREATE TABLE employees (
    employee_id INT NOT NULL, -- 不允许为空
    first_name VARCHAR(50) NULL, -- 允许为空
    hire_date DATE NOT NULL
);
  • 默认值(Default Value):
CREATE TABLE employees (
    employee_id INT NOT NULL,
    first_name VARCHAR(50) NULL DEFAULT 'N/A', -- 默认值为'N/A'
    hire_date DATE NOT NULL
);
  • 唯一性约束(Unique Constraint):
CREATE TABLE employees (
    employee_id INT NOT NULL,
    first_name VARCHAR(50) NOT NULL,
    ssn VARCHAR(20) UNIQUE, -- 社保号,唯一性约束
    hire_date DATE NOT NULL
);
  • 主键约束(Primary Key Constraint):
CREATE TABLE employees (
    employee_id INT NOT NULL PRIMARY KEY, -- 主键约束
    first_name VARCHAR(50) NOT NULL,
    hire_date DATE NOT NULL
);
  • 外键约束(Foreign Key Constraint):
CREATE TABLE employee_details (
    detail_id INT NOT NULL,
    employee_id INT,FOREIGN KEY (employee_id) REFERENCES employees(employee_id) -- 外键约束
);
  • 检查约束(Check Constraint):
CREATE TABLE employees (
    employee_id INT NOT NULL PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    salary DECIMAL(10, 2) CHECK (salary  0) -- 检查约束,工资必须大于0
);
  • 自动递增(AUTO_INCREMENT):
CREATE TABLE employees (
    employee_id INT PRIMARY KEY AUTO_INCREMENT, -- 自动递增
    first_name VARCHAR(50) NOT NULL,
    hire_date DATE NOT NULL
);

再次提醒,不同的数据库系统,如MySQL、SQL Server、PostgreSQL等,对于以上约束的实现可能会有一些差异和特殊性,在实际操作时需要参考对应的数据库系统文档。

 

  • 21
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值