修改字段

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(1~255)
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)

SQL 数据结构操作语句的更多相关文章

  1. sql 数据库操作语句 不带select

    MySQL数据操作语句 1.总纲 DDL -数据定义语句** create/drop/alter ** create: 创建 drop:删除 alter:修改 DML -数据操作语句 ** inser ...

  2. Ubuntu 16.04安装、卸载mysql及怎么使用SQL常用操作语句

    以前都是在window上操作,连接数据库,最近转Ubuntu系统,故此,记下安装过程 一,安装mysql,Ctrl+Alt+T打开终端,一步步分别输入命令 //安装mysql服务 sudo apt-g ...

  3. MySQL数据库基础操作语句

    SQL语言主要用于存取数据.查询数据.更新数据和管理关系数据库系统,分为3种类型: 1.DDL语句 数据库定义语言: 数据库.表.视图.索引.存储过程,例如CREATE DROP ALTER 2.DM ...

  4. SQL 四种基本数据操作语句的基本使用

    SQL中含有四种基本的数据操作语句,分别是增(INSERT),删(DELETE),查(SELECT),改(UPDATE).下面简单介绍这四种语句的用法. 1:增(INSERT) 可分为两种查询情况,一 ...

  5. mongodb 操作语句与sql操作语句对比

    上行:SQL 操作语句 下行:Mongo 操作语句 CREATE TABLE USERS (a Number, b Number) db.createCollection("mycoll&q ...

  6. sql server操作2:查询数据库语句大全【转】

    注:以下操作均建立在上篇文章sql Server操作1的数据基础之上 一.实验目的 熟悉SQL语句的基本使用方法,学习如何编写SQL语句来实现查询 二.实验内容和要求 使用SQL查询分析器查询数据,练 ...

  7. 第四篇:记录相关操作 SQL逻辑查询语句执行顺序

    http://www.cnblogs.com/linhaifeng/articles/7372774.html 一 SELECT语句关键字的定义顺序 SELECT DISTINCT <selec ...

  8. Microsoft SQL - 操作语句

    操作语句(Operation Statement) 操作数据库 创建数据库 关键字:create database 用于创建各种数据库对象(数据库.表.触发器.存储过程等) 格式如:create &l ...

  9. SQL操作语句

    SQL语句与Mysql的语句大体上比较相似.以下是sql server的一套练习题,是很好的数据库操作语句学习资料,学校的学习资料,在此整理了以下. 数据库exam:这是一个模拟电子商务,网上直销的数 ...

随机推荐

  1. Android 手机号码格式验证

    package com.app.android01 ; import android.app.Activity; import android.os.Bundle; import android.te ...

  2. Android屏蔽HOME键

    public static final int FLAG_HOMEKEY_DISPATCHED = 0x80000000; @Override protected void onCreate(Bund ...

  3. JavaWeb开发必过关-Servlet学习(一)

    一.什么是Servlet servlet其实是一个小程序,它是运行在服务器上的,一个servlet就是一个Java类,可以通过"请求-响应"编程模型来访问这个驻留在服务器内存的Se ...

  4. 基础学习day10--异常、包

    一.异常 1.1.异常定义 异常:--不正常,程序在运行时出现不正常情况 异常由来:其实也是现实生活中一个具体的事物,马可以通过JAVA的类的形式表现描述,并封装成类. Java对不正常情况描述后的, ...

  5. 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

    一.第一种写法 package com.pb.demo1; import java.util.Scanner; /** * 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字. ...

  6. 学习C语言常用的几个网站

    今天整理资料,发现了以前学习C语言时,常用到的几个网站: 1.http://ganquan.info/standard-c/   改网站包含了C语言标准版的15个头文件解释以及函数,137个函数和演示 ...

  7. 斯坦福iOS7公开课10笔记及演示Demo

    这一节主要介绍了多线程中的串行队列以及滚动视图UIScrollView. 1 .多线程 这一节只是简单介绍了多线程的串行队列,即把任务加入线程队列后按顺序逐步执行. (1)目前iOS多线程提供的方法主 ...

  8. iOS网络-05-AFNetwoking原理及常用操作

    AFN的六大模块 NSURLConnection,主要对NSURLConnection进行了进一步的封装,包含以下核心的类: AFURLConnectionOperation AFHTTPReques ...

  9. C++中派生类对象的内存布局

    主要从三个方面来讲: 1 单一继承 2 多重继承 3 虚拟继承 1 单一继承 (1)派生类完全拥有基类的内存布局,并保证其完整性. 派生类可以看作是完整的基类的Object再加上派生类自己的Objec ...

  10. [eclipse]改项目名称后tomcat连接问题解决方法

    背景:在我们使用eclipse进行项目开发时,有时候会需要修改项目名称,当改动项目名称后发现tomcat启动访问出现问题,使用新的项目名称不可行,使用旧的项目名称却可以.修改web.xml里面的dis ...