[10] SQL 데이터제어

hyunsooo·2023년 6월 15일
0
post-thumbnail

1. SQL의 데이터 조작 기능

데이터 조작은 데이터 검색, 삽입, 삭제, 수정을 담당하는 기능입니다.

1.1. 데이터 검색 : SELECT

데이터 검색을 담당하는 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'
                );

1.2. 데이터 삽입 : INSERT

데이터 직접 삽입

INTO 키워드와 함께 튜플을 삽입할 테이블의 이름과 속성의 이름을 나열하여 사용합니다. 이때 INTO절의 속성 이름과 VALUES절의 속성 값은 순서대로 일대일 대응이 되어야 한다.

INSERT
INTO 테이블_이름[(속성_리스트)]
VALUES (속성값_리스트);

# 예시

INSERT
INTO 고객(고객아이디, 고객이름, 나이, 등급, 직업, 적립금)
VALUES ('test', '주인공', 30, 'vip', '학생', 100)

서브쿼리를 이용한 삽입

INSERT
INTO 테이블_이름[(속성_리스트)]
SELECT;

# 예시

INSERT
INTO A제품(제품명, 재고량, 단가)
SELECT 제품명, 재고량, 단가
FROM 제품
WHERE 제조업체 = 'A제과'

1.3. 데이터 수정: UPDATE

UPDATE를 통해 데이터를 수정할 수 있습니다. UPDATE는 SET 키워드 다음에 속성 값을 어떻게 수정할지 정의할 수 있습니다. 추가로 WHERE절을 함께 사용하면 WHERE절의 조건을 만족하는 튜플에 대해서만 속성 값을 수정할 수 있습니다.

UPDATE 테이블_이름
SET 속성_이름1 =1, 속성_이름2=2 ...
[WHERE 조건];

# 예시
UPDATE 고객
SET 등급 = 'silver', 할인율 = 10;

# 예시
UPDATE 고객
SET 등급 = 'gold', 할인율 = 20
WHERE 등급 = 'silver';

1.4. 데이터 삭제: DELETE

DELETE를 이용하여 데이터를 삭제할 수 있습니다. WHERE을 함께 이용하여 특정 조건을 만족하는 튜플만 삭제할 수 있습니다. 그렇지 않다면 테이블에 존재하는 모든 튜플을 삭제하게 됩니다.

DELETE
FROM 테이블_이름
[WHERE 조건];
profile
CS | ML | DL

0개의 댓글