重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
如果你要为 score中, 增加一个 唯一的 自增 id。
因为努力和真诚,有更多的客户和我们聚集在一起,为了共同目标,成都创新互联在工作上密切配合,从创业型企业到如今不断成长,要感谢客户对我们的高要求,让我们敢于面对挑战,才有今天的进步与发展。从网站到重庆小程序开发,软件开发,成都App定制开发,十余年企业网站建设服务经验,为企业提供网站设计,网站托管运营一条龙服务.为企业提供营销型网站,专业公司,原创设计,十余年品质,值得您的信赖.
那么恐怕你要修改表的主键了, 把 那个使用 AUTO_INCREMENT 的 id 设置为主键。
因为 仅仅只定义 AUTO_INCREMENT 是无法处理的。
mysql CREATE TABLE tab (
- id INT AUTO_INCREMENT,
- val VARCHAR(10)
- );
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
看上上面的例子了么?
我仅仅定义了 id INT AUTO_INCREMENT。
没有定义为主键。
结果错误提示信息为:
只能有一个自动递增的列, 并且必须要定义为 key.
你使用SQL语句修改呢,还是使用PHPMYADMIN?
在PHPMYADMIN里面非常简单,打开相应的表,修改字段属性,设置为主键既可。如果主键是几个字段的联合,那么就选择新建立索引,索引类型是PREMARYKEY既可。
如果是用SQL语句,那么可以使用下面的SQL语句:
ALERT TABLE tab_name ADD PRIMARY KEY (index_col_name,...);
按如下方法:
1、创建表
create table t5
(id int auto_increment,
name varchar(20) primary key,
key(id));
其中name字段是主键,而id字段则是自增字段。
2、试插入数据:
insert into t5 (name) values ('a');
执行结果:
可以看出第一次,id字段为1。
3、插入第二次数据:
insert into t5 (name) values ('b');
执行结果:
第二次插入的为2,这样就实现了自增。
1.外键的作用,主要有两个:
一个是让数据库自己通过外键来保证数据的完整性和一致性
一个就是能够增加ER图的可读性
2.外键的配置
1)先创建一个主表,代码如下:
#创建表student,并添加各种约束
create table student
(
id int primary key , #主键约束
name varchar(20) , #唯一约束
age int NOT NULL, #非空约束
sex varchar(2) ,
address varchar(20) default '重庆' #默认约束
) ;
再通过一个外键,创建一个分数表,这样的话,就可以方便查询。代码如下:
#创建分数表
create table score
(
id int primary key ,
sid int ,
china int ,
history int,
english int,
constraint FK_sid foreign key(sid) references student(id) #通过外键创建链接
) ;
创建外键的方法有很多,其中最常见创建外键的格式是:constraint FK_*** foreign key(**) references 链接的外表
删除外键:
alter table drop foreign key '外键名'.
注意:
只有在定义外键时,用constraint 外键名 foreign key .... 方便进行外键的删除
主键是唯一标示这一行的,就好像你的身份证号一样,每个人只有一个,也是唯一能证明你是你的东西。外键是别人执行你的东西。也就是说如果一个人想和你有点关系怎么办,那就要关联起来,怎么关联起来,就通过外键啊
定义主键和外键主要是为了维护关系数据库的完整性,总结一下:
一、主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。
外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。
从零蛋娃娃的回复中得到启示,解决问题。
重新表述需求: id自增长,同时需要一个键uniquekey是唯一键。
解决方法就是:
把id在索引中设置索引类型为任意一个类型,比如normal,然后unique就可以设置为主键了。
或者反过来,id自增长,同时作为主键。 uniquekey在索引中索引类型设置为unique即可。
补充:考虑到主键能设置成外键,所以建议用以上第一种方式。
1、建表时设置主键
create table test(
id int primary key auto_increment,
name varchar(50)
)
2、手动设置主键
进入phpmyadmin页面,表结构选择列主键,操作项AUTO_INCREMENT输入自增起始值。