0

1つのテーブルを2つに分割して、データベースをリファクタリングしたいと思います。いくつかの既存の列を新しいテーブルに移動したいと思います。たとえばaddress、下のテーブルのフィールドをEmployee新しいAddressテーブルに移動するとします。

sqlite(または同等の場合はSQL)を使用してこれをどのように達成できますか?

前:

Employee Table
   employee_id (Primary)
   name
   address
   city

後:

Employee Table
   employee_id (Primary)
   name
   address_id

Address Table
   address_id (Primary)
   address
   city
4

3 に答える 3

1

これを試して:

  CREATE TABLE Employee(
  emp_id int,
  name nvarchar(50),
  address nvarchar(50),
  city nvarchar(50),
  PRIMARY KEY (emp_Id));

ALTER TABLE Employee
ADD address_id int NOT NULL IDENTITY;

INSERT INTO EMPLOYEE(emp_id,name,address,city) VALUES (111,'JOHN','XXX STREET','XYZ');

CREATE TABLE Address(
   address_id int NOT NULL,
   address nvarchar(100),
   city nvarchar(100),
   PRIMARY KEY (address_id)
  );

INSERT INTO Address (address_id, address, city)
SELECT address_id, address, city
FROM Employee;

ALTER TABLE Employee
DROP COLUMN address;

ALTER TABLE Employee
DROP COLUMN city;

ここをチェック

于 2012-09-01T18:56:45.577 に答える
1
create table employee_new(employee_id,name,address_id);
insert into employee_new select employee_id,name,employee_id from employee;
create table address(address_id,address,city);
insert into address select employee_id,address,city from employee; 
alter table employee rename to employee_old;
alter table employee_new rename to employee;
于 2012-09-01T18:53:15.793 に答える
0

1: 最初のテーブルに AddressID 列を作成し、番号を割り当てます。
2: 空の新しいテーブルを作成します。
3: データを転送します (このようなもの)
INSERT INTO ADDRESS (ADDRESS_ID, ADDRESS, CITY)
SELECT ADDRESS_ID, ADDRESS, CITY FROM EMPLOYEE
4: 最初のテーブルから古い列を削除し、外部キーを作成します

于 2012-09-01T18:29:00.190 に答える