SQL/OracleDB:如何为一列中的所有字段设置相同的值?

SQL/OracleDB:如何为一列中的所有字段设置相同的值?

是否可以为某一列中的所有字段设置一个值,例如:

ID Host    URI
1  //cyrus /images    
2  //cyrus /videos
3  //cyrus /text
4  //cyrus /misc
5  //cyrus /backup

我希望能够改变所有Host 列条目(它们都是相同的)位于位置。这个地方可以是像 Ocracle SQL Developer 或 Queries 这样的 GUI,我不在乎,只要我只需要更改一个可以更改所有 Host 字段的数据字段即可。

答案1

听起来你可以做类似的事情

UPDATE your_table_name
   SET host = '//new_host'
 WHERE host = '//cyrus'

更新表中的所有行。但是,将相同的数据存储在表的多个行中违反了规范化的基本原则。您几乎总是希望修改架构设计,以便有一个单独的 HOST 表和一个从您的表到主机表的外键。类似

CREATE TABLE host (
  host_id   NUMBER PRIMARY KEY,
  host_name VARCHAR2(50)
);

CREATE TABLE your_table_name (
  your_id   NUMBER PRIMARY KEY,
  host_id   NUMBER REFERENCES host( host_id ),
  uri       VARCHAR2(100)
);

如果您这样做了,那么您只需要更新HOST表中的一行即可更新表中所有行的主机名称。

相关内容