SQL 数据库表的修改

当表创建好后,可能根据需要要对表的列、约束等属性进行添加、删除或修改,这就需要修改表结构。
7.4.1 用Enterprise Manager 修改
在Enterprise Manager 中选择要进行改动的表,单击右键,从快捷菜单中选择“DesignTable”选项,则会出现如图7-4 所示的修改表结构对话框。可以在图7-4 所示的对话框中修改列的数据类型、名称等属性或添加、删除列,也可以指定表的主关键字约束。单击工具栏中的图标,出现如图7-5 所示的编辑表和约束的属性的对话框。可以在其中编辑各种约束和一些表的属性。

7.4.2 用ALTER TABLE 命令修改
ALTER TABLE 命令可以添加或删除表的列、约束,也可以禁用或启用已存在的约束
或触发器。其语法如下:
ALTER TABLE table
{ [ALTER COLUMN column_name
{ new_data_type [ (precision[, scale] ) ]
[ COLLATE < collation_name > ]
[ NULL | NOT NULL ]
| {ADD | DROP} ROWGUIDCOL } ]
| ADD
{ [ <column_definition> ]
| column_name AS computed_column_expression
}[,...n]
| [WITH CHECK | WITH NOCHECK] ADD
{ <table_constraint> }[,...n]
| DROP
{ [CONSTRAINT] constraint_name
| COLUMN column
}[,...n]
| {CHECK | NOCHECK} CONSTRAINT
{ALL | constraint_name[,...n]}
| {ENABLE | DISABLE} TRIGGER
{ALL | trigger_name[,...n]}
}
<column_definition> ::= { column_name data_type }
[ [ DEFAULT constant_expression ]
| [ IDENTITY [(seed, increment ) [NOT FOR REPLICATION] ] ]
]
[ ROWGUIDCOL ]
[ COLLATE < collation_name > ]
[ <column_constraint>] [ ...n]
<column_constraint> ::= [CONSTRAINT constraint_name]
{ [ NULL | NOT NULL ]
| [ { PRIMARY KEY | UNIQUE }
[CLUSTERED | NONCLUSTERED]
[WITH FILLFACTOR = fillfactor]
[ON {filegroup | DEFAULT} ] ] ]
| [ [FOREIGN KEY]
REFERENCES ref_table [(ref_column) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[NOT FOR REPLICATION ] ]
| CHECK [NOT FOR REPLICATION]
(logical_expression)}
<table_constraint> ::= [CONSTRAINT constraint_name]
{ [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED]
{ ( column [ ASC | DESC ] [,...n] ) }
[ WITH FILLFACTOR = fillfactor]
[ON {filegroup | DEFAULT} ] ]
| FOREIGN KEY
[(column[,...n])]
REFERENCES ref_table [(ref_column[,...n])]
[NOT FOR REPLICATION]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
| CHECK [NOT FOR REPLICATION]
(search_conditions)}
各参数说明如下:

  • table
    指定要修改的表的名称。如果表不在当前数据库中或表不属于当前的用户,就必须指明其所属的数据库名称和所有者名称。
  • ALTER COLUMN
  • new_data_type
    指定新的数据类型名称,其使用标准如下:
    列的原数据类型应可以转换为新的数据类型;
    新的数据类型不能为TIMESTAMP;
    新的数据类型允许列为NULL 值;
    如果原来的列是IDENTITY 列,则新的数据类型应支持IDENTITY 特性;
    当前的SET ARITHABORT 设置将被视为处于ON 状态。
  • precision
    指定新数据类型的位数。
  • scale
    指定新数据类型的小数位数。
  • NULL | NOT NULL
    指明列是否允许NULL 值。如果添加列到表中时,指定它为NOT NULL, 则必须指定此列的缺省值。选择此项后,new_data_type [(precision [, scale ])]选项就必须指定,即使precision 和scale 选项均不变,当前的数据类型也需要指出来。
  • WITH CHECK | WITH NOCHECK
    指定已经存在于表中的数据是否需要使用新添加的或刚启用的FOREIGN KEY 约束或CHECK 约束来验证。如果不指定,WITH CHECK 作为新添加约束的缺省选项,WITH NOCHECK 作为启用旧约束的缺省选项。
  • {ADD | DROP} ROWGUIDCOL
    添加或删除列的ROWGUIDCOL 属性。ROWGUIDCOL 属性只能指定给一个 UNIQUEIDENTIFIER 列。
  • ADD
    添加一个或多个列、计算列或表约束的定义。
  • computed_column_expression
    计算列的计算表达式。
  • DROP { [CONSTRAINT] constraint_name | COLUMN column_name }
    指定要删除的约束或列的名称。处于下列情况的列不能删除;
    用于复制的列;
    用于索引的列;
    用于CHECK FOREIGN KEY UNIQUE 或PRIMARY KEY 约束的列;
    定义了缺省约束或绑定了一个缺省值对象的列;
    绑定了规则(Rule)的列。
  • { CHECK | NOCHECK} CONSTRAINT
    启用或禁用FOREIGN KEY 或CHECK 约束。
  • ALL
    使用NOCHECK 选项禁用所有的约束,或使用CHECK 选项启用所有的约束。
  • {ENABLE | DISABLE} TRIGGER
    启用或禁用触发器。
  • ALL
    启用或禁用选项针对所有的触发器。
  • trigger_name
    指定触发器名称。

