SQL 数据结构操作语句

简介: 修改字段 exec sp_rename '表名.[字段名]','新字段名','column' alter table tab_info rename column createname to thisname;//不能通过,有待验证是否为mysql的修改语句 修改字段属性:alter ...

修改字段

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

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


修改字段属性:
alter table tab_info alter column thisname varchar(200) not null;

修改默认值
alter table tabinfo add 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 增加数字字段,整型,缺省值为0   
    alter table [表名] add 字段名 intdefault 0 增加数字字段,长整型,缺省值为0  
    alter table [表名] add 字段名 singledefault 0 增加数字字段,单精度型,缺省值为0   
    alter table [表名] add 字段名 doubledefault 0 增加数字字段,双精度型,缺省值为0  
    alter table [表名] add 字段名Tinyint default 0 增加数字字段,字节型,缺省值为0  
      
    alter table[表名] add 字段名 text [null] 增加备注型字段,[null]可选参数  
    alter table [表名] add 字段名 memo[null] 增加备注型字段,[null]可选参数  
      
    alter table[表名] add 字段名 varchar(N) [null] 增加变长文本型字段大小 为N(1255)  
    alter table [表名] add 字段名 char[null] 增加定长文本型字段 大小固定为255  
      
    alter 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 where
      p.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 @CurrentUser sysname
select @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 column columnName
alter table tableName add columnName int identity(1,1) constraint PK_tableName primary key(columnName)

添加/删除约束

--删除约束
ALTER TABLE tablename
DROP CONSTRAINT  约束名
--添加列的约束 ALTER TABLE tablename ADD 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.cdefault 
where a.id = object_id(@tb) and a.name = @col

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

 

 

 

 

 

 

 

 

 

相关文章
|
5月前
|
SQL 分布式计算 DataWorks
DataWorks操作报错合集之SQL错误[0A000],通常是什么造成的
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
50 1
|
4月前
|
SQL 分布式计算 MaxCompute
SQL开发问题之对于ODPS中的UNION操作,执行计划的问题如何解决
SQL开发问题之对于ODPS中的UNION操作,执行计划的问题如何解决
|
4月前
|
SQL 分布式计算 DataWorks
MaxCompute操作报错合集之使用sql查询一个表的分区数据时遇到报错,该如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
4月前
|
SQL 分布式计算 DataWorks
DataWorks操作报错合集之在执行SQL查询时遇到报错,代码为[XX000],该怎么解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
4月前
|
SQL 分布式计算 资源调度
MaxCompute操作报错合集之执行SQL Union All操作时,数据类型产生报错,该怎么解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
120 1
|
4月前
|
SQL 分布式计算 大数据
MaxCompute操作报错合集之执行多条SQL语句时,使用同一个实例来运行,遇到报错,该如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
4月前
|
SQL DataWorks NoSQL
DataWorks操作报错合集之在执行带with语句的SQL查询时出现了错误,是什么原因
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
4月前
|
SQL 分布式计算 DataWorks
DataWorks操作报错合集之重新上传后只有SQL无法运行,而Python可以正常运行,是什么导致的
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
4月前
|
SQL 自然语言处理 网络协议
【Linux开发实战指南】基于TCP、进程数据结构与SQL数据库:构建在线云词典系统(含注册、登录、查询、历史记录管理功能及源码分享)
TCP(Transmission Control Protocol)连接是互联网上最常用的一种面向连接、可靠的、基于字节流的传输层通信协议。建立TCP连接需要经过著名的“三次握手”过程: 1. SYN(同步序列编号):客户端发送一个SYN包给服务器,并进入SYN_SEND状态,等待服务器确认。 2. SYN-ACK:服务器收到SYN包后,回应一个SYN-ACK(SYN+ACKnowledgment)包,告诉客户端其接收到了请求,并同意建立连接,此时服务器进入SYN_RECV状态。 3. ACK(确认字符):客户端收到服务器的SYN-ACK包后,发送一个ACK包给服务器,确认收到了服务器的确
187 1
|
4月前
|
SQL Java 数据库连接
深入理解SQL中的LEFT JOIN操作
深入理解SQL中的LEFT JOIN操作