[SQL] INSERT

SONGB·2023년 7월 12일
0

SQL

목록 보기
5/13

sql 쿼리문을 짤 줄 안다면 insert를 작성하는 법을 모를 수가 없다.
모른다면 훔... 알아서 잘 배워라!


특정 column에만 데이터 집어 넣기!

INSERT INTO table (column1,column2,column3)
VALUES (val1,val2,val3);

가장 기초적인 INSERT 문이다.
이거 모르면 그냥 데이터 못 집어 넣는 거임


모든 column에 대한 데이터를 가진 상태로 table에 데이터 삽입!

INSERT INTO table
VALUES (val1,val2,val3,...,valN);

테이블의 모든 컬럼에 대한 값이 있는 데이터를 테이블에 삽입할 경우 굳이 column을 정의하지 않아도 된다.

주의!
table에서 column의 순서를 보고 적절한 값을 채워야 한다.

굉장히 사용 빈도가 높아 보이지만 실제로 작성하게 되면 위에 걸 훨씬훨씬 많이 쓴다는 것을 알게 될 것


table에 여러 row를 한 번에 삽입

INSERT INTO table (column1,column2,column3)
	SELECT column1, column2, column3
	FROM table2 ;
    

내가 글을 쓰게 된 이유!

내가 했던 플젝(회사 안 다닐때, 지금보다도 더 JJEORI 일때) 에서는 굳이 여러 row의 데이터를 다른 테이블에 저장할 필요가 없어 사용하지 않았었다.

하지만 지금 보고 있는 코드를 분석하다가 INSERT문VALUES가 없는 것을 보고 뇌정지🧠

자세히 보니 SELECT문을 사용해 여러 row를 한 번에 넣고 있었다.

물론 서브쿼리에 Join까지 해서 꽤나 긴 쿼리문이지만 고작 INSERT를 이해하지 못했다는 사실에 충격을 금치 못 했다.


참고로 내가 보는 SELECT문 구조이다
INSERT INTO TABLE1
SELECT COL1,COL2,COL3
FROM (
	SELECT COL1,COL2,COL3,SUM(COL0) AS SUM_COL0
	FROM TABLE2
	WHERE 1=1 
	AND COL1=#COL1
	AND COL2 BETWEEN #BT1# AND #BT2#
	GROUP BY COL1,COL2,COL3
    ) TL
	LEFT JOIN
	(SELECT COL2,COL3,MAX(TB3.COL5) AS COL6
    FROM TABLE3 TB3
    	, TABLE4 TB4
    WHERE 1=1
	AND TB3.COL2=TB4.COL1
	AND TB4.COL7='N'
	AND TB3.COL8 <>'NM'
	GROUP BY COL2,COL3
    )TR ON 1=1
	AND TR.COL2=TL.COL2
    AND TR.COL3=TL.COL3
	LEFT OUTER JOIN
	(
	SELECT COL1, SUM(COL9) AS COL10
    FROM (SELECT COL1, COL2, SUM(COL11) AS COL9
			FROM TABLE5 TB5
		  WHERE 1=1
		  AND COLYMD BETWEEN #YMD1# AND #YMD2#
		  AND COL1='DATA'
          GROUP BY COL1,COL2
          )TBLST
    WHERE 1=1
    AND TBLST.COL11 > 0
	GROUP BY COL1;
	)TBE
	ON 1=1 AND TL.COL1=TBE.COL1
WHERE 1=1
AND TL.SUM_COL0>0
ORDER BY COL2
WITH UR

테이블과 컬럼 명은 변경했고, 더 많은 컬럼이 쿼리문에는 존재하지만 모두 적기에는 너무 힘들 것 같아 간소화했다.


보고나니 제대로 알아보는 게 이상한 거네;;

profile
⚽⚾데굴데굴 굴러가는 내 맘대로 벨로그🏀🏐

0개의 댓글