DML 개요
지난 시간에는 데이터를 조작하는 명령어가 아닌 데이터를 정의하는 DDL(Data Definition Language)에 대해 테이블을 생성하고, 수정하고, 삭제하는 작업을 직접 해보았다. 오늘 다룰 내용은 데이터 조작에 중점을 두고 있는 DML(Data Manipulation Language)이다.
DML에서 'M'은 Manipulation을 의미하며, 데이터를 조작하는 데 사용하는 구체적인 명령어들을 포함하고 있다. DML의 핵심 명령어는 INSERT, SELECT, UPDATE, DELETE의 4가지로, 이 명령어들만 잘 이해하고 활용할 수 있다면 데이터베이스를 이용한 거의 모든 서비스를 구현할 수 있게 된다.
데이터 INSERT, SELECT 문법
첫 번째로 다룰 내용은 데이터를 테이블에 삽입하고, 이를 조회하는 작업이다. 이때 사용되는 명령어는 INSERT이다. INSERT 명령어의 기본적인 사용법은 INSERT INTO <테이블> VALUES <값 목록> 형식이다. 예를 들어, MEMBER 테이블에 모든 컬럼 값을 넣는 경우 INSERT INTO MEMBER VALUES ('newlec', '111', '홍길동', '남성', '1995-02-29', '010-2365-8956', 'newlec@newlecture.com', '2014-05-23');와 같이 사용할 수 있다.
하지만 데이터 입력 시, 모든 컬럼에 값을 넣는 상황은 드물다. 실무에서는 필수 컬럼과 선택적 컬럼이 있기 때문에 필요한 필드만 선택적으로 데이터를 넣을 수 있다. INSERT INTO MEMBER(ID, PWD) VALUES('newlec', '111');처럼 원하는 필드만, 원하는 순서대로 입력할 수 있다.
이러한 방식은 특정 컬럼을 지정하여 데이터를 삽입하므로, 지정하지 않은 나머지 컬럼에는 NULL 값이 들어가게 된다. NULL은 단순히 빈 공간이 아니라, 특수한 값으로 해당 컬럼이 초기화된다는 것을 의미한다.
데이터를 삽입한 후, 이를 조회하기 위해 사용하는 명령어가 SELECT이다. 기본적인 SELECT 구문은 SELECT * FROM MEMBER;와 같이 사용되며, 이는 테이블 내의 모든 데이터를 조회한다. SELECT는 다양한 옵션을 제공한다.
데이터 INSERT, SELECT 실습
"INSERT INTO MEMBER(ID, PWD) VALUES('newlec', '111');" 이 명렁어는 MEMBER 테이블에 ID와 PWD 필드만 값을 넣겠다는 의미이다. 일반적으로 INSERT 명령어에서 컬럼을 지정하지 않으면 테이블의 모든 컬럼에 대해 값을 삽입해야 한다. 그러나, 특정 컬럼만 지정하여 값을 넣을 수도 있다. 이때 ID와 PWD에만 값을 넣고 나머지 컬럼에는 NULL이 자동으로 입력된다.
그리고 SELECT * FROM MEMBER; 이 명령어를 통해 MEMBER 테이블에 들어있는 모든 데이터를 조회할 수 있다. 첫 번째로 삽입한 데이터는 ID와 PWD만 입력되었고, 나머지 컬럼은 NULL로 채워진 것을 확인할 수 있다.
같은 방식으로 데이터를 한 번 더 삽입해보자 INSERT INTO MEMBER(ID, PWD) VALUES('dragon', '111'); 이 명령어를 통해 dragon이라는 ID를 가진 데이터를 삽입한다. 이후 다시 SELECT 명령어를 실행하면 두 개의 데이터가 삽입된 것을 확인할 수 있다.
SQL에서 SELECT 명령어는 데이터를 조회할 때 사용되며, 조회할 컬럼을 지정하여 필요한 정보만 추출할 수 있다. 이전 예제에서는 SELECT * FROM MEMBER;를 사용하여 MEMBER 테이블의 모든 컬럼을 조회하였다. 여기서 * 기호는 테이블의 모든 컬럼을 의미하며, 데이터를 모두 가져오겠다는 의도로 사용된다.
특정 컬럼만 지정하여 데이터를 조회할 수 있는데 SELECT id, name, pwd FROM MEMBER;처럼 MEMBER 테이블에서 id, name, pwd 컬럼만 선택하여 데이터를 조회한다. 실행 결과를 보면, ID와 PWD는 값이 입력된 상태이고, NAME은 입력되지 않아 NULL 값으로 표시된다.
※ SQL에서 예약어와 컬럼명은 대소문자를 구분하지 않는다.
데이터 조회 시, 애플리케이션의 요구에 맞춰 컬럼명을 다르게 표시해야 하는 경우가 있다. 예를 들어, 데이터베이스의 컬럼명이 id이지만 애플리케이션에서는 user_id라는 이름으로 컬럼을 요구하는 상황을 가정할 수 있다. 이러한 경우, 테이블을 수정하지 않고 SQL 쿼리에서 컬럼명을 변경하여 제공할 수 있다.
"SELECT id AS user_id, name, pwd FROM MEMBER;" 이렇게 id 컬럼을 user_id라는 별칭으로 지정하여 조회하면 결과물에서 id 컬럼이 user_id로 표시되며, 애플리케이션이 요구하는 컬럼명으로 데이터를 제공할 수 있게 된다.
즉 테이블 구조를 수정할 필요 없이 미리 정해진 컬럼명을 요구하는 애플리케이션에 맞게 쿼리에서 필요한 이름으로 데이터를 맞춤 제공할 수 있다.
AS 키워드는 별칭을 명시적으로 지정하기 위해 사용되지만, 생략해도 동일하게 작동한다. 대부분의 개발자들이 AS를 생략하는 방식으로 작성하는 것을 선호한다.
만약 SQL 쿼리에서 "user id"처럼 컬럼명에 공백을 포함시키고자 할 때 어떻게 해야할까? 그럴땐 큰따옴표(" ")를 사용하여 공백이 포함된 별칭을 지정할 수 있다. "SELECT id "user id", name, pwd FROM MEMBER;" 쿼리를 실행하면 컬럼명이 user id로 출력되며, 공백을 포함한 상태로 표시된다. 중요한 점은, 큰따옴표를 사용하면 해당 문자열의 대소문자와 형식을 그대로 유지한다는 것이다. 따라서 소문자로 작성된 경우 그대로 소문자로 출력되며, 사용자가 원하는 형식 그대로 유지된다.
즉 큰따옴표를 사용하여 컬럼명을 변경할 때, 대소문자를 정확히 지정해야 원하는 형태로 출력된다. 이 방법 또한 특정 애플리케이션이 요구하는 컬럼명 형식을 맞추거나, 사용자에게 가독성 있는 형태로 데이터를 제공할 때 유용하다.
참고자료
[1] 유튜브 채널 뉴렉처 - 데이터 조작하기 #1(INSERT/SELECT)
'💾 Database > Oracle' 카테고리의 다른 글
[오라클] 10.트랜잭션 처리(Commit, Rollback) (0) | 2024.09.10 |
---|---|
[오라클] 9.DML(Update, Delete) (2) | 2024.09.09 |
[오라클] 7.ALTER(수정, 삭제, 추가) (0) | 2024.08.31 |
[오라클] 6.SQL 데이터 타입(숫자형) (0) | 2024.08.31 |
[오라클] 5.SQL 데이터 타입(문자열) (2) | 2024.08.30 |