精华内容
下载资源
问答
  • 使用SQL语句修改表结构SQL Server) ALTER TABLE的语法格式如下: 上述格式主要参数说明如下: database_name:要在其中创建表的数据库的名称。 schema_name:表所属架构的名称。 table_name:要更改的表名称。 ...

    使用SQL语句修改表结构(SQL Server)

    ALTER TABLE的语法格式如下:

    image-20211005142304709

    上述格式主要参数说明如下:

    • database_name:要在其中创建表的数据库的名称。
    • schema_name:表所属架构的名称。
    • table_name:要更改的表名称。
    • ALTER COLUMN:指定要更改命名列的命令。
    • column_name:要更改、添加或删除的列名称。
    • [type_schema_name.]type_name:更改后列的新数据类型或添加的列的数据类型。
    • precision:指定的数据类型的精度。
    • scale:指定数据类型的小数位数。
    • COLLATE collation_name:指定更改后的列的新排序规则。
    • WITH CHECK|WITH NOCHECK:指定表中的数据是否用新添加的或重新启用的FOREIGN KEY或CHECK约束进行验证。
    • ADD:指定添加一个或多个列定义、计算列定义或者表约束。
    • DROP:指定从表中删除多个列或约束。

    添加列

    ALTER TABLE student
    ADD class VARCHAR(20) NULL
    

    删除列

    ALTER TABLE student
    DROP COLUMN class
    

    修改表的列数据类型和名称

    -- 修改数据类型
    ALTER TABLE student
    ALTER COLUMN class VARCHAR(20) NOT NULL
    
    -- 修改列名
    EXEC sp_rename 'class','st_class'
    

    sp_rename函数可以更改当前数据库中用户创建对象的名称。

    展开全文
  • 今天群里的一个朋友问如何用sql命令修改数据表中的一个字段为非空(not null),经常测试下面的代码即可。
  • 在使用一些表管理工具,或对数据库的物理表结构进行改动时,可以通过数据库的语法脚本实现。 1.创建表 CREATE TABLE dbo.表名 ( 列名1 [列名数据类型](数据长度) 是否为Null, 列名2 [列名数据类型](数据长度)...

    在使用一些表管理工具,或对数据库的物理表结构进行改动时,可以通过数据库的语法脚本实现。

    1.创建表

    CREATE TABLE dbo.表名
    	(
    	 列名1 [列名数据类型](数据长度) 是否为Null,
         列名2 [列名数据类型](数据长度) 是否为Null(Null/Not Null),
    	)  ON [PRIMARY]
    ALTER TABLE dbo.表名 ADD CONSTRAINT
    	PK_表名 PRIMARY KEY CLUSTERED 
    	(
    	 主键列名  --若是联合主键 则为 列名1,列名2
    	) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, 
        ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

    示例:

    创建一个表名为 Table_1的 表,指定mainkey列为自增主键 且从10000 开始,步长为1递增

    CREATE TABLE dbo.Table_1
    	(
    	mainkey int NOT NULL IDENTITY (10000, 1),
    	a char(1) NULL,
    	b nvarchar(50) NULL,
    	c ntext NULL
    	)  ON [PRIMARY]
    	 TEXTIMAGE_ON [PRIMARY]
    	ALTER TABLE dbo.Table_1 ADD CONSTRAINT
    	PK_Table_1 PRIMARY KEY CLUSTERED 
    	(
    	mainkey 
    	) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

    2.设置表结构里列字段说明

    为表的某一列 添加说明 

    EXECUTE sp_addextendedproperty N'MS_Description', N'列的说明信息', N'SCHEMA', N'dbo', N'TABLE', N'表名', N'COLUMN', N'列名'

    注意:添加说明sp_addextendedproperty 更新说明sp_updateextendedproperty 删除说明是 sp_dropextendedproperty

    示例:

    为刚才的Table_1表 的 b列 添加 ‘b列说明’ ,以及 c列 添加 ‘c列说明’

    EXECUTE sp_addextendedproperty N'MS_Description', N'b列的说明', N'SCHEMA', N'dbo', N'TABLE', N'Table_1', N'COLUMN', N'b'
    EXECUTE sp_addextendedproperty N'MS_Description', N'c列的说明', N'SCHEMA', N'dbo', N'TABLE', N'Table_1', N'COLUMN', N'c'

    想确保不报异常,可以采用如下方式 进行设置 列字段说明

    IF EXISTS (SELECT 1 FROM ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', '表名', 'column',default) where objname='列名')
    EXECUTE sp_updateextendedproperty N'MS_Description', N'列的说明', N'SCHEMA', N'dbo', N'TABLE', N'表名', N'COLUMN', N'列名'
    ELSE
    EXECUTE sp_addextendedproperty N'MS_Description', N'列的说明', N'SCHEMA', N'dbo', N'TABLE', N'表名', N'COLUMN', N'列名'

     

    3.设置表的列字段的 默认值

    IF EXISTS (select * from sysobjects where name='DF_表名_列名')
    ALTER TABLE dbo.表名 DROP CONSTRAINT DF_表名_列名
    ALTER TABLE dbo.表名 ADD CONSTRAINT DF_表名_列名 DEFAULT N'默认值' FOR 列名

    这里是先采用 drop 将列名的约束值信息丢掉,然后再添加进去,确保不报异常

    若是想要读取某个表的默认值 就用

    select TM.name, text defaultValue 
    from sysobjects TM
    left join syscomments TB
    on TM.id = TB.id
    where name like '%表名%'
    and xtype = 'D' --xtype D标识默认值  PK 标识是 主键

    4.添加一列

    IF NOT EXISTS ( SELECT TOP 1 1
                    FROM    INFORMATION_SCHEMA.COLUMNS
                    WHERE   [TABLE_NAME] = '表名'
                            AND [COLUMN_NAME] = '新字段名')
    BEGIN
        ALTER TABLE dbo.表名 ADD 列名 数据类型(长度) 是否为NULL
    END

    示例:Table_1里加了个 "newField"列

    IF NOT EXISTS ( SELECT TOP 1 1
                    FROM    INFORMATION_SCHEMA.COLUMNS
                    WHERE   [TABLE_NAME] = 'Table_1'
                            AND [COLUMN_NAME] = 'newField')
    BEGIN
        ALTER TABLE dbo.Table_1 ADD newField nchar(10) NULL
    END
    --或采用下面这种 但是不太靠谱
    IF NOT EXISTS (select 1 from sysobjects where name='DF_Table_1_newField ')
    ALTER TABLE dbo.Table_1 ADD newField nchar(10) NULL

    5.更改列名

    EXECUTE sp_rename N'dbo.表名.旧列名', N'Tmp_新列名', 'COLUMN' 
    EXECUTE sp_rename N'dbo.表名.Tmp_新列名', N'新列名', 'COLUMN' 

    示例:将 Table_1 的 b列 更名为 newB

    EXECUTE sp_rename N'dbo.Table_1.b', N'Tmp_newB', 'COLUMN' 
    EXECUTE sp_rename N'dbo.Table_1.Tmp_newB', N'newB', 'COLUMN' 

    6.删除列

    先去删除约束 再去删除列,描述字段 删除列时 自动删除了

    IF EXISTS (select 1 from sysobjects where name='DF_表名_列名')
    ALTER TABLE dbo.表名 DROP CONSTRAINT DF_表名_列名
    ALTER TABLE dbo.表名 DROP COLUMN 列名

    7.更改表结构

    例如 :变更字段的数据类型、变更字段的 是否为Null, 变更表结构的主键构成,这些都属于变更表结构,此时需要先建一张临时表,把数据全部拷走,再重新建表把数据拷贝回来,并把数据改为对应的。

    主要先创建一个 Tmp_表名 的临时表,然后 通过 CONVERT 函数 进行数据转换 CONVERT(新列对应的数据类型(长度), 旧列名)

    然后通过 sp_rename Tmp_表名 更名为 原本的表名。

    利用事件回滚机制 防止出现错误
     

    BEGIN TRANSACTION 
    
    执行体
    
    COMMIT

    注意:这里的主键声明 要放到 表重命名后,用 更名后的表建立约束。 

    BEGIN TRANSACTION
    CREATE TABLE dbo.Tmp_表名
    	(
    	表列配置项
    	)  ON [PRIMARY]
    IF EXISTS(SELECT * FROM dbo.表名)
    	 EXEC('INSERT INTO dbo.Tmp_表名 (新列名1, 新列名2, 新列名3)
    		SELECT 旧列名1, CONVERT(新列名2的数据类型, 旧列名2), 旧列名3 FROM dbo.表名 WITH (HOLDLOCK TABLOCKX)')
    DROP TABLE dbo.表名
    EXECUTE sp_rename N'dbo.Tmp_表名', N'表名', 'OBJECT' 
    ALTER TABLE dbo.表名 ADD CONSTRAINT
    	PK_表名 PRIMARY KEY CLUSTERED 
    	(
    	主键列
    	) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    COMMIT

    示例:

    将Table_1的

    b列 更新列名为 newB  并更新数据类型为 ntext → nvarchar(100)

    c列 仅更新列名 c newCName

    BEGIN TRANSACTION
    CREATE TABLE dbo.Tmp_Table_1
    	(
    	mainkey int NOT NULL IDENTITY (1, 1),
    	newB nvarchar(100) NULL,
    	newCName nchar(10) NULL
    	)  ON [PRIMARY]
    IF EXISTS(SELECT * FROM dbo.Table_1)
    	 EXEC('INSERT INTO dbo.Tmp_Table_1 (mainkey , newB, newCName )
    		SELECT mainkey , CONVERT(nvarchar(100), b), c FROM dbo.Table_1 WITH (HOLDLOCK TABLOCKX)')
    DROP TABLE dbo.Table_1
    EXECUTE sp_rename N'dbo.Tmp_Table_1', N'Table_1', 'OBJECT' 
    ALTER TABLE dbo.Table_1 ADD CONSTRAINT
    	PK_Table_1 PRIMARY KEY CLUSTERED 
    	(
    	mainkey 
    	) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    COMMIT

    ps:若表结构里还有默认值,列说明,相关语句请参照各对应SQL添加到 Commit之前即可

    8.其他

    对于sql server 的其他语句,可以通过 生成脚本来查看

     

    附:

    sql语句读取一个表的相关配置项

    SELECT  
            a.colorder as colOrder, 
            d.name as tableName,
            a.name as FieldName, 
            convert(int,case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then 1 else 0 end) as isIndex, 
            convert(int,case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in ( 
                                             SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))) then 1 else 0 end) as isPk, 
            b.name as sqlTypeName, 
            a.length as 'length', 
            convert(int,COLUMNPROPERTY(a.id,a.name,'PRECISION')) as 'size', 
            convert(int,isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0)) as 'scale', 
            convert(int,case when a.isnullable=1 then 1 else 0 end) as 'Nullable', 
            convert(varchar(100), isnull(e.text,'')) as defaultVal, 
            convert(varchar(255), isnull(g.[value],'')) as remarks 
     FROM  
            syscolumns a 
     left join  
            systypes b  
     on  
            a.xusertype=b.xusertype 
     inner join  
            sysobjects d  
     on  
            a.id=d.id  and d.xtype='U' and  d.name<>'dtproperties' 
     left join  
            syscomments e  
     on  
            a.cdefault=e.id 
     left join  
     sys.extended_properties   g  
     on  
            a.id=G.major_id and a.colid=g.minor_id   
     left join 
     sys.extended_properties f 
     on  
            d.id=f.major_id and f.minor_id=0 
     where  d.name='表名'
    order by  
            a.id,a.colorder

     

    展开全文
  • sqlserver 修改表结构

    2021-01-22 11:22:08
    因为我们公司所有对数据库的修改都要保留脚本,所以就不能直接手动改了 脚本 字段 新增 单个新增 alter table productInfo add productStatus VARCHAR(2) NULL 批量新增 ALTER TABLE prodSubsysInfo ADD ...

    因为我们公司所有对数据库的修改都要保留脚本,所以就不能直接手动改了

    脚本

    1.字段

    1.1新增

    单个新增

    alter table productInfo add productStatus VARCHAR(2) NULL 
    

    批量新增

    ALTER TABLE prodSubsysInfo ADD collocation VARCHAR ( 4 ) NULL,
    releaseType VARCHAR ( 4 ) NULL,
    offerType VARCHAR ( 4 ) NULL,
    publicAttribute VARCHAR ( 4 ) NULL,
    releaseVersion VARCHAR ( 4 ) NULL,
    prodSubsysManager VARCHAR ( 4 ) NULL,
    prodSubsysStatus VARCHAR ( 4 ) NULL
    

    1.2 修改

    exec sp_rename '[prodSubsysInfo].[ModuleIdParent]','subSysIdParent'
    

    2.表

    IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[AppSystemInfo]') AND type IN ('U'))
    	DROP TABLE [dbo].[AppSystemInfo]
    GO
    
    CREATE TABLE [dbo].[AppSystemInfo] (
      [systemId] varchar(20) COLLATE Chinese_PRC_CI_AS  NOT NULL,
      [systemName] varchar(20) COLLATE Chinese_PRC_CI_AS  NULL,
      [systemManager] varchar(20) COLLATE Chinese_PRC_CI_AS  NULL,
      [systemStatus] varchar(2) COLLATE Chinese_PRC_CI_AS  NULL,
      [directions] varchar(500) COLLATE Chinese_PRC_CI_AS  NULL
    )
    GO
    
    ALTER TABLE [dbo].[AppSystemInfo] SET (LOCK_ESCALATION = TABLE)
    GO
    
    展开全文
  • 考查对数据库系统的认识 问: SQL语句中修改表结构的命令? a.MODIFY TABLE b.MODIFY STRUCTURE c.ALTER TABLE d.ALTER STRUCTURE 解析: 修改表结构命令是ALTER TABLE 答: c ...

    考查对数据库系统的认识

    问:
        SQL语句中修改表结构的命令?
        a.MODIFY TABLE
        b.MODIFY STRUCTURE
        c.ALTER TABLE
        d.ALTER STRUCTURE
        
    解析:
        修改表结构命令是ALTER TABLE

    答:
        c

    展开全文
  • 主要介绍了sqlserver创建表、修改表结构、删除表的sql语句,需要的朋友可以参考下
  • SQl 语句(常见) 新建,删除,修改表结构
  • 本教程给大家介绍修改SQL-SERVER数据库表结构SQL命令附sql命令行修改数据库,涉及到sqlserver数据库命令的相关知识,对sqlserver数据库命令感兴趣的朋友可以参考下本
  • MYSQL的修改表结构SQL语句

    千次阅读 2019-07-07 22:02:41
    MYSQL的修改表结构SQL语句: -- 查看创表语句 SHOW CREATE TABLE t_login; -- 查看表结构 desc t_login1; -- 增加列 ALTER TABLE t_login1 ADD COLUMN COL_1 VARCHAR(10); -- 修改列 ALTER TABLE t_login1 ...
  • SQL Server 修改表结构

    万次阅读 2018-08-16 16:33:58
    查看指定表结构 exec sp_help Reports 修改表名 exec sp_rename 'Reports','Reports2' 删除数据表 不能删除有外键约束的表。 drop table Reports 表字段 alter table Reports add NewColumn ...
  • SQL语句修改表结构和添加约束

    万次阅读 2018-10-17 20:37:57
    --1.删除一列 alter table TbStudent drop column stuPhone --2.... alter table TbStudent add ...修改字段的数据类型(表中Gender列不能有数据) alter table TbStudent alter column stuGender nchar(1) -...
  • --修改字段名称 alter table 表名 rename ...--在表中新增字段 alter table 表名 add 新字段名 新数据类型(长度) [约束,例如:not null 等] comment 'comment是添加字段描述,可加可不加'; --直接给添加描述 commen
  • sql语句修改表结构和添加约束 create table Tbclass ( clsId int primary key identity(1,1), clsName nvarchar(8) unique, clsTeacher nvarchar(4), clsNumber smallint check(clsNumber >= 20 and ...
  • 能够写出修改表结构SQL语句 修改goods表结构 目前我们已经把good表的商品分类和品牌信息已经更改成了商品分类id和品牌id,接下来需要把 cate_name 和 brand_name 字段分别改成 cate_id和 brand_id 字段,类型...
  • SQL数据库修改表结构

    千次阅读 2020-11-15 15:45:29
    修改表结构 表结构是构建一张表的字段数量,类型与排序 1.添加字段 如果添加字段的表是空表,则可以给字段设置非空约束。如果是有数据的表,不能添加非空约束。 alter table 表名 add 字段名 数据类型 约束 2....
  • SQL语句修改数据库表结构

    千次阅读 2013-03-13 19:54:37
    一、查看表结构  1、查看表的基本结构语句:  DESCRIBE `DEPT`;  2、查看表详细结构语句:  SHOW CREATE TABLE `DEPT`; 二、对表的操作 增加表 CREATE TABLE `dept` (  `id` int(10) unsigned NOT NULL AUTO_...
  • sql 修改表结构

    千次阅读 2018-11-13 22:52:17
    sql alter 修改字段使用:以下语句意思为 给添加字段。 添加字段: ALTER TABLE j_leaveoffice ADD isChangeManager VARCHAR(4) COMMENT '是否更换项目负责人'; ALTER TABLE j_leaveoffice ADD ...
  • 使用SQL语句修改表数据

    千次阅读 2021-10-05 15:12:55
    使用SQL语句修改表数据 利用INSERT语句输入数据 INSERT语句的基本语法格式如下: 上述格式主要参数说明如下: TOP(expression)[PERCENT]:指定将插入的随机行的数目或百分比。 INTO:一个可选的关键字,可以将它...
  • sql语句修改表结构

    千次阅读 2013-08-07 17:33:00
    也说明了表结构的细节设计如约束等,但是没有说明如果创建了一个表结构后修改这个结构,是重新创建还是可以直接修改,学员经常会提出这些问题,下面对使用sql语句修改表结构做一个说明。 修改表结构包括:增加字段...
  • 一,修改字段默认值 alter table表名drop constraint约束名字; ------说明:删除的字段的原有约束 alter table表名add constraint约束名字DEFAULT默认值为字段名称; -------说明:添加一个的字段的约束并指定...
  • sql修改表结构语句.doc

    2011-06-10 16:48:38
    sql修改表结构语句.doc、、、、、、、、、、
  • sql是本人亲自实现的,并非拿自别的地方,保证可以实现成语接龙,不像有些骗分的资源里面一堆没用的insert数据,骗了我12分醉了。 下面是示例: 说长说短 短兵相接 接二连三 等等.... 数据库里有能接上的数据最多...
  • SQL语言ALTER语句修改表结构

    千次阅读 2018-06-04 21:15:58
    1、l STUDENT表中SNO设为非空和唯一,非空:alter table student modify sno char(8) not null;唯一:alter table student add unique(sno);l STUDENT表中增加一个字段SBIRTH,Alter table student add sbirth ...
  • ORACLE修改表结构语句

    千次阅读 2019-06-07 16:34:30
    创建 CREATE TABLE Student_YXY( StudentID INT, StudentName VARCHAR2(10), Grade VARCHAR2(5), CourseID INT, CONSTRAINT PK_Student_YXY primary key(StudentID,CourseID) ,–主键 CONSTRAINT FK_JHZFXGJLITEM_...
  • 知识点:使用SQL语句创建完整版数据库、使用SQL语句创建、数据库创建好以后新增加字段、修改字段、删除字段的方法。删除数据库和数据库的方法。 需要掌握的知识: SQL Server数据库第一课:常用数据库介绍、...
  • SQL语句创建表修改表

    千次阅读 2018-08-25 02:15:33
    1. 创建 CREATE TABLE 学生信息 ( 学号varchar(14) IDENTITY(1,1) PRIMARY KEY, 姓名varchar(8) UNIQUE NOT NULL, 班级编号varchar(14) REFERENCES '班级信息', 年级int null, 性别varchar(2) CHECK(性别in ('男...
  • SQL语句查看表结构修改字段长度

    千次阅读 2019-08-21 16:06:42
    查看表结构: select * from information_schema.columns where table_name='表名' 修改字段长度: ALTER TABLE 表名 ALTER COLUMN 字段名 字段类型(字段长度) Oracle 数据库: 查看表结构: select * from ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 269,470
精华内容 107,788
关键字:

sql中修改表结构的语句