MySQL约束constraint

2 02 3 年,朋友说MySQL中主要约束包括以下几个:主键约束,标识每一行数据,可以是单列,也可以是多列,使用主键;自增约束,主键自动自增的情况,使用auto_increment;非空约束,字段不能为空的地方,使用not null;唯一约束,保证某个字段或者组合唯一,使用unique;默认约束,设置默认值,使用default;零填充约束,要在数字字段中包含前导零,请使用零填充;外键约束,为了维护表之间的关系,使用外键。
这些约束对于确保数据完整性非常重要。
顺便说一句,外键约束还可以防止数据不一致。
使用这些限制由您决定。
不要紧。

MySQL约束的分类、作用及用法

MySQL的约束,说白了就是对表中数据的一些规则,以保证数据的可靠性。
主要分为以下几类:
---
1 .主键约束(PrimaryKey)
功能:每条记录必须有唯一的标识符,不能重复或为空。
对应“身份证号码”。

用途:
创建表时,直接添加:id INT PRIMARY KEY
多列作为主键:PRIMARY KEY (id, name)
然后添加主键:ALTER TABLE user ADD PRIMARY KEY (id)
删除主键:ALTER TABLE users DROP PRIMARY KEY
---
2 . Auto_increment
功能:自动为每条记录生成唯一的编号,常用作主键。

用途:
创建表时添加:id INT AUTO_INCRMENT
清除数据后,会从断点继续自动递增(例如清除为1 00,下次自动为1 01 ),但TRUNCATE会重置为默认值(1 )。

---
3 .非零约束(NotNull)
功能:某字段不能为空,必须填写。

用途:
创建表时:Name VARCHAR(5 0) NOT NULL
然后添加:ALTER TABLE User MODIFY Name VARCHAR(5 0) NOT NULL
删除:ALTER TABLE user MODIFY name VARCHAR(5 0)
---
4 .唯一约束(Unique)
功能:字段值必须唯一,不能重复。

用途:
创建表时:发送电子邮件至 VARCHAR(1 00) UNIQUE
随后添加:ALTER TABLE 用户 ADD UNIQUE 电子邮件
删除:ALTER TABLE User DROP INDEX Email
---
5 . 默认限制(默认)
功能:如果没有输入值,则自动使用默认值。

用途:
创建表时:Status INT DEFAULT 1
然后添加:ALTER TABLE User ADD Status INT DEFAULT 1
删除:ALTER TABLE user ALTER COLUMN status DROP DEFAULT
---
6 . 零填充限制(Zerofill)
功能:如果位数不够,则在前面补0。
例如,1 2 3 变为 001 2 3 自动添加无符号数字(UNSIGNED)。

用途:
创建表时:num INT ZEROFILL
删除:ALTER TABLE user MODIFY num INT
---
7 . 外键约束(ForeignKey)
功能:建立表之间的关系,保证一个表的值必须存在于另一个表中。
例如,订单表用户 ID 必须与用户表 ID 匹配。

用途:
创建表时:FOREIGN KEY(用户 ID)REFERENCES 用户(ID)
然后添加: ALTER TABLE Orders ADD FOREIGN KEY (User ID) REFERENCES User (ID)
删除:ALTER TABLE order DROP FOREIGN KEY user_id
---
实际使用中需要注意的点:
例如,在企业开发系统中,users表的主键自动递增,电子邮件地址必须唯一,状态默认为“待审核”。
在创建表时清楚地写下这些限制是最容易的。

删除数据时,TRUNCATE比DELETE影响更大。
这将重置自动增量列。

外键约束对于防止数据被随机链接尤为重要。
如果比如删除一个用户时,订单表中还有该用户的记录,直接删除就会报错。
必须首先处理订单。

---
说实话,如果你经常使用这些限制,你当然会习惯它们。
当您第一次开始编写 SQL 时很容易错过它们。
例如,您忘记添加 NOT NULL 并插入空值。
不过MySQL会报错提醒你,慢慢就会变得容易了。

sql 中 unique 约束用法_sql 中 unique 约束确保唯一性技巧

嘿,说到SQL中的UNIQUE约束,它实际上是数据库设计中的一小部分,却有很大的作用。
Curabitur 用于 Tincidunts。

这个UNIQUE约束就像是在表的某个字段上贴了一个小标签,表明数据库的值不能重复。
例如,如果我们设置一个用户帐户,则用户名必须是唯一的。
在这种情况下,必须使用单一强制。

例如,创建用户表,ID必须是主键,并且电子邮件地址必须是唯一的。
代码应该这样写:
用户表( id INT 主键 地址 VARCHAR(2 5 5 ) UNIQUE ); 在此字段中添加唯一地址意味着用户的地址必须是唯一的。

但是,这种独特的要求不仅可以添加到新创建的表中,还可以添加到现有表中。
例如:MySQL、PostgreSQL 和 SQL Server 都具有添加 UNIQUE 约束的语法:
ALTER TABLE 用户免费添加 unique_email UNIQUE(电子邮件);
有时,由于多个字段组合必须是唯一的,因此您需要使用唯一的组合。
例如,订单格式应保证同一用户不能对同一产品重复下订单,应这样写:
表行( order_id INT 主键 用户 ID INT 产品 ID INT 唯一(用户 ID、产品 ID) ); 但这一把和第一把钥匙不同。
第一个key就是第一个key,表中只能有一个,而且必须非空;与奇异约束一样,一个表可以有多个值,并且允许零值。

不同的数据库不会以不同的方式对待任何值。
例如,MySQL 可以处理多个空值,但 PostgreSQL 不能。
多个空值将充当重复值。

另外,虽然UNIQUE和PRIMARY KEY都保证唯一性,但是它们的用途是不同的。
例如,您需要某个字段是唯一的,但不希望它成为主键。
在这种情况下,请使用 UNIQUE。

虽然这个UNIQUE约束使用起来很简单,但是还是有很多问题需要注意。
首先,如果添加具有UNIQUE条件的字段,它将自动创建数据库索引。
当数据集较大或频繁更新时,该索引会影响性能。

另一个是冲突解决。
例如,如果您尝试插入重复值,数据库将报告错误。
不同的数据库有不同的处理方式,例如PostgreSQL ONLINE、MySQL IGNORE INSERT或UPDATE DUPLICATE KEY。

最后,如果以后不再需要某个UNIQUE需求,记得当时删除掉,否则会影响数据的插入。

总之,这股力量虽然小,但作用却很大。
如果使用得当,它可以帮助你避免很多数据一致性问题。