步骤 1 : 主键 步骤 2 : 设置id为自增长 步骤 3 : 外键
完整的J2SE桌面项目,从无到有完整的开发流程,涵盖全部52个知识点,154个开发步骤, 一共36个讲解视频,累计时长3小时10分59秒,大小1.94G,充实J2SE项目经验,为简历加上一个有吸引力的砝码
增值内容,点击购买
所有的表都有一个主键id,但是这只是语意上的(我们认为的),为了让数据库把id识别为主键,需要加上主键约束
主键约束自带非空和唯一属性,即不能插入空,也不能重复 分析这一条增加约束的SQL语句: alter table category add constraint pk_category_id primary key (id); alter table category 表示修改表category add constraint 增加约束 pk_category_id 约束名称 pk 是primary key的缩写,category是表名, id表示约束加在id字段上。约束名称是可以自己定义的,你可以写成abc,但是尽量使用好的命名,使得一眼就能够看出来这个约束是什么意思。 能够降低维护成本。 primary key 约束类型是主键约束 (id) 表示约束加在id字段上 以下是对三张表都加上主键约束 alter table category add constraint pk_category_id primary key (id);
alter table record add constraint pk_record_id primary key (id);
alter table config add constraint pk_config_id primary key (id);
alter table category add constraint pk_category_id primary key (id); alter table record add constraint pk_record_id primary key (id); alter table config add constraint pk_config_id primary key (id);
完整的J2SE桌面项目,从无到有完整的开发流程,涵盖全部52个知识点,154个开发步骤, 一共36个讲解视频,累计时长3小时10分59秒,大小1.94G,充实J2SE项目经验,为简历加上一个有吸引力的砝码
增值内容,点击购买
设置id为自增长是常用的插入数据策略。 换句话说,插入消费分类数据的时候,只用提供分类名称即可,不需要自己提供id, id由数据库自己生成。
不同的数据库采用的自增长方式是不一样的,比如Oracle使用Sequence来实现,而MySQL就使用AUTO_INCREMENT来实现 alter table category change id id int auto_increment; 分析这条SQL语句: alter table category 表示修改表category change id 表示修改字段 id id int auto_increment; 修改后的id是 int类型,并且是auto_increment(修改之前仅仅是int类型,没有auto_increment) 以下SQL语句,分别为不同的表设置自增长 alter table category change id id int auto_increment;
alter table record change id id int auto_increment;
alter table config change id id int auto_increment;
alter table category change id id int auto_increment; alter table record change id id int auto_increment; alter table config change id id int auto_increment;
完整的J2SE桌面项目,从无到有完整的开发流程,涵盖全部52个知识点,154个开发步骤, 一共36个讲解视频,累计时长3小时10分59秒,大小1.94G,充实J2SE项目经验,为简历加上一个有吸引力的砝码
增值内容,点击购买
外键约束的作用是保持数据的一致性
比如增加一条消费记录,金额是500,cid是5。 但是cid=5在分类表category中找不到对应的数据,那么这就破坏了数据的一致性,会带来一系列的后续问题,比如根据分类进行统计,就会找不到这条数据。 增加外键约束之前首先确定record表的外键是cid,指向了category表的id主键。 所以增加外键之前,必须把category的id字段设置为主键。从而保证cid=5的数据在category中只能找到一条,而不是找到多条。 以下是增加外键约束的SQL: alter table record add constraint fk_record_category foreign key (cid) references category(id) alter table record 修改表record add constraint 增加约束 fk_record_category 约束名称fk_record_category,fk是foreign key的缩写,record_category表示是从record表指向category表的约束。 与主键一样,约束名称也是可以自己定义的,比如写成abc. 不过依然建议使用可读性好的命名方式。 foreign key 约束类型,外键 (cid) references category(id) 本表record的字段 cid 指向category表的字段id alter table record add constraint fk_record_category foreign key (cid) references category(id);
alter table record add constraint fk_record_category foreign key (cid) references category(id);
HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
问答区域
2022-04-06
sql执行错误1005
1 个答案
how2j 跳转到问题位置 答案时间:2022-05-02 把表删除掉,从前面的步骤再做一遍呢:
https://how2j.cn/k/hutubill/hutubill-database-table/714.html
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2020-10-26
约束
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2019-11-02
关于外键约束
2019-07-04
还是navicat设主键方便,请问我们工作上很少用这种sql吧,被navicat这种可视化工具替代程度高吗?
2018-09-15
未知错误1075
提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 3 条以前的提问,请 点击查看
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|