brunch

You can make anything
by writing

C.S.Lewis

by 김유환 Oct 09. 2019

12. INSERT, UPDATE, DELETE

데이터 삽입, 수정, 삭제를 위한 SQL 문법 이해하기

배경

과거 테이블에 데이터 삽입 글과 데이터 수정 및 삭제하기 글에서 우리는 TablePlus 가 제공하는 테이블 형태의 GUI 를 이용해서 데이터를 삽입, 수정, 삭제했습니다. 오늘은 동일한 작업을 SQL 문법인 INSERT, UPDATE, DELETE 를 이용해서 진행하고자 합니다.


일반적으로 10개 미만 정도의 데이터를 삽입, 수정, 삭제하는 과정은 GUI를 통해 진행하는 것이 편합니다. 하지만, 10개 이상 혹은 100개, 1000개의 데이터를 일일이 수동으로 삽입, 수정, 삭제하는 것은 매우 비효율적이거나 불가능한 작업입니다. SQL 문법을 활용하면 쉽고 안정적으로 데이터를 삽입, 수정, 삭제할 수 있습니다. 



INSERT

지난 글 SQL 이란 무엇인가 에서 살펴봤듯이, 데이터베이스는 SQL 을 이해하기 위해 키워드와 규칙 등을 정의해두고 있습니다. INSERT 는 데이터를 삽입할때 사용하는 키워드로 규칙은 아래와 같습니다.

문법으로 보면 약간 어려워보이지만, 예시를 통해서 천천히 살펴봅시다. 아래 그림에 있는 데이터를 데이터베이스에 삽입해보도록 합시다. 예전에는 TablePlus가 제공해주는 GUI를 이용해 삽입을 해봤다면, 이번에는 SQL을 이용해 삽입해보는 것입니다.


SQL INSERT 문을 이용해서 위의 데이터를 삽입하는 SQL 문은 다음과 같습니다. 위에서 설명한 문법과 대조해가시면서 살펴보시면 좋을 것 같습니다. 지금부터는 아래 SQL문에서 궁금할 만한 부분들에 대해서 자세히 설명해보도록 하겠습니다.


