CREATE TABLE students (
id INT PRIMARY KEY。name VARCHAR,age INT);-- 示例: 正确使用id作为主键
ALTER TABLE students DROP PRIMARY KEY;ALTER TABLE students ADD PRIMARY KEY;-- 错误,name可能重复
-- 注意: 修改/删除主键需谨慎,可能破坏外部关联
ALTER TABLE students DROP PRIMARY KEY;-- 彻底移除
⚠️ 主要痛点:
设计时忽略非空要求:"我们能用带null值的列作为主键吗?"——绝对不行,这将破坏实体完整性!
联级操作风险:"为什么删除父表记录会自动删子表?"——因为外键依赖,而主键被作为关联节点!按理说,
二、外键约束
痛点:关系维护失控导致脏数据泛滥!
通过一个表的字段引用另一个表的主键。.
维护引用完整性: 防止出现无效关联.
明确表间关系: 如学生-班级对应关系.
查询效率: 调整连接操作.
CREATE TABLE classes(
id INT PRIMARY KEY,name VARCHAR);
CREATE TABLE students(
id INT PRIMARY KEY,name VARCHAR。class_id INT,FOREIGN KEY REFERENCES classes);--
-- ⚠️ 警告: 操作外键需谨慎!说起来,ALTER TABLE students DROP FOREIGN KEY fk_class_id;-- 删除关联
ALTER TABLE students MODIFY COLUMN class_id INT NULL;-- 改变可空性危险,-- 常用方法: 必须先处理子表再修改父表!DELETE FROM classes WHERE id = 1;-- 若有子记录则报错
TRUNCATE TABLE classes;按理说,-- 清空时一样受限制
CREATE TABLE students (
id INT PRIMARY KEY。name VARCHAR,age INT);-- 示例: 正确使用id作为主键
ALTER TABLE students DROP PRIMARY KEY;ALTER TABLE students ADD PRIMARY KEY;-- 错误,name可能重复
-- 注意: 修改/删除主键需谨慎,可能破坏外部关联
ALTER TABLE students DROP PRIMARY KEY;-- 彻底移除
⚠️ 主要痛点:
设计时忽略非空要求:"我们能用带null值的列作为主键吗?"——绝对不行,这将破坏实体完整性!
联级操作风险:"为什么删除父表记录会自动删子表?"——因为外键依赖,而主键被作为关联节点!按理说,
二、外键约束
痛点:关系维护失控导致脏数据泛滥!
通过一个表的字段引用另一个表的主键。.
维护引用完整性: 防止出现无效关联.
明确表间关系: 如学生-班级对应关系.
查询效率: 调整连接操作.
CREATE TABLE classes(
id INT PRIMARY KEY,name VARCHAR);
CREATE TABLE students(
id INT PRIMARY KEY,name VARCHAR。class_id INT,FOREIGN KEY REFERENCES classes);--
-- ⚠️ 警告: 操作外键需谨慎!说起来,ALTER TABLE students DROP FOREIGN KEY fk_class_id;-- 删除关联
ALTER TABLE students MODIFY COLUMN class_id INT NULL;-- 改变可空性危险,-- 常用方法: 必须先处理子表再修改父表!DELETE FROM classes WHERE id = 1;-- 若有子记录则报错
TRUNCATE TABLE classes;按理说,-- 清空时一样受限制