이번 포스팅에선 쿼리문을 어떻게 사용하는지 기본적인 작성법을 소개해보고자 합니다.
정말 간단하고 쉽지만 오랜만에 작성해보려고 하면 헷갈리는 부분입니다.
쿼리 좀 날려볼까? 하면서 작성하지만 에러메시지가 돌아오고 아주 작은 실수들로 짜증을 유발하게되죠.
그래서 자주 검색하게됩니다. 따로 찾지 않고 바로 보려고 포스팅을 해봅니다.
그럼 이제 쿼리문을 어떻게 작성하는지 알아보겠습니다. 아주 기본적인 작업들만 소개하도록 하겠습니다.
데이터 삽입, 삭제, 수정에 대한 내용들입니다. 사실 이정도면 다 아는 거라고 볼 수 있겠네요.
데이터를 삽입, 삭제, 수정을 할 수 있는 쿼리문은 다음과 같이 사용합니다.
1. 삽입
INSERT INTO 테이블(column1, column2, ....) VALUES(data1, data2, ....)
영어 단어 그대로 INSERT를 사용해서 데이터를 삽입합니다. 이때, 주의해야 하는 부분이 있는데요.
만약 column1이 VARCHAR타입이라면(문자열) data1은 'data1'과 같은 형태로 사용해야합니다.
이는 앞으로 나올 모든 쿼리문에서 동일하게 적용됩니다.
여러 테이블에 데이터를 삽입하고 싶을때 어떻게 해야할까요 ?
INSERT INTO 테이블1(column1, column2, ....) VALUES(data1, data2, ....) INSERT INTO 테이블2(column1, column2, ....) VALUES(data1, data2, ....) INSERT INTO 테이블3(column1, column2, ....) VALUES(data1, data2, ....)
위와 같은 방식으로 쿼리를 하나씩 여러 번 날린다면 정말 비효율적이겠죠?
예시처럼 3개정도야 상관없지만 테이블이 무수히 많다면 성능이 많이 저하될 것 입니다.
그래서 아래와 같은 방법이 존재합니다.
1.1 여러 테이블에 한 번에 삽입
INSERT ALL INTO 테이블1(column1, column2, ....) VALUES(data1, data2, ....) INTO 테이블2(column1, column2, ....) VALUES(data1, data2, ....) SELECT * FROM DUAL;
테이블1, 테이블2에 모두 데이터를 삽입할 수 있는 쿼리문입니다. 마지막 줄에 있는 SELECT문을 절대로 빼먹으면 안됩니다.
2. 삭제
DELETE FROM 테이블 WHERE 조건
테이블에서 조건에 부합되는 행을 삭제합니다. 테이블을 삭제하는 것이 아니고 테이블에 저장되어있는 행을 삭제하는 쿼리문입니다.
테이블을 삭제하고 싶은 분은 DROP 명령어를 사용하시면 됩니다. 이건 다른 글에서 소개해드리겠습니다.
3. 수정
UPDATE 테이블 SET column1 = data1, column2 = data2, .... WHERE 조건
테이블에서 조건에 부합되는 행을 찾고 그 행의 데이터를 수정합니다. column1을 data1으로, colum2를 data2로 ... 변경하는 쿼리문입니다.
4. 조건
WHERE 조건1 AND 조건2;
WHERE에 조건이 여러개면 AND를 사용해서 여러 조건을 조합할 수 있습니다. 물론 OR도 사용할 수 있습니다.
예를 들어 A가 1이면서 B가 2인 컬럼을 삭제하고 싶다면 WHERE A=1 AND B=2 와 같이 사용하면 됩니다.
정말 간단합니다. 자주 사용하지 않으면 잊어버릴뿐이죠.
이제 이 쿼리문을 실제로 어떻게 사용하는지 예시를 소개하겠습니다.
먼저 다음과 같은 테이블이 생성되어 있고 이 테이블에 데이터를 저장한다고 가정해보겠습니다.
CUSTOMER 테이블
Column name |
Data type |
NAME |
VARCHAR(100) |
AGE |
NUMBER |
ADDRESS |
VARCHAR(100) |
BLACKLIST 테이블
Column name |
Data type |
NAME |
VARCHAR(100) |
AGE |
NUMBER |
ADDRESS |
VARCHAR(100) |
ENROLLDATE |
DATE |
이 테이블에 데이터를 삽입, 삭제, 수정 등등의 작업을 하기 위해선 쿼리문을 만들어야겠죠?
먼저 CUSTOMER 테이블에 데이터를 삽입해보겠습니다.
INSERT INTO CUSTOMER (NAME, AGE, ADDRESS) VALUES('Gil', 15, 'Busan');
CUSTOMER 테이블에 NAME이 Gil, AGe가 15, ADDRESS가 Busan인 정보가 삽입됩니다.
INSERT ALL INTO CUSTOMER (NAME, AGE, ADDRESS) VALUES('Hong', 15, 'Seoul') INTO BLACKLIST (NAME, AGE, ADDRESS, ENROLLDATE) VALUES('Gil', 15, 'Busan', sysdate) SELECT * FROM DUAL;
CUSTOMER테이블에 NAME이 Hong, AGE가 15, ADDRESS가 Seoul인 정보를 삽입하고,
BLACKLIST테이블에 NAME이 Gil, AGE가 15, ADDRESS가 Busan인 정보를 삽입합니다.
이번엔 CUSTOMER 테이블의 데이터를 수정해보겠습니다.
UPDATE CUSTOMER SET NAME = 'Hong', AGE = 20, ADDRESS = 'Seoul' WHERE NAME='Gil';
NAME이 Gil인 데이터를 찾아서 NAME을 Hong, AGE를 20, ADDRESS를 Seoul로 수정합니다.
CUSTOMER 테이블의 데이터를 삭제해보죠.
DELETE FROM CUSTOMER WHERE AGE=15;
CUSTOMER 테이블에서 AGE가 15인 정보가 모두 삭제됩니다.
이번엔 여러 개의 조건을 조합해서 삭제해보겠습니다.
DELETE FROM CUSTOMER WHERE AGE=15 AND NAME='Gil';
CUSTOMER 테이블에서 AGE가 15이면서 NAME이 Gil인 정보가 삭제됩니다.
DELETE FROM CUSTOMER WHERE AGE=15 OR NAME='Dong';
이번엔 OR를 사용해봤습니다. CUSTOMER 테이블에서 AGE가 15 이거나 NAME이 Dong인 정보가 삭제됩니다.
이제 기본적인 쿼리문을 작성할 수 있게 되었습니다. 사실 저는 직접 디비에 쿼리를 사용하는 경우가 거의 없었습니다.
대부분 자바에서 디비에 데이터를 저장할 때 사용했었습니다. 그래서 다음으로 자바에서 어떻게 DB에 연결하고 어떻게 쿼리문을 날리는지 다음 글에서 소개해드리겠습니다.
'IT > Language' 카테고리의 다른 글
JAVA - PreparedStatement 사용하기 (2) | 2017.12.13 |
---|---|
JAVA - 오라클 DB에 쿼리 날리기( INSERT, DELETE, UPDATE) (0) | 2017.12.07 |
JAVA - 오라클 트랜잭션(Transaction) 명령어 - COMMIT, ROLLBACK, SAVEPOINT (0) | 2017.12.06 |
Java DOM파서 3편 - "<"를 가진 xml파일 파싱하기(특수문자 치환) (0) | 2017.12.05 |
오라클 시퀀스(Sequence) 사용 및 .NEXTVAL 초기화 (0) | 2017.12.03 |