【Sqlite】ALTER TABLE相关命令及change和modify的区别

在表格被建立在资料库中后,我们常常会发现,这个表格的结构需要有所改变。常见的改变如下:

  • 加一个栏位
  • 删去一个栏位
  • 改变栏位名称
  • 改变栏位的资料种类

以上列出的改变并不是所有可能的改变。ALTER TABLE 也可以被用来作其他的改变,例如改变主键定义。

ALTER TABLE 的语法如下:

ALTER TABLE "table_name"
[改变方式];

[改变方式] 的详细写法会依我们想要达到的目标而有所不同。再以上列出的改变中,[改变方式] 如下:

  • 加一个栏位: ADD "栏位 1" "栏位 1 资料种类"
  • 删去一个栏位: DROP "栏位 1"
  • 改变栏位名称: CHANGE "原本栏位名" "新栏位名" "新栏位名资料种类"
  • 改变栏位的资料种类: MODIFY "栏位 1" "新资料种类"

以下我们用在 CREATE TABLE 一页建出的 Customer 表格来当作例子:

Customer 表格

栏位名称资料种类
First_Namechar(50)
Last_Namechar(50)
Addresschar(50)
Citychar(50)
Countrychar(25)
Birth_Datedatetime

第一,我们要加入一个叫做 "Gender" 的栏位。这可以用以下的指令达成:

ALTER TABLE Customer ADD Gender char(1);

这个指令执行后的表格架构是:

Customer 表格

栏位名称资料种类
First_Namechar(50)
Last_Namechar(50)
Addresschar(50)
Citychar(50)
Countrychar(25)
Birth_Datedatetime
Genderchar(1)

接下来,我们要把 "Address" 栏位改名为 "Addr"。这可以用以下的指令达成:

ALTER TABLE Customer CHANGE Address Addr char(50);

这个指令执行后的表格架构是:

Customer 表格

栏位名称资料种类
First_Namechar(50)
Last_Namechar(50)
Addrchar(50)
Citychar(50)
Countrychar(25)
Birth_Datedatetime
Genderchar(1)

再来,我们要将 "Addr" 栏位的资料种类改为 char(30)。这可以用以下的指令达成:

ALTER TABLE Customer MODIFY Addr char(30);

这个指令执行后的表格架构是:

Customer 表格

栏位名称资料种类
First_Namechar(50)
Last_Namechar(50)
Addrchar(30)
Citychar(50)
Countrychar(25)
Birth_Datedatetime
Genderchar(1)

最后,我们要删除 "Gender" 栏位。这可以用以下的指令达成:

ALTER TABLE Customer DROP Gender;

这个指令执行后的表格架构是:

Customer 表格

栏位名称资料种类
First_Namechar(50)
Last_Namechar(50)
Addrchar(30)
Citychar(50)
Countrychar(25)
Birth_Datedatetime

change和modify的区别:

您可以使用CHANGE old_col_namecolumn_definition子句对列进行重命名。重命名时,需给定旧的和新的列名称和列当前的类型。例如:要把一个INTEGER列的名称从a变更到b,您需要如下操作:

1
mysql>  ALTER  TABLE  t1 CHANGE a b  INTEGER ;

如果您想要更改列的类型而不是名称, CHANGE语法仍然要求旧的和新的列名称,即使旧的和新的列名称是一样的。例如:

1
mysql>  ALTER  TABLE  t1 CHANGE b b  BIGINT  NOT  NULL ;

您也可以使用MODIFY来改变列的类型,此时不需要重命名:

1
mysql>  ALTER  TABLE  t1  MODIFY  BIGINT  NOT  NULL ;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值