其它参数与创建表和约束中所讲的相同。
例7-13: 创建一个定货商信息表,然后修改简介列的数据类型。
create table order_firm (
order_firm_id char (8) primary key,
firm_name varchar (50) not null
firm_introduce char(50) null
) on [primary]
alter table order_firm
alter column firm_introduce varchar(250) null
例7-14: 创建一个定货表再插入一个定货商编号列。
create table orders(
order_id char(8) ,
p_id char(8) foreign key references products(p_id),
order_quantity smallint check (order_quantity>=10),
constraint pk_order_id primary key (order_id),
) on [primary]
alter table orders
add order_firm_id char(8) null
constraint fk_order_firm_id foreign key references order_firm(order_firm_id)
例7-15: 更改上例中的检查约束,并删除一个外关键字约束。
alter table orders
add constraint chk_order_quantity check (order_quantity>=100)
drop constraint chk_order_quantity

7.4.3 用存储过程Sp_rename 修改表名和列名
Sp_rename 存储过程可以修改当前数据库中用户对象的名称,如表、列、索引、存储过程等。其语法如下:
sp_rename [@objname =] 'object_name',
[@newname =] 'new_name'
[, [@objtype =] 'object_type']
其中[@objtype =] 'object_type'是要改名的对象的类型,其值可以为‘COLUMN’、‘DATABASE’、‘INDEX’、‘USERDATATYPE’、‘OBJECT’。值‘OBJECT’指代了系统表sysobjects 中的所有对象,如表、视图、存储过程、触发器、规则、约束等。‘OBJECT’值为默认值。

例7-16:更改orders 表的列p_id 名称为products_id
exec sp_rename 'orders.[p_id]', 'product_id', 'column'
运行结果如下:
Caution: Changing any part of an object name could break scripts and stored procedures.
The column was renamed to 'product_id'.

例7-17: 更改orders 表的名称为p_orders。
exec sp_rename 'orders', 'p_orders''
运行结果如下:
Caution: Changing any part of an object name could break scripts and stored procedures.
The object was renamed to 'p_orders'.

时间: 2024-09-29 07:48:52

SQL 数据库表的修改的相关文章

MS SQL基础教程:SQL数据库表的修改

当表创建好后,可能根据需要要对表的列.约束等属性进行添加.删除或修改,这就需要修改表结构. 7.4.1 用Enterprise Manager 修改 在Enterprise Manager 中选择要进行改动的表,单击右键,从快捷菜单中选择"DesignTable"选项,则会出现如图7-4 所示的修改表结构对话框.可以在图7-4 所示的对话框中修改列的数据类型.名称等属性或添加.删除列,也可以指定表的主关键字约束.单击工具栏中的图标,出现如图7-5 所示的编辑表和约束的属性的对话框.可以

