|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
BlackHole黑洞引擎,写入的任何数据都会消失,一般用于记录binlog做复制的中继当表创立好后,大概依据必要要对表的列、束缚等属性举行增加、删除或修正,这就必要修正表布局。7.4.1用EnterpriseManager修正
在EnterpriseManager当选摘要举行修改的表,单击右键,从快速菜单当选择“DesignTable”选项,则会呈现如-4所示的修正表布局对话框。能够在-4所示的对话框中修正列的数据范例、称号等属性或增加、删除列,也能够指定表的主关头字束缚。单击工具栏中的图标
,呈现如-5所示的编纂表和束缚的属性的对话框。能够在个中编纂各类束缚和一些表的属性。
7.4.2用ALTERTABLE命令修正
ALTERTABLE命令能够增加或删除表的列、束缚,也能够禁用或启用已存在的束缚
或触发器。其语法以下:
ALTERTABLEtable
{[ALTERCOLUMNcolumn_name
{new_data_type[(precision[,scale])]
[COLLATE<collation_name>]
[NULL|NOTNULL]
|{ADD|DROP}ROWGUIDCOL}]
|ADD
{[<column_definition>]
|column_nameAScomputed_column_expression
}[,...n]
|[WITHCHECK|WITHNOCHECK]ADD
{<table_constraint>}[,...n]
|DROP
{[CONSTRAINT]constraint_name
|COLUMNcolumn
}[,...n]
|{CHECK|NOCHECK}CONSTRAINT
{ALL|constraint_name[,...n]}
|{ENABLE|DISABLE}TRIGGER
{ALL|trigger_name[,...n]}
}
<column_definition>::={column_namedata_type}
[[DEFAULTconstant_expression]
|[IDENTITY[(seed,increment)[NOTFORREPLICATION]]]
]
[ROWGUIDCOL]
[COLLATE<collation_name>]
[<column_constraint>][...n]
<column_constraint>::=[CONSTRAINTconstraint_name]
{[NULL|NOTNULL]
|[{PRIMARYKEY|UNIQUE}
[CLUSTERED|NONCLUSTERED]
[WITHFILLFACTOR=fillfactor]
[ON{filegroup|DEFAULT}]]]
|[[FOREIGNKEY]
REFERENCESref_table[(ref_column)]
[ONDELETE{CASCADE|NOACTION}]
[ONUPDATE{CASCADE|NOACTION}]
[NOTFORREPLICATION]]
|CHECK[NOTFORREPLICATION]
(logical_expression)}
<table_constraint>::=[CONSTRAINTconstraint_name]
{[{PRIMARYKEY|UNIQUE}
[CLUSTERED|NONCLUSTERED]
{(column[ASC|DESC][,...n])}
[WITHFILLFACTOR=fillfactor]
[ON{filegroup|DEFAULT}]]
|FOREIGNKEY
[(column[,...n])]
REFERENCESref_table[(ref_column[,...n])]
[NOTFORREPLICATION]
[ONDELETE{CASCADE|NOACTION}]
[ONUPDATE{CASCADE|NOACTION}]
|CHECK[NOTFORREPLICATION]
(search_conditions)}
各参数申明以下:
<P>
- table
指定要修正的表的称号。假如表不在以后数据库中或表不属于以后的用户,就必需指明其所属的数据库称号和一切者称号。
- ALTERCOLUMN
- new_data_type
指定新的数据范例称号,其利用尺度以下:
列的原数据范例应能够转换为新的数据范例;
新的数据范例不克不及为TIMESTAMP;
新的数据范例同意列为NULL值;
假如本来的列是IDENTITY列,则新的数据范例应撑持IDENTITY特征;
以后的SETARITHABORT设置将被视为处于ON形态。
- precision
指定新数据范例的位数。
- scale
指定新数据范例的小数位数。
- NULL|NOTNULL
指明列是不是同意NULL值。假如增加列到表中时,指定它为NOTNULL,则必需指定此列的缺省值。选择此项后,new_data_type[(precision[,scale])]选项就必需指定,即便precision和scale选项均稳定,以后的数据范例也必要指出来。
- WITHCHECK|WITHNOCHECK
指定已存在于表中的数据是不是必要利用新增加的或刚启用的FOREIGNKEY束缚或CHECK束缚来考证。假如不指定,WITHCHECK作为新增加束缚的缺省选项,WITHNOCHECK作为启用旧束缚的缺省选项。
- {ADD|DROP}ROWGUIDCOL
增加或删除列的ROWGUIDCOL属性。ROWGUIDCOL属性只能指定给一个UNIQUEIDENTIFIER列。
- ADD
增加一个或多个列、盘算列或表束缚的界说。
- computed_column_expression
盘算列的盘算表达式。
- DROP{[CONSTRAINT]constraint_name|COLUMNcolumn_name}
指定要删除的束缚或列的称号。处于以下情形的列不克不及删除;
用于复制的列;
用于索引的列;
用于CHECKFOREIGNKEYUNIQUE或PRIMARYKEY束缚的列;
界说了缺省束缚或绑定了一个缺省值工具的列;
绑定了划定规矩(Rule)的列。
- {CHECK|NOCHECK}CONSTRAINT
启用或禁用FOREIGNKEY或CHECK束缚。
- ALL
利用NOCHECK选项禁用一切的束缚,或利用CHECK选项启用一切的束缚。
- {ENABLE|DISABLE}TRIGGER
启用或禁用触发器。
- ALL
启用或禁用选项针对一切的触发器。
- trigger_name
指定触发器称号。
别的参数与创立表和束缚中所讲的不异。
例7-13:创立一个订货商信息表,然后修正简介列的数据范例。
createtableorder_firm(
order_firm_idchar(8)primarykey,
firm_namevarchar(50)notnull
firm_introducechar(50)null
)on[primary]
altertableorder_firm
altercolumnfirm_introducevarchar(250)null
例7-14:创立一个订货表再拔出一个订货商编号列。
createtableorders(
order_idchar(8),
p_idchar(8)foreignkeyreferencesproducts(p_id),
order_quantitysmallintcheck(order_quantity>=10),
constraintpk_order_idprimarykey(order_id),
)on[primary]
altertableorders
addorder_firm_idchar(8)null
constraintfk_order_firm_idforeignkeyreferencesorder_firm(order_firm_id)
例7-15:变动上例中的反省束缚,并删除一个外关头字束缚。
altertableorders
addconstraintchk_order_quantitycheck(order_quantity>=100)
dropconstraintchk_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
execsp_renameorders.[p_id],product_id,column
运转了局以下:
Caution:Changinganypartofanobjectnamecouldbreakscriptsandstoredprocedures.
Thecolumnwasrenamedtoproduct_id.
例7-17:变动orders表的称号为p_orders。
execsp_renameorders,p_orders
运转了局以下:
Caution:Changinganypartofanobjectnamecouldbreakscriptsandstoredprocedures.
Theobjectwasrenamedtop_orders.
MySQL最初的开发者的意图是用mSQL和他们自己的快速低级例程(ISAM)去连接表格。经过一些测试后,开发者得出结论:mSQL并没有他们需要的那么快和灵活。 |
|