MySQL中的INT类型是一种整数数据类型,用于存储整数值。它可以是有符号的(-2147483648到2147483647)或无符号的(0到4294967295)。当指定INT类型为NOT NULL时,表示该列的值不能为空,即必须提供一个有效的整数值。
NOT NULL约束,可以确保数据的完整性和一致性。MySQL中的INT类型有以下几种:
TINYINT:1字节,范围-128到127(有符号),或0到255(无符号)。SMALLINT:2字节,范围-32768到32767(有符号),或0到65535(无符号)。MEDIUMINT:3字节,范围-8388608到8388607(有符号),或0到16777215(无符号)。INT:4字节,范围-2147483648到2147483647(有符号),或0到4294967295(无符号)。BIGINT:8字节,范围-9223372036854775808到9223372036854775807(有符号),或0到18446744073709551615(无符号)。INT类型常用于存储以下数据:
NOT NULL约束失败原因:尝试插入一个空值或非整数值到设置了NOT NULL约束的INT列。
解决方法:
CREATE TABLE example (
id INT NOT NULL DEFAULT 0,
name VARCHAR(255)
);UPDATE语句填充默认值。UPDATE example SET id = 0 WHERE id IS NULL;-- 创建表
CREATE TABLE users (
user_id INT NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
age INT,
PRIMARY KEY (user_id)
);
-- 插入数据
INSERT INTO users (username, age) VALUES ('Alice', 30);
INSERT INTO users (username, age) VALUES ('Bob', NULL); -- 这将失败,因为age列没有默认值且设置了NOT NULL
-- 解决方法:设置默认值
ALTER TABLE users ALTER COLUMN age SET DEFAULT 0;
-- 再次插入数据
INSERT INTO users (username, age) VALUES ('Bob', NULL); -- 现在将成功,age列将被设置为默认值0