1. INSERT
👩🏻💻 새로운 레코드를 추가하는 명령
👩🏻💻 INSERT 문을 스크립트로 작성해 놓으면 많은 데이터를 순차적으로 입력할 수 있어서 편리
// 기본 형식
INSERT INTO 테이블 (필드 목록) VALUES (값 목록)
📌 명령어가 두 단어로 구성, INSERT는 삽입하라는 명령어이고 INTO는 삽입 대상을 명시하는 전치사
📌 INTO 다음에 새 레코드를 삽입할 테이블 이름을 적은 후 필드 목록에 삽입할 필드의 이름을 콤마로 구분하여 나열
📌 VALUES 절의 값 목록에는 필드에 대입할 값을 나열
// 서울 레코드를 삽입하는 원론적인 쿼리문
INSERT INTO tCity (name, area, popu, metro, region)
VALUES ('서울', 605, 974 ,'y', '경기');
👾 필드 목록, 값 목록 모두 5개여서 개수가 맞음
👾 하지만 필드 목록과 값 목록이 반복되어 명령문이 길고 필드명을 일일이 순서에 맞춰 입력해야 되서 길어짐
➡️ 모든 필드를 선언 순서대로 삽입할 때는 필드 목록을 생략 할 수 있다.
➡️ 필드 목록이 없는 대신 값 목록이 완전해야 하며 순서도 반드시 지켜야 함
👾 필드 목록을 밝히면 꼭 선언 순서에 맞추지 않아도 결과값은 순서대로 출력 된다.
INSERT INTO tCity VALUES ('서울',605, 974,'y','경기');
-- 서울이 이미 있어서 중복 삽입을 할수 없으므로 테이블에 없는 평택을 입력.
INSERT INTO tCity VALUES ('평택', 453, 51, 'n', '경기');
INSERT INTO tCity VALUES ('평택', 51, 453, 'n', '경기');
-- area와 popu가 바뀜
INSERT INTO tCity VALUES ('평택', 453, 'n', 51, '경기');
-- popu와 metro 순서가 바뀜
INSERT INTO tCity VALUES ('평택', 453, 'n', '경기');
-- popu 필드값 누락
-- 필드 목록을 밝히면 꼭 선언 순서에 맞추지 않아도 원하는 순대대로 나열할 수 있음.
INSERT INTO tCity (area, popu, metro, region, name)
VALUES (453, 51, 'n', '경기', '평택');
2. 확장 INSERT문
👩🏻💻 각 행마다 개별적으로 INSERT INTO 명령을 일일이 작성하면 쿼리문이 길어 번잡스러움
➡️ 대량의 데이터를 삽입할 때는 VALUES 뒤에 차례로 나열하면 편하다.
👩🏻💻 백업을 복구하는 경우 속도는 개별보다 느리다.
👩🏻💻 표준SQL 문법은 아니고 오라클에서도 지원하지는 않음.
INSERT INTO tCity (name, area, popu, metro, region)
VALUES ('서울',605,974,'y','경기'),
('부산',765,342,'y','경상'),
('오산',42,21,'n','경기'),
('청주',940,83,'n','충청'),
('전주',205,65,'n','전라'),
('순천',910,27,'n','전라'),
('춘천',1116,27,'n','강원'),
('홍천',1819,7,'n','강원');
3. INSERT SELECT
// 기본형
INSERT INTO 대상테이블 (필드목록) SELECT 필드목록 FROM 원본테이블;
👩🏻💻 INSERT 명령은 한번에 하나의 레코드만 삽입하지만, 다른 테이블 또는 자기 자신에게 이미 저장되어 있는 대량의 정보를 복사할 때는
조회한 결과셋을 한꺼번에 삽입할 수 있다.
👩🏻💻 INSERT INTO와 기본 형식은 비슷하지만 필드의 값을 VALUES 대신 SELECT 명령으로 다른 테이블에서 읽어온다는 점이 다르다.
👩🏻💻 다른 테이블이나 같은 테이블의 정보를 재활용하는 경우 많다.
INSERT INTO tStaff (name, depart, gender, joindate, grade, salary, score)
SELECT name, region, metro, '20210629', '신입', area, popu
FROM tCity WHERE region = '경기';
📌 tCity 테이블에서 경기도 소속의 도시 정보를 읽어 tStaff 테이블에 신입 직원으로 삽입
4. CREATE SELECT
CREATE TABLE 대상테이블 AS SELECT 필드목록 FROM 원본테이블
👩🏻💻 INSERT SELECT 와 유사하되 기존 테이블에 레코드를 삽입하는 것이 아니라 새로 테이블을 만들어 결과셋을 삽입하는 점이 다르다.
👩🏻💻 기존 테이블의 일부 필드와 레코드를 가져와 삽입하는 명령이어서 대상 테이블이 존재하면 안된다.
👩🏻💻 원본을 손상시키지 않고 특수한 작업을 하기 위해 사본을 만드는 경우 유용
CREATE TABLE tSudo AS SELECT name, area, popu FROM tCity
WHERE region = '경기';
SELECT * FROM tSudo;
📌 경기도 지역의 도시만으로 tSudo 테이블을 생성
📍 tStaff 테이블에 대량의 변경을 가해야 하는데 불안할 경우 다음 명령으로 복사
CREATE TABLE tStaff_backup_240206 AS SELECT * FROM tStaff;
📌 백업은 여러번 뜰 수 있어서 관행상 날짜를 명시.
📌 데이터의 백업은 되나 원본 테이블의 키 속성을 가지고 오지 못한다.
[ 내용 참고 : 코딩학원 강의 ]
'Database > MySQL' 카테고리의 다른 글
[MySQL] UPDATE 문 (1) | 2024.02.24 |
---|---|
[MySQL] DELETE 문 (1) | 2024.02.24 |
[MySQL] GROUP BY, HAVING (0) | 2024.02.23 |
[MySQL] 집계 함수 (aggregate function) (0) | 2024.02.23 |
[MySQL] SELECT문 | ORDER BY, DISTINCT, LIMIT, OFFSET FETCH (0) | 2024.02.23 |