따옴표(')

데이터베이스에 테이블 만들기에서 우리는 테이블을 만들때, 데이터 타입을 선택하였습니다. 그 중 이름, 주민번호, 성별 열은 문자열로 선택했던것을 기억하실 겁니다. SQL 에서는 문자 데이터를 입력할때는 따옴표(') 사이에 문자열을 입력하시면 됩니다. 따옴표로 묶는 이유는 문자열 안에는 띄어쓰기를 DBMS 가 이해하기 입니다. SQL 이란 무엇인가 글에서 다루었던 것처럼 DBMS 는 띄어쓰기를 기반으로 SQL 문법을 이해하는데, 따옴표로 문자 데이터의 시작과 끝을 알리지 않으면 문법을 해석하기 매우 어려워지기 때문입니다. 반면, 숫자 데이터 타입은 띄어쓰기를 포함하지 않기 때문에 숫자 그대로 입력하시면 됩니다.


날짜 데이터 타입 (YYYY-MM-DD)

날짜 데이터 타입의 경우 문자 데이터와 동일하게 따옴표 사이에 연-월-일 형태로 입력하시면 됩니다. 날짜 데이터 타입은 입력 형태가 정해져있습니다. 날짜 데이터타입 (date)는 YYYY-MM-DD 라고 보통 표현합니다. Y는 Year, M은 Month, D는 Day를 의미합니다. YYYY라는 표현은 2019년을 19라고 표현하지 말고 2019 4개의 자릿수로 입력하라는 의미입니다. MM 역시 6월을 6이라고 적지 말고 06이라고 적으라는 의미입니다. 이 정해진 규칙에 따라서 위 SQL 문에서도 2019년 3월 14일을 2019-03-14 라고 적으시면 됩니다. 날짜와 시간을 포함하는 데이터 타입인 데이트타임 (datetime)의 경우 YYYY-MM-DD hh:mm:ss 형태로 입력하도록 되어있습니다. 2019년 8월 19일 4시 30분 28초는 '2019-08-19 04:30:28' 로 입력하며 2019년 8월 20일 14시 28분 10초는 '2019-08-20 14:28:10' 라고 입력하면 됩니다.



INSERT (여러 데이터 삽입)

만약, 여러개의 데이터를 동시에 넣으려면 어떻게 하면 될까요? INSERT 문을 한번 만들어서 요청하고, VALUES의 값을 바꿔서 또 돌리면 되지만, SQL 은 이를 한번에 하는 방법을 제공하고 있습니다. 아래 데이터를 넣고자 하는 상황을 가정합시다.


이를 SQL INSERT 문으로 만들면 아래와 같습니다. 괄호로 묶여있는 VALUES 가 하나의 행을 의미합니다. 쉼표(,)로 또 다른 행 정보를 입력하면 여러개의 데이터를 한번에 입력할 수 있습니다.


UPDATE

이번에는 데이터베이스에 저장되어있는 데이터를 수정하는 UPDATE 문에 대해서 알아보도록 합시다. INSERT 때와 마찬가지로, 문법에 대해서 간단히 알아봅시다.

이 부분 역시 예시를 통해 알아보도록 합시다. 데이터를 입력하다보니, 실수로 아래 사용자의 키정보를 168.3이 아닌 186.3으로 입력하고 데이터를 삽입해버렸다고 가정합시다. 186.3으로 데이터베이스에 저장되어있는 값을 168.3으로 변경하려고 합니다.


UPDATE 문으로 표현하면 아래와 같습니다. 각 요소들에 대해서 하나씩 살펴보도록 합시다.

값 변경 (SET)

SET 뒤에는 바꾸고 싶은 열과 해당 열에 들어갈 값입니다. 등호(=) 표시는 동일함을 의미하지만, 코드에서는 오른쪽에 있는 값을 왼쪽에 할당하는 것을 의미합니다. 다시 말해, 168.3이라는 값을 height 라는 열에 할당하는 의미입니다. 뒤에 값을 적을때는 INSERT 문과 동일하게 문자나 날짜 데이터는 따옴표로 묶어서 입력하시면 됩니다.


조건문(WHERE)

수 많은 데이터중에 어떤 데이터를 선택해서 변경할지 조건을 나타냅니다. 예전 테이블에서 데이터 선택하기에서 다루었던 TablePlus 의 필터 기능과 동일하다고 생각하시면 됩니다. 여기에서는 주민등록번호를 이용해서 조건문을 걸었습니다.


업데이트는 조건에 걸리는 모든 데이터에 대해서 값을 변경합니다. 예를 들어, 아래와 같이 조건문을 주게되면 성별이 여자인 모든 데이터에 대해서 키를 168.3으로 변경하게 됩니다. 만약, WHERE 를 사용하지 않고 UPDATE 와 SET 만으로 SQL 문을 만들어 요청한다면, 현재 저장되어있는 모든 데이터를 대상으로 값 변경이 일어나게 됩니다.

기본키 (PRIMARY KEY)

바로 이 시점이 키본키 이해하기 글에서 다루었던 기본 키가 중요해지는 순간입니다. 기본 키는 테이블 내에서 유일하게 존재하는 값의 조합이라고 설명했습니다. 중복 된 기본 키 조합은 존재할 수 없는 것이죠. 그러므로, 조건 WHERE 에 기본키에 해당하는 조합의 값을 설정하면 단 하나의 행만 값을 변경할 수 있게 됩니다. 사용자 테이블에서는 주민등록번호가 기본키에 해당하기 때문에, WHERE 에 주민등록번호(rrn) 조건을 넣으면 딱 1명의 데이터만 수정되게 됩니다. 반면, 성별 (gender) 을 조건에 넣으면 기본 키가 아니기 때문에 여러개의 데이터가 변경될 가능성이 있습니다.



DELETE

마지막으로, SQL 문법을 이용해서 데이터를 삭제해보도록 합시다. 데이터 삭제에서 사용하는 키워드인 DELETE 문의 문법은 아래와 같습니다.


DELETE 는 상대적으로 간단합니다. '이 테이블에서 데이터를 삭제할 것인데 그 조건은 다음과 같다' 형식입니다. UPDATE 와 마찬가지로 WHERE 조건이 없이 DELETE 문을 실행시키면, 모든 데이터가 삭제됩니다. 간단한 예제 하나만 다루도록 합시다. 약간 현실적이지 않지만, 키가 180 이상인 사용자 데이터는 모두 삭제한다고 가정합시다. 이를 DELETE 문으로 만들면 아래와 같습니다.


부등호

WHERE에 조건을 설정할때는 우리가 알고있는 등호와 부등호를 사용하면 됩니다. 180 이상은 180을 포함하는 개념이기 때문에, 크다 (>) 와 같다 (=) 를 한번에 사용하였습니다. 조건에 사용될 수 있는 등호 조합은 아래와 같습니다.


마치며

오늘 글에서는 데이터 삽입, 수정, 삭제를 위한 SQL 문법을 배워보았습니다. 이제, TablePlus 에서 SQL 입력창을 열고 직접 INSERT, UPDATE, DELETE 문을 사용해보세요. SQL을 작성하고 Run Current 버튼을 통해 DBMS 에 요청을 전달하면 아래와 같은 결과를 볼 수 있습니다. 1개의 요청(Query)이 성공했다. 3개의 열(rows)이 추가되었다는 의미입니다. 다음 글에서는 데이터를 추출하기 위한 문법인 SELECT 에 대해서 다뤄보도록 하겠습니다.



브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari