mysql 数据结构语句_SQL 数据结构操作语句

修改字段

exec sp_rename '表名.[字段名]','新字段名','column'

alter table tab_info rename column createnameto thisname;//不能通过,有待验证是否为mysql的修改语句

修改字段属性:

alter table tab_info alter column thisname varchar(200) not null;

修改默认值

alter table tabinfoadd constraint df default('嘿嘿') for thisname;

ALTER TABLE 表名 add DEFAULT ('修改后的默认值') for 字段名 WITH VALUES

注:如果该字段以前已经有默认值了,在修改之前需要先将约束删除,否则会报错

删约束的SQL:

Alter table 表名 drop constraint 约束名

添加、删除字段

表添加字段的SQL语句的写法

通用式:alter table [表名] add [字段名] 字段属性 default 缺省值 default是可选参数

增加字段:【字段名不加‘’】alter table [表名] add 字段名 smallint default 0增加数字字段,整型,缺省值为0alter table [表名] add 字段名 intdefault 0增加数字字段,长整型,缺省值为0alter table [表名] add 字段名 singledefault 0增加数字字段,单精度型,缺省值为0alter table [表名] add 字段名 doubledefault 0增加数字字段,双精度型,缺省值为0alter table [表名] add 字段名Tinyint default 0增加数字字段,字节型,缺省值为0alter table[表名] add 字段名 text [null] 增加备注型字段,[null]可选参数alter table [表名] add 字段名 memo[null] 增加备注型字段,[null]可选参数alter table[表名] add 字段名 varchar(N) [null] 增加变长文本型字段大小 为N(1~255)alter table [表名] add 字段名 char[null]增加定长文本型字段 大小固定为255alter table[表名] add 字段名 Datetime default函数 增加日期型字段,其中函数 可以是 now(),date()等,表示缺省值

(上面都是最常用的,还有其他的属性,可以参考下面的数据类型描述)

删除字段:alter table [表名] drop字段名

修改变长文本型字段的大小:alter table [表名] alter column字段名 varchar(N)

删除表:drop table [表名]

修改字段备注信息

if exists(select 1 from sys.extended_properties p wherep.major_id= object_id('表名')and p.minor_id = (select c.column_id from sys.columns c where c.object_id = p.major_id and c.name = '字段名')

)begin

declare @CurrentUsersysnameselect @CurrentUser = user_name()execute sp_dropextendedproperty 'MS_Description','user', @CurrentUser, 'table', '表名', 'column', '字段名'

end

select @CurrentUser = user_name()execute sp_addextendedproperty 'MS_Description','字段描述说明','user', @CurrentUser, 'table', '表名', 'column', '字段名'

go

详细介绍:http://blog.csdn.net/zanychou/article/details/7403336

修改主键为自动增长列

先手动删除索引,另外,只可用于主键没被它表引用,否则数据就可能出错了

alter table tableName drop columncolumnNamealter table tableName add columnName int identity(1,1) constraint PK_tableNameprimary key(columnName)

添加/删除约束

--删除约束

ALTER TABLEtablenameDROP CONSTRAINT 约束名--添加列的约束

ALTER TABLEtablenameADD CONSTRAINT DF_tablename_列名 DEFAULT(0) FOR 列名

alter table 表名 add constraint 主键名 primary key (column1,column2,....,column)

常见问题:

1.直接在通过UI设计操作,新添加不为空的列无法保存

原因:

ALTER TABLE 只允许添加满足下述条件的列:

列可以包含 Null 值;

或者列具有指定的 DEFAULT 定义;

或者要添加的列是标识列或时间戳列;

或者,如果前几个条件均未满足,则表必须为空以允许添加此列。

解决:

根据原因中的条件进行操作即可

如指定默认值: alter table [表名] add 字段名 int not null default 0

2.sql语句 删除 表中有 默认值 的列

问题:如果字段设置了默认值,那么字段无法使用sql语句进行修改或删除

原因:将表中的字段设置为NOT NULL(不为空)、给字段增加Default值(默认值)这样的操作都会给该字段添加约束,增加了这些约束后,在用SQL脚本修改字段类型、删除字段的时候均会发生类似错误,需要查找该字段上已存在的约束,并删除存在的约束,再次执行修改/删除脚本即可。

报一下错误: 对象'DF__******' 依赖于 列'column1'。由于一个或多个对象访问此列,ALTER TABLE ******** 失败。”

解决:

1.查找出表中该列的约束名称

2. 删除存在的约束

declare @name varchar(50)declare @tb varchar(50)declare @col varchar(50)set @tb='tablename'

set @col='colname'

select @name =b.name from sysobjects b join syscolumns a on b.id =a.cdefaultwhere a.id = object_id(@tb) and a.name = @col

exec('alter table'+@tb+'drop constraint' + @name)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值