修改SQL数据库排序规则修改表栏位排序规则

  修改SQL数据库排序规则修改表栏位排序规则 修改SQL数据库排序规则: 1.修改为单用户模式 2.然后关闭所有的查询窗口,修改Options的Collocation属性,如:Chinese_PRC_90_CI_AS 3.再修改为多用户模式 修改表栏位排序规则: 使用存储过程处理,可以指定对应的表, 存储过程处理步骤: 1-刪除外鍵 (含对应的sql语句) 2-刪除主鍵 (含对应的sql语句) 2.5-删除索引 (含对应的sql语句) 3-修改排序规则 (含对应的sql语句) 4-生成主鍵 (

c#实现批量插入数据到sql数据库表中,怎么做到跳过插入失败的数据,继续插入

问题描述 c#实现批量插入数据到sql数据库表中,怎么做到跳过插入失败的数据,继续插入 c#实现批量插入数据到sql数据库表中,怎么做到跳过插入失败的数据,继续插入. 并且报错,哪几天数据失败了.和失败的原因. 我现在是可以生成一个把一个数据库表的数据导入到另一个数据库表中.但是呢,有些数据由于某个字段过长无法导入成功,而导致所有的都无法导入.直接造成导入失败.我 想过滤掉那条不成功的继续导入.不至于都导入不成功.急! 想和好久也没解决.网上也没找到说法 解决方案 数据库表插入数据失败数据库批量

急求:如何把datagridview 表格中的数据写入到SQL数据库表中?

问题描述 如何把datagridview表格中的数据写入到SQL数据库表中?请知道的给我点详细的代码让我学习一下,谢谢了, 解决方案 解决方案二:例:自己更换连接对象.表名就可以了.DimsqladpAsNewSqlClient.SqlDataAdapterDimsqlcomAsNewSqlClient.SqlCommandDimsqlcbdAsNewSqlClient.SqlCommandBuildersqlcom.Connection=DBsqlcom.CommandText="select

sql 数据库表关联查询

问题描述 sql 数据库表关联查询 sql表关联查询出的结果想再次约束(where)取出结果如何做,如下图,图为已取出的结果,想将 publiction_set_id 的值为null的数据提出,怎么做? 解决方案 有两种可能,因为是左连接,可能左边的表有数据,右边的表没数据.另外一种,右边的表这个字段是null.所以最好的选择是在这个查询结果外层在加一个 select * from ( 你的上面SQL语句) ) a where publiction_set_id is null 解决方案二: a

C# 将xml文件导入sql数据库表中

问题描述 xml文件<class><student><name>张三</name><sex>男</sex><year>11</year></student><student><name>刘三</name><sex>男</sex><year>13</year></student><student>

C# 写个应用程序 实现把SQL数据库 表中的数据 倒入 .DBF的数据库中

问题描述 点击button1实现把数据倒进VFP(*.dbf)中求大神具体办法和源码 解决方案 解决方案二:连接vfp数据库vardbname=@"D:AMPwebVFP";//dbf文件所在目录varconn=newOleDbConnection(string.Format(@"provider=VFPOLEDB.1;SourceType=DBF;datasource={0};userid=admin;password=",dbname)); 其他一个select

UPDATE 语句用于中修改数据库表中的数据

更新数据库中的数据 UPDATE 语句用于在数据库表中修改数据. 语法 UPDATE table_name SET column_name = new_value WHERE column_name = some_value 注释:SQL 对大小写不敏感.UPDATE 与 update 等效. 为了让 PHP 执行上面的语句,我们必须使用 mysql_query( 函数.该函数用于向 SQL 连接发送查询和命令. 例子 稍早时,我们在本教程中创建了一个名为 "Person" 的表.它看

请问html里面的表单数据如何通过asp发送到sql数据库

问题描述 请问html里面的表单数据如何通过asp发送到sql数据库 表单代码如下 问题1:请问代码第四行,里面的action="kehu.asp" ,里面的kehu.asp的代码怎么写? 问题2:这个asp的代码放在哪里?是单独建一个文本文档,改后缀名?还是接在我上面的代码后面? 问题3:请问我需要在数据库里做什么准备工作吗? 我的数据库名称:qds229383104__db, 数据库地址:qds229383104.my3w.com, 数据库用户名qds229383104 解决方案