mysql 中如何给已存在的表中字段增设置主键?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 中如何给已存在的表中字段增设置主键?相关的知识,希望对你有一定的参考价值。

如图所示,表中Id已为主键,我想要把name也设置为主键,该怎么做,用如下语法不对,报错“incorrect column specifier for column 'name' ”!
alter table mytable_1 modify name char(1) auto_increment,add primary key (name);

1、打开navicat工具,连接上mysql服务器,选择完数据库之后,选择一个表右击选择设计表(这里为了演示测试,随便选择一个表即可)。

2、在设计表页面,可以看到当前表的所有字段信息,我们选择的学生表有一个id字段,目前该表没有主键字段。

3、如图,在最后一列右击选择主键,即可将该字段设置为主键,也可以直接点击鼠标左键,可以快速添加和取消主键。

4、设置完主键之后,可以看到一把锁的标志,并且有一个1字,因为一个表可以给多个字段添加主键,则为联合主键,这样就显示为主键1,主键2等。

5、主键设置完成之后,还没有自增,选择id字段之后,在下方,如图,勾选自动递增,这样id在每次插入记录之后都会自增一个值。

6、设置完成主键和自增之后,点击保存,关闭当前窗口,然后选择表名右击选择对象信息。

7、在DLL页面中,可以看到刚刚添加的主键和自增的DLL语句,这里就是创建表的DLL语句。

8、上面有提到联合主键,其实一个表可以给多个字段设置主键,这样可以组成联合主键,对于特定的业务,联合主键也是必须的。

参考技术A 首先你必须把name的条件改为not null
alter table mytable_1 alter column name char(1) not null
然后可以把原主键删除,再重新增加主键。
alter table mytable_1 drop constraint PK_mytable_1(主键名字)
alter table mytable_1 add constraint PK_mytable_1 primary key(id,name)本回答被提问者采纳
参考技术B 把表里面的数据备份到另外一张表里面 create table table2 as select * from table1;
然后把表里的所有记录删除 delete from table1;
-添加主键name
alter table table1 add constraint pk_table1 primary key(name);
将备份数据导回原表
INSERT INTO table1 SELECT * FROM table2 ;

sql server建表时怎么设置ID字段自增

sql server建表时设置ID字段自增的方法有两种:

1 、在SQL Server Management Studio中实现SQL Server自增字段

打开SQL Server Management Studio,打开数据库之后,在选中的表上点“修改”,在选中需要设置为自增的字段,在右下方的表设计器里选择“标识规范”,选“是”,就设定即可。

也可以在表的属性窗口中设置设置标识列:

2、使用SQL语句在程序或者查询分析器里面实现SQL Server自增字段

sql server 设置自增字段identity属性 (以新建数据表tablename中的id字段为例)

create table tablename      

(      

id int identity(1,1) //identity表示自增列的意思,而int identity(1,1)表示从1开始递增,每次自增1。

)     

这样设置之后,tablename数据表中的id字段就是自增列。

如果想实现带前缀或者后缀的自动增加字段,不能用varchar,还是使用上面的方法创建字段,但是在读取的时候用增加前后缀的形式来显示想要的效果,例如如果希望得出结果是a001可以这么做select \'a\'+convert(varchar(20),id) from tablename,这里的tablename是刚才建立的具体的表明。

参考技术A Create Table yourtable
(
id int identity(1,1),--这是自增id
name varchar(50) --这列写着耍的
)

 

在建表的时後可以对表作一些其他的设置,譬如:设定主键、外键关系、约束等

Create Table yourtable
(
id int not null Primary key  identity(1,1),--这是自增id,同时设置该列为主键
name varchar(50) check(''!=name ) --约定name值不可以是空字符串
)


要注意了,上面的建表语句name列没有写not null 只判断了不能是空字符串,但null是会通过的,因为null与任何值比较都是不等的

本回答被提问者采纳
参考技术B

在用sql语言建表的时候,用sql语句将自增写入代码中。

语句创建

create table table

name(id int identity(1,1),

其他字段

)

aql  server概述:

SQL Server 是Microsoft 公司推出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的电脑到运行Microsoft Windows 2012 的大型多处理器的服务器等多种平台使用。

以上是关于mysql 中如何给已存在的表中字段增设置主键?的主要内容,如果未能解决你的问题,请参考以下文章

SQ数据库中怎样设置自增主键?

一个糟糕的表设计

sql server建表时怎么设置ID字段自增

mysql中如何设置一个字段,表中每增加一个值,这个字段自动产生一个连续的序号?

sql server中如何实现自增字段?

mysql 的表已经存在,但是我现在想添加一列 自动增长列