在表格被建立在资料库中后,我们常常会发现,这个表格的结构需要有所改变。常见的改变如下:
- 加一个栏位
- 删去一个栏位
- 改变栏位名称
- 改变栏位的资料种类
以上列出的改变并不是所有可能的改变。ALTER TABLE也可以被用来作其他的改变,例如改变主键定义。
ALTER TABLE的语法如下:
ALTER TABLE "table_name" [改变方式];
[改变方式] 的详细写法会依我们想要达到的目标而有所不同。再以上列出的改变中,[改变方式] 如下:
- 加一个栏位: ADD "栏位 1" "栏位 1 资料种类"
- 删去一个栏位: DROP "栏位 1"
- 改变栏位名称: CHANGE "原本栏位名" "新栏位名" "新栏位名资料种类"
- 改变栏位的资料种类: MODIFY "栏位 1" "新资料种类"
以下我们用在CREATE TABLE一页建出的Customer表格来当作例子:
Customer 表格
|
栏位名称
资料种类
First_Name
char(50)
Last_Name
char(50)
Address
char(50)
City
char(50)
Country
char(25)
Birth_Date
datetime
第一,我们要加入一个叫做 "Gender" 的栏位。这可以用以下的指令达成:
ALTER TABLE Customer ADD Gender char(1);
这个指令执行后的表格架构是:
Customer 表格
栏位名称
资料种类
First_Name
char(50)
Last_Name
char(50)
Address
char(50)
City
char(50)
Country
char(25)
Birth_Date
datetime
Gender
char(1)
接下来,我们要把 "Address" 栏位改名为 "Addr"。这可以用以下的指令达成:
ALTER TABLE Customer CHANGE Address Addr char(50);
这个指令执行后的表格架构是:
Customer 表格
栏位名称
资料种类
First_Name
char(50)
Last_Name
char(50)
Addr
char(50)
City
char(50)
Country
char(25)
Birth_Date
datetime
Gender
char(1)
再来,我们要将 "Addr" 栏位的资料种类改为 char(30)。这可以用以下的指令达成:
ALTER TABLE Customer MODIFY Addr char(30);
这个指令执行后的表格架构是:
Customer 表格
栏位名称
资料种类
First_Name
char(50)
Last_Name
char(50)
Addr
char(30)
City
char(50)
Country
char(25)
Birth_Date
datetime
Gender
char(1)
最后,我们要删除 "Gender" 栏位。这可以用以下的指令达成:
ALTER TABLE Customer DROP Gender;
这个指令执行后的表格架构是:
Customer 表格
栏位名称
资料种类
First_Name
char(50)
Last_Name
char(50)
Addr
char(30)
City
char(50)
Country
char(25)
Birth_Date
datetime
change和modify的区别:
您可以使用CHANGEold_col_namecolumn_definition子句对列进行重命名。重命名时,需给定旧的和新的列名称和列当前的类型。例如:要把一个INTEGER列的名称从a变更到b,您需要如下操作:
1
mysql>
ALTER
TABLE
t1CHANGEab
INTEGER
;
如果您想要更改列的类型而不是名称, CHANGE语法仍然要求旧的和新的列名称,即使旧的和新的列名称是一样的。例如:
t1CHANGEbb
BIGINT
NOT
NULL
您也可以使用MODIFY来改变列的类型,此时不需要重命名:
t1
MODIFY
b
;
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!