create table a (a varchar(1) null,c varchar(1) null);
怎么才能在字段c前面增加一个字段b,SQL语句怎么写!谢了!

解决方案 »

  1.   

    直接用语句搞不定.
    只能将结果插入一新表,删除原始表,然后再从新表创建回来.select a , b = '...', c into tb2 from tb1
    drop table tb1
    select * into tb1 from tb2
      

  2.   

    一个语句搞不定,可在企业管理器中修改表,插入字段,再点生成sql语句的按钮,自动生成sql 语句
      

  3.   

    SQL可以实现添加列到指定位置--开启系统表写功能以便创建存储过程
    EXEC sp_configure 'allow updates',1 
    RECONFIGURE WITH OVERRIDE
    GOCREATE PROC sp_addColumn
    @TableName sysname,              --要添加字段的表名
    @FieldDefine nvarchar(1000),   --要添加的列的定义,定义必须符合ALTER TABLE tbname ADD规范
    @Position   int=-1                --添加列位置,其值为1~表的总列数,比如1,表示添加为第1列,
               --                             如果@Position无效,则仅添加列
    AS
    IF ISNULL(OBJECTPROPERTY(OBJECT_ID(@TableName),'IsUserTable'),0)=0
    BEGIN
    RAISERROR(N'无效的表名 "%s"',12,16,@TableName)
    return
    END--添加字段
    DECLARE @s nvarchar(4000)
    SET @s=N'ALTER TABLE '+QUOTENAME(@TableName)+N' ADD '+@FieldDefineBEGIN TRAN
    EXEC sp_executesql @s
    IF @@ERROR=0
    BEGIN
    DECLARE @maxcolid int
    SELECT @Position=ISNULL(@Position,0),@maxcolid=MAX(colid) 
    FROM syscolumns
    WHERE id=OBJECT_ID(@TableName)
    IF @Position>0 AND @Position<@maxcolid
    UPDATE syscolumns SET 
    colid=CASE colid WHEN @maxcolid THEN @Position ELSE colid+1 END,
    colorder=CASE colid WHEN @maxcolid THEN @Position ELSE colid+1 END
    WHERE id=OBJECT_ID(@TableName)
    AND colid>=@Position
    COMMIT TRAN
    END
    ELSE
    ROLLBACK TRAN
    GO--关闭系统表写功能
    EXEC sp_configure 'allow updates',1 
    RECONFIGURE WITH OVERRIDE
      

  4.   

    ----测试
    --开启系统表写功能以便创建存储过程
    EXEC sp_configure 'allow updates',1 
    RECONFIGURE WITH OVERRIDE
    GOcreate   table   a   (a   varchar(1)   null,c   varchar(1)   null); 
    go
    /*
    a      c    
    ----  ---- (所影响的行数为 0 行)
    */CREATE PROC sp_addColumn
    @TableName sysname,              --要添加字段的表名
    @FieldDefine nvarchar(1000),   --要添加的列的定义,定义必须符合ALTER TABLE tbname ADD规范
    @Position   int=-1                --添加列位置,其值为1~表的总列数,比如1,表示添加为第1列,
               --                             如果@Position无效,则仅添加列
    AS
    IF ISNULL(OBJECTPROPERTY(OBJECT_ID(@TableName),'IsUserTable'),0)=0
    BEGIN
    RAISERROR(N'无效的表名 "%s"',12,16,@TableName)
    return
    END--添加字段
    DECLARE @s nvarchar(4000)
    SET @s=N'ALTER TABLE '+QUOTENAME(@TableName)+N' ADD '+@FieldDefineBEGIN TRAN
    EXEC sp_executesql @s
    IF @@ERROR=0
    BEGIN
    DECLARE @maxcolid int
    SELECT @Position=ISNULL(@Position,0),@maxcolid=MAX(colid) 
    FROM syscolumns
    WHERE id=OBJECT_ID(@TableName)
    IF @Position>0 AND @Position<@maxcolid
    UPDATE syscolumns SET 
    colid=CASE colid WHEN @maxcolid THEN @Position ELSE colid+1 END,
    colorder=CASE colid WHEN @maxcolid THEN @Position ELSE colid+1 END
    WHERE id=OBJECT_ID(@TableName)
    AND colid>=@Position
    COMMIT TRAN
    END
    ELSE
    ROLLBACK TRAN
    GO
    ---增加新列到2
    exec sp_addColumn 'a','b int',2select * from a
    /*a    b           c    
    ---- ----------- ---- (所影响的行数为 0 行)
    */--关闭系统表写功能
    EXEC sp_configure 'allow updates',1 
    RECONFIGURE WITH OVERRIDE
    go 
    drop table a
    drop proc sp_addColumn
      

  5.   

    在企业管理器里—数据库—表—右健—设计表—在a列和C列—右健插入B列。。
    可任意调整
      

  6.   

    在企业管理器里—数据库—表—右健—设计表—在a列和C列—右健插入B列。。 
    可任意调整---------------------------create   table   a   (a   varchar(1)   null,c   varchar(1)   null); 
    怎么才能在字段c前面增加一个字段b,SQL语句怎么写!谢了!
      

  7.   

    create       table       a       (a       varchar(1)       null,c       varchar(1)       null);   
    怎么才能在字段c前面增加一个字段b,SQL语句怎么写!谢了!?-----------
    在SQL2005的环境下,在企业管理里有修改,选择生成SQL脚本,就行了
    生成脚本也就是用一个事务,用新表得到旧表数据,重命名表