MySQL 中的表约束是用来确保数据的完整性和一致性的规则。约束可以应用于表中的列或整个表。常见的约束类型包括:
PRIMARY KEY
UNIQUE
FOREIGN KEY
NOT NULL
DEFAULT
CHECK
(MySQL 不直接支持)要查询表的约束信息,可以使用 SHOW CREATE TABLE
或 DESCRIBE
命令。
SHOW CREATE TABLE
SHOW CREATE TABLE table_name;
DESCRIBE
DESCRIBE table_name;
假设有一个名为 users
的表,结构如下:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL UNIQUE,
age INT DEFAULT 18
);
查询 users
表的约束信息:
SHOW CREATE TABLE users;
输出示例:
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`email` varchar(100) NOT NULL,
`age` int(11) DEFAULT '18',
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
问题: 插入数据时违反唯一约束。 原因: 插入的数据在唯一约束的列中已经存在。 解决方法:
INSERT IGNORE
或 ON DUPLICATE KEY UPDATE
语句处理重复数据。示例:
INSERT INTO users (username, email, age)
VALUES ('john_doe', 'john@example.com', 25)
ON DUPLICATE KEY UPDATE age = 25;
参考链接:
领取专属 10元无门槛券
手把手带您无忧上云