데이터 하나가 필요해서 똑같이 복사하는 sql이 필요했다!
데이터베이스에서 특정 로우를 복사하는 방법은 사용하는 DBMS에 따라 약간씩 다를 수 있지만,
일반적으로 INSERT INTO ... SELECT 문을 사용하여 쉽게 복사할 수 있습니다.
아래는 일반적인 SQL 구문과 예시입니다.
기본 구문
INSERT INTO [테이블 이름] ([컬럼1], [컬럼2], [컬럼3], ...)
SELECT [컬럼1], [컬럼2], [컬럼3], ...
FROM [테이블 이름]
WHERE [조건];
예시
예제 테이블: users
- 컬럼: id, name, email, age
1. 특정 로우를 복사
ID가 1인 데이터를 복사하려면:
INSERT INTO users (name, email, age)
SELECT name, email, age
FROM users
WHERE id = 1;
- 결과: ID 1과 동일한 데이터가 새 로우로 추가됨.
(id 컬럼이 AUTO_INCREMENT라면 새 ID가 자동 생성됨.)
2. 모든 로우 복사
테이블의 모든 데이터를 한 번에 복사하려면:
INSERT INTO users (name, email, age)
SELECT name, email, age
FROM users;
3. 테이블 간 복사
만약 데이터를 동일한 구조를 가진 다른 테이블에 복사하려면:
INSERT INTO users_backup (name, email, age)
SELECT name, email, age
FROM users
WHERE id = 1;
주의 사항
- AUTO_INCREMENT 또는 PRIMARY KEY 충돌 방지
- id 같은 기본 키를 복사하려면 중복 문제가 생길 수 있으므로 제외하거나, 새 값으로 설정하세요.
- NULL 처리
- 복사된 데이터에서 NULL 값이 필요 없는 경우 COALESCE를 사용하여 기본값으로 대체할 수 있습니다.
sql코드 복사SELECT COALESCE(name, 'default_name'), email, age FROM users WHERE id = 1; - 트랜잭션
- 중요 데이터를 복사할 때는 트랜잭션을 사용해 작업 중 오류 발생 시 롤백할 수 있도록 처리하는 것이 좋습니다:
START TRANSACTION;
INSERT INTO users (name, email, age)
SELECT name, email, age
FROM users
WHERE id = 1;
COMMIT;
필요한 구문을 상황에 맞게 수정해 사용하시면 됩니다! 😊
728x90
반응형
'MYSQL' 카테고리의 다른 글
VSCODE에 용량이 큰 DB파일 업로드 시 실패 이유 (0) | 2024.11.22 |
---|---|
[MYSQL] DROP 해버린 SCHEMA 복구 (1) | 2024.11.08 |
[SQL] 기본 쿼리 꿀팁 모음 (2) | 2024.10.15 |