728x90
반응형
SQL Type | 명령문 |
Data Manipulation Language 데이터 조작어 |
INSERT |
UPDATE | |
DELETE | |
MERGE | |
Transaction Control Language 트랜젝션 제어어 |
COMMIT |
ROLLBACK | |
SAVEPOINT |
1) INSERT
컬럼명을 지정 하는 경우))
INSERT INTO 테이블명(컬럼명,컬럼명2) #컬럼과 값의 개수, 데이터 타입이 동일해야함
VALUES (값,값2)
- 지정되지 않은 컬럼의 값은 NULL처리됨 (NOT NULL조건이 없는 전제아래)
예시) INSERT INTO TABLE(A,B) VALUES(1,2)이면 TABLE의 C컬럼은 NULL처리가 되는 것
컬럼명을 지정 하지 않는 경우))
INSERT INTO 테이블명 #테이블에 컬럼 값이 2개 일때
VALUES (값,값2)
단, 컬럼 개수에 맞춰서 VALUE값을 순서대로 지정해야 함
더보기
**SELECT문의 결과는 테이블 형식으로 나오지만, DML의 결과는 N개의 행이 추가/삭제/수정되었습니다로 출력됨
1.1) 단일 테이블에 복수 행을 저장할 때 > Subquery이용
- CTAS 기존에 존재하는 테이블을 이용해 새 테이블을 만드는 방법
CREATE TABLE 테이블명 [(컬럼명,컬럼명2)] #CTAS(Create table as subquery)
AS
Subquery;
- 껍데기(컬럼 구조만 가져오는 방법)
- 거짓 조건을 WHERE구문에 제시함 (WHERE 1=2처럼 명백히 거짓인 구문 제시)
CREATE TABLE dpt
AS
SELECT * FROM dpt
WHERE 1=2;
위와 같이 비어있는 dpt테이블을 먼저 만든 이후, 값을 추가함
INSERT INTO dpt
SELECT dno,dname,lc
FROM dept;
2. 데이터와 구조를 함께 가져오는 방법
CRERATE TABLE MY_DEP
AS
SELECT * FROM DEPT;
** CTAS에서 NOT NULL을 제외한 제약조건은 복사가 안됨
1.2) 다중 테이블에 복수 행을 저장할 때 - INSERT ALL
INSERT ALL
[WHEN 조건식 THEN]
INTO 테이블1 VALUES ( 컬럼명,컬럼명2,...,컬럼명n)
[WHEN 조건식2 THEN]
INTO 테이블2 VALUES ( 컬럼명,컬럼명2,...,컬럼명n)
Subquery;
- WHEN 조건은 선택적으로 사용 가능
- CTAS로 비어있는 테이블을 각각 만들고 이후에 INSERT ALL구문으로 복수 행을 각각 추가 가능함
- 이때, INSERT FIRST를 사용하면 선행되는 조건을 만족하면 선행 테이블에만 저장됨
2) UPDATE
: 컬럼을 수정하는 기능에 해당함
UPDATE 테이블명
SET 컬럼명=변경할값
[WHERE 조건식];
- 여기서 변경할 값에 Subquery 활용 가능
UPDATE mydept
SET dname= ( SELECT name FROM dept WHERE dept = 20)
,loc= ( SELECT loc FROM dept WHERE dept=90)
WHERE dept = 100;
3) DELETE
DELETE FROM 테이블명
[WHERE 조건식];
4) MERGE
: 구조가 동일한 2개 테이블을 비교해 하나의 테이블로 merge 하기위해 사용
MERGE INTO 테이블1 별칭
USING (테이블명2|뷰|서브쿼리) 별칭
ON (조인조건)
#결과가 저장되는 테이블1을 on 조인조건에 따라 테이블 2와 합쳐라
WHEN MATCHED THEN #조건이 일치하면 udate문을 실행하라
UPDATE SET
컬럼명=값,
컬럼명1=값1
[WHERE 조건식]
[DELETE WHERE 조건식]
WHEN NOT MATCHED THEN #조건이 일치하지 않으면 insert문을 실행하라
INSERT ( 컬럼 목록)
VALUES ( 값 목록 )
[WHERE 조건식]
728x90
반응형
'SQL' 카테고리의 다른 글
SQL 연습 외국 웹사이트 5곳 추천 (0) | 2023.04.12 |
---|---|
SQL DDL 데이터 정의어 총 정리 (0) | 2022.09.14 |
SQL Subquery 서브쿼리 사용하기 (1) | 2022.09.13 |
[Oracle] Join (Inner, Outer, ANSI Join) (1) | 2022.09.13 |
[Oracle] SQL 주민등록번호로 나이 계산하기 (0) | 2022.09.08 |
댓글