是否可以在已存储现有数据的字段中添加数据?

时间:2016-12-14 13:03:03

标签: mysql sql database insert alter

与更新整个字段相比,是否可以在字段中添加数据?

例如,在表格中

IEnumerable<Customer> customers = dbCustomers.Select(customer => new Customer
{
    Name = customer.Name,
    Address = customer.Address,
    Number = customer.Number
});

我是否有可能编写一条SQL语句来代替更新兴趣,其中id =和retyping Maths,Science。相反,我只需插入值Science,它会在当前存储的数据后将其插入到兴趣字段中?

ID FName Interests 
1  Geno  Math

4 个答案:

答案 0 :(得分:1)

你可以试试这个:

Update [YourTable]
SET Interests= CONCAT(Interests,',Science')
WHERE Id=[someid]

您可以使用CONCAT()更新现有列值,science

答案 1 :(得分:1)

有可能,但不要这样做!您的数据库中有两个不同的实体,&#34;用户&#34; (某种)和&#34;兴趣&#34;。

存储此数据的正确方法是使用每个用户感兴趣的一行表:

create table UserInterests (
    UserInterestId int auto_increment primary key,
    UserId int not null,
    Interest varchar(255),
    constraint fk_UserInterests_UserId foreign key (UserId) references ?(id)
);

然后您可以非常轻松地分配新兴趣:

insert into UserInterests
    values ($userId, $interest);

(注意:您应该使用参数进行此类查询,而不仅仅是将值放入查询字符串中。)

为什么这是&#34;对&#34;办法?请考虑以下事项:

  • SQL列(JSON和XML等特殊类型除外)旨在存储单个值。
  • SQL有一个很好的数据结构来存储列表;它被称为
  • MySQL没有特别强大的字符串函数。
  • 对利益的质疑无法利用利益。
  • 简单的事情,例如获取兴趣列表,实际上是非常困难的,因为这些值在一个字符串中汇总在一起。

答案 2 :(得分:0)

您可以使用下面的CONCAT()功能,但最后您必须执行UPDATE操作。

update tbl1
set Interests = concat(Interests,', Science')
where id =1;

答案 3 :(得分:0)

您不需要重新输入,只需连接 -

update t  
set col=concat_ws(',',col,'new att')  
where ...

但你真的不想这样做。
糟糕的设计。