gbase如何增加多个字段

gbase如何增加多个字段,第1张

gbase如何增加多个字段

GBase 8a数据库集群,目前不支持字段的定义修改,除了varchar类型可以增加长度,其它的类型或属性均不可以,需要重建一个字段过渡一下。

varchar类型增加长度

请一定保留原有的附加属性,包括not null, default 等。否则change时会报错。单独修改注释等,请用modify功能。

gbase>desc t2

+-------+-------------+------+-----+---------+-------+

| Field | Type| Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| id| int(11) | YES | | NULL| |

| name | varchar(20) | YES | | NULL| |

+-------+-------------+------+-----+---------+-------+

2 rows in set (Elapsed: 00:00:00.00)

gbase>alter table t2 change name name varchar(30)

Query OK, 0 rows affected, 1 warning (Elapsed: 00:00:00.98)

Records: 0 Duplicates: 0 Warnings: 0

gbase>desc t2

+-------+-------------+------+-----+---------+-------+

| Field | Type| Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| id| int(11) | YES | | NULL| |

| name | varchar(30) | YES | | NULL| |

+-------+-------------+------+-----+---------+-------+

2 rows in set (Elapsed: 00:00:00.00)

gbase>

其它类型变动

其它类型只有先建一个新的字段,然后把数据update过去,然后把老的删除,把新的change成老的字段名。

如下例子,把value bigint, 改成 value int.

gbase>desc t1

+-------+------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+------------+------+-----+---------+-------+

| id| int(11)| YES | MUL | NULL| |

| value | bigint(20) | YES | | NULL| |

| birth | datetime | YES | | NULL| |

+-------+------------+------+-----+---------+-------+

3 rows in set (Elapsed: 00:00:00.00)

gbase>alter table t1 add column value2 int after value

Query OK, 4 rows affected (Elapsed: 00:00:00.65)

Records: 4 Duplicates: 4 Warnings: 0

gbase>desc t1

+--------+------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+--------+------------+------+-----+---------+-------+

| id | int(11)| YES | MUL | NULL| |

| value | bigint(20) | YES | | NULL| |

| value2 | int(11)| YES | | NULL| |

| birth | datetime | YES | | NULL| |

+--------+------------+------+-----+---------+-------+

4 rows in set (Elapsed: 00:00:00.00)

gbase>update t1 set value2=value

Query OK, 4 rows affected (Elapsed: 00:00:00.28)

Rows matched: 4 Changed: 4 Warnings: 0

gbase>alter table t1 drop value

Query OK, 4 rows affected (Elapsed: 00:00:00.42)

Records: 4 Duplicates: 4 Warnings: 0

gbase>desc t1

+--------+----------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+--------+----------+------+-----+---------+-------+

| id | int(11) | YES | MUL | NULL| |

| value2 | int(11) | YES | | NULL| |

| birth | datetime | YES | | NULL| |

+--------+----------+------+-----+---------+-------+

3 rows in set (Elapsed: 00:00:00.00)

gbase>alter table t1 change value2 value int

Query OK, 0 rows affected (Elapsed: 00:00:00.21)

Records: 0 Duplicates: 0 Warnings: 0

gbase>desc t1

+-------+----------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+----------+------+-----+---------+-------+

| id| int(11) | YES | MUL | NULL| |

| value | int(11) | YES | | NULL| |

| birth | datetime | YES | | NULL| |

+-------+----------+------+-----+---------+-------+

3 rows in set (Elapsed: 00:00:00.01)

本文的功能经常用到,虽然系统可以修改字段类型,但还是建议在设计阶段控制好,特别是避免从高精度,高长度更改为低精度,低长度的情况。 特别是varchar并不是实际占用空间。

方法如下:

例如:

create table student(

Sno int identity(1,1) primary key,

Sname varchar(100)

)

这样我们的Sno字段就可以实现自增了,第一个参数是标识种子(就是开始的值),第二个参数是标识增值(每次增加多少)

这里我们开始为1,每次增加1

如果做插入的话,则:

insert into student values('李四')

注意values里面不要写自增字段名的值,因为数据库会自动帮你生成。

例如第一行为 1 小明

insert into student values('李四')

变为 1 小明

2 李四

扩展资料

SQL SERVER几种数据迁移

使用数据库客户端(SSMS)的界面工具。右键选择要导出数据的数据库,选择“任务”——“导出数据”,而导入则相反,导入时,SQLServer会默认创建一张新表,字段名也默认跟导入的Excel标题一样,并且会默认字段数据类型等。

当然在可以在向导进行修改。需要注意的是如果标题不是英文而是中文,默认创建字段名也是中文,这将给后面数据更新 *** 作带来麻烦,所以最好还是以有意义的英文字段名。把数据导入后,再通过执行语句,把数据插入/更新到业务表。

从SQLServer2005开始,可以直接在SSMS上查询出来的结果复制,然后粘贴到Excel上,对于少量数据来说,是非常快速方便的,需要注意的是长数字可能会变成科学记数法的形式,提前在Excel上指定列的格式为文本即可。

导入的话,ctrl + c 复制Excel上的数据,然后在选择相关表,编辑数据,把数据直接粘贴上去即可。但是不建议直接粘贴到业务表(如果表是空白没有数据,并且字段顺序对应,可以这样 *** 作),而是建议先粘贴到一个新建的中间表中,然后再通过语句,把数据插入/更新到业务表。

这种方法的导出导入,适合于少量的数据,如5000行以内的记录,大于5000行以上就不建议了,速度较慢,如果数据过大,还一定成功。

参考资料

百度百科——SQL

select *

from base_bb,base_aa

----

以上语句是对两表没有连接条件的情况

只要加上两表连接的条件,只要连接条件是1对1的关系,就实现你的要求

如果你找不到两表的1对1的关系,只能人为地添加一id自增列作为连接条件再连接

例如

--把base_aa添加自增列id再把结果保存进#t1

select id=IDENTITY(int,1,1),*

into #t1

from base_aa

--把base_bb添加自增列id再把结果保存进#t1

select id=IDENTITY(int,1,1),*

into #t2

from base_bb

--以两表的id列为key连接两表

--这里会比最终效果多出两个多余id列,你只要这里列举你需要显示的列就行

select *

from #t1 a inner join #t2 b

on #t1.id = #t2.id

--删除临时表

drop table #t1

drop table #t2


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11855040.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存