데이터 조작은 데이터 검색, 삽입, 삭제, 수정을 담당하는 기능입니다.
데이터 검색을 담당하는 SELECT 문에 대해서 알아보겠습니다. SELECT키워드와 함께 검색하고 싶은 속성의 이름을 나열하며, FROM키워드와 함께 검색하고 싶은 속성이 있는 테이블의 이름을 나열하여 사용할 수 있습니다.
SELECT [ALL|DISTINCT] 속성_리스트 AS 별칭, 속성_리스트 + 100
FROM 테이블_리스트
WHERE 조건
GROUP BY 속성_리스트
HAVING 집계함수 조건
ORDER BY 속성_리스트 [ASC | DESC];
ALL : 결과 테이블이 튜플의 중복을 허용하도록 지정 (DEFAULT)
DISTINCT : 결과 테이블이 튜플의 중복을 허용하지 않도록 지정
AS : 속성의 이름을 원하는 별칭으로 변환
산술식 : 산술 연산을 이용하여 결과를 변환
WHERE : WHERE 절에 비교 연산자와 논리 연산자를 이용하여 조건을 사용하여 검색
비교연산자 : =, >, <, >=, <=, <>(!=)
논리연산자 : and, or, not
LIKE : 문자열 속성과 같이 사용하여 부분적으로 일치하는 데이터 검색 (* : 0개 이상 문자, ?: 한개의 문자)
IS NULL : 속성값이 NULL인 경우만 검색
ORDER BY : ORDER BY 절을 이용하여 특정 속성을 기준으로 정렬한 결과를 검색
IS NOT NULL : 속성값이 NULL이 아닌 경우만 검색
BETWEEN a AND b : 범위를 이용한 검색 (a이상부터 b이하, and로 구현 가능)
IN : 집합을 이용한 검색 (or로 구현가능 단, 매우 길어짐)
집계 함수 : 집계 함수(개수, 합계, 평균, 최대값, 최소값, 분산 등)를 사용시 SELECT절이나 HAVING절에서만 사용할 수 있음.
COUNT : 속성값의 개수
MAX : 최대값
MIN : 최소값
SUM : 합계
AVG : 평균
GROUP BY : 특정 속성으로 그룹을 지어 그룹별 검색을 하고 싶을때 사용
HAVING : GROUP BY와 같이 사용해 그룹에 대한 조건을 작성 (그룹별로 묶게 되면 일반적으로 그룹별 집계를 하게 됨)
여러 테이블에 대한 조인 검색
조인 속성(테이블을 연결해주는 속성, 일반적으로 외래키)을 이용하여 WHERE절에 조인 조건을 제시하여 연결시킨다.
예시 : 판매 데이터베이스에서 banana 고객이 주문한 제품의 이름을 검색
SELECT 제품.제품명
FROM 제품, 주문
WHERE 제품.제품번호 = 주문.주문제품 AND 주문.주문고객 = 'banana';
서브 쿼리를 사용한 검색 : SELECT문 안에 다른 SELECT문을 포함하여 검색( 하위 SELECT문을 먼저 실행한 결과를 상위 SELECT에서 실행)
단일 행 서브 쿼리 : 하위 SELECT문의 결과가 단일 행으로 반환 되는 경우 (비교연산자 가능)
다중 행 서브 쿼리 : 하위 SELECT문의 결과가 다중 행으로 반환 되는 경우 (비교연산자 불가능, IN, NOT IN, EXISTS, NOT EXISTS, ALL, ANY 등 사용)
# 단일 행 (제품명이 달콤비스킷인 제조업체는 한개)
SELECT 제품명, 단가
FROM 제품
WHERE 제조업체 = (SELECT 제조업체
FROM 제품
WHERE 제품명 = '달콤비스킷'
);
# 다중 행 (바나나 고객이 주문한 제품은 총 세개)
SELECT 제품명, 제조업체
FROM 제품
WHERE 주문제품 IN (SELECT 주문제품
FROM 제품
WHERE 주문고객 = 'banana'
);
데이터 직접 삽입
INTO 키워드와 함께 튜플을 삽입할 테이블의 이름과 속성의 이름을 나열하여 사용합니다. 이때 INTO절의 속성 이름과 VALUES절의 속성 값은 순서대로 일대일 대응이 되어야 한다.
INSERT
INTO 테이블_이름[(속성_리스트)]
VALUES (속성값_리스트);
# 예시
INSERT
INTO 고객(고객아이디, 고객이름, 나이, 등급, 직업, 적립금)
VALUES ('test', '주인공', 30, 'vip', '학생', 100)
서브쿼리를 이용한 삽입
INSERT
INTO 테이블_이름[(속성_리스트)]
SELECT 문;
# 예시
INSERT
INTO A제품(제품명, 재고량, 단가)
SELECT 제품명, 재고량, 단가
FROM 제품
WHERE 제조업체 = 'A제과'
UPDATE를 통해 데이터를 수정할 수 있습니다. UPDATE는 SET 키워드 다음에 속성 값을 어떻게 수정할지 정의할 수 있습니다. 추가로 WHERE절을 함께 사용하면 WHERE절의 조건을 만족하는 튜플에 대해서만 속성 값을 수정할 수 있습니다.
UPDATE 테이블_이름
SET 속성_이름1 = 값1, 속성_이름2=값2 ...
[WHERE 조건];
# 예시
UPDATE 고객
SET 등급 = 'silver', 할인율 = 10;
# 예시
UPDATE 고객
SET 등급 = 'gold', 할인율 = 20
WHERE 등급 = 'silver';
DELETE를 이용하여 데이터를 삭제할 수 있습니다. WHERE을 함께 이용하여 특정 조건을 만족하는 튜플만 삭제할 수 있습니다. 그렇지 않다면 테이블에 존재하는 모든 튜플을 삭제하게 됩니다.
DELETE
FROM 테이블_이름
[WHERE 조건];