TIL

20221123 TIL SQL을 배우다

jiwoosmile 2022. 11. 23. 09:47

 

DB를 사용해본 적은 있지만 JPA를 썼기 때문에 SQL을 직접적으로 써보지는 않았었다.

그런데 백도어 API에서 직접 jdbc로 디비를 조작하게 되면서 SQL문법을 익힐 필요성이 생겨서 SQL을 익히고 있다.

SQL은 CSS처럼 선언형 언어에 해당해서 어떻게 무엇을 할 지 정해주는 것이 아니라

'무엇을 했으면 좋겠다'를 작성해주면 실행된다.

 

데이터를 조작하는 일이 많기 때문에 데이터 조작에 관한 명령어들을 알아보자.

 

1.

INSERT INTO <table> (<column1>, <column2>, ...)
VALUES (<value1>, <value2>,...);

를 이용하면 테이블에 레코드(데이터)를 추가할 수 있다.

만약 모든 컬럼에 대한 데이터를 입력하는 경우(<column1>, <column2>, ...) 부분을 제외할 수 있는데, 

이 때 (<value1>, <value2>,...)에 테이블 컬럼과 동일한 순서로 데이터를 넣어야 한다.

 

2.

SELECT <column1>, <column2> 
FROM <table>
WHERE <condition>;

로 조건에 맞는 원하는 컬럼의 데이터를 조회할 수 있다.

만약 겹치지 않는 값들만 조회하고 싶다면 DISTINCT 키워드를 이용하면 된다.

정렬을 하고 싶다면 ORDER BY를 이용하면 된다.

특정 패턴에 해당하는 값을 찾고 싶다면 WHERE에서 LIKE을 이용하면 된다.

 

3. 

UPDATE <table> 
SET <column1> = <value1>, <column2> = <value2>, ... 
WHERE <condition>;

으로 조건에 해당하는 레코드들의 값을 수정할 수 있다.

 

4.

DELETE FROM <table>
WHERE <condition>;

으로 조건에 해당하는 레코드를 삭제할 수 있다.

 

 

UPDATE과 DELETE를 할 때 주의할 점은 WHERE문을 쓰지 않으면 모든 레코드에 적용이 되어버린다는 점이다.

꼭 적절한 WHERE문으로 원하는 레코드만 선택해서 실행하도록 해야한다.

그렇지 않으면 모든 데이터를 덮어씌우거나 모든 데이터를 삭제하게 된다.

 

날아가선 안 될 데이터가 날아가는 일은 서비스에서 아주 심각한 장애가 발생한 상황이다.

따라서 삭제 등과 같은 파급력이 큰 작업을 할 때는 항상 주의에 주의를 기울여야 한다는 생각이 다시 한 번 들었다.

그리고 혼자서 하기보다는 다른 누군가와 함께 확인을하면서 진행하는 것이 보다 안전할 것 같다.