Mysql主键相关的sql语句集锦
添加表字段
altertabletable1addtransactorvarchar(10)notNull;
altertable table1addidintunsignednotNullauto_incrementprimarykey
修改某个表的字段类型及指定为空或非空
altertable表名称change字段名称字段名称字段类型[是否允许非空];
altertable表名称modify字段名称字段类型[是否允许非空];
altertable表名称modify字段名称字段类型[是否允许非空];
修改某个表的字段名称及指定为空或非空
altertable表名称change字段原名称字段新名称字段类型[是否允许非空
删除某一字段
ALTERTABLEmytableDROP字段名;
添加唯一键
ALTERTABLE`test2`ADDUNIQUE(`userid`)
修改主键
ALTERTABLE`test2`DROPPRIMARYKEY,ADDPRIMARYKEY(`id`)
增加索引
ALTERTABLE`test2`ADDINDEX(`id`)
ALTERTABLE`category`MODIFYCOLUMN`id` int(11)NOTNULLAUTO_INCREMENTFIRST,ADDPRIMARYKEY(`id`);
修改主键的sql语句块如下:
22declare@defnamevarchar(100)
declare@cmdvarchar(500)
declare@tablenamevarchar(100)
declare@keynamevarchar(100)
Set@tablename='Temp1'
Set@keyname='id'--需要設置的key,分隔
select@defname=name
FROMsysobjectsso
JOINsysconstraintssc
ONso.id=sc.constid
WHEREobject_name(so.parent_obj)=@tablename
andxtype='PK'
if@defnameisnotnull
begin
select@cmd='altertable'+@tablename+'dropconstraint'+@defname
--print@cmd
exec(@cmd)
end
else
set@defname='PK_'+@keyname
select@cmd='altertable'+@tablename+'ADDconstraint'+@defname+'PRIMARYKEYCLUSTERED('+@keyname+')'
exec(@cmd)
如何取主键字段名称及字段类型--得到主键字段名
1:
SELECTTABLE_NAME,COLUMN_NAMEFROMINFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERETABLE_NAME<>'dtproperties'
2:
EXECsp_pkeys@table_name='表名'
3:
selecto.nameas表名,c.nameas字段名,k.colidas字段序号,k.keynoas索引顺序,t.nameas类型
fromsysindexesi
joinsysindexkeyskoni.id=k.idandi.indid=k.indid
joinsysobjectsooni.id=o.id
joinsyscolumnsconi.id=c.idandk.colid=c.colid
joinsystypestonc.xusertype=t.xusertype
whereo.xtype='U'ando.name='要查询的表名'
andexists(select1fromsysobjectswherextype='PK'andparent_obj=i.idandname=i.name)
orderbyo.name,k.colid