-
[데이터베이스] 데이터베이스 언어 SQL (2/3)IT/데이터베이스 2022. 10. 10. 21:16
본 포스팅은 "데이터베이스 개론 [2판]" 도서로 공부한 내용을 요약하기 위한 포스팅입니다.
SQL을 이용한 데이터 조작
1. SQL의 데이터 조작 기능
SQL의 데이터 조작 기능은 원하는 데이터 검색, 새로운 데이터 삽입, 데이터 수정, 데이터 삭제로 분류할 수 있다.
2. 데이터의 검색
2-1. 기본 검색
기본 검색을 위한 SELECT 문의 기본 형식은 다음과 같다.
SELECT [ALL or DISTINCT] 속성_리스트 FROM 테이블_리스트;
SELECT 사용 시 "속성_리스트" 부분에 작성한 속성만이 결과 테이블로 표시되게 된다.
# 각 CASE별 SELECT 문 이후에 "FROM 제품;" SQL문은 생략함 # CASE 1. 단일 속성 선택 SELECT 제품명 # CASE 2. 다중 속성 선택 SELECT 재고량, 단가, 제조업체 # CASE 3. 모든 속성 선택 SELECT *
DISTINCT 키워드를 사용하면 결과테이블에서 중복을 제거하고 한 번씩만 출력되도록 할 수 있으며,
AS 키워드를 사용하면, 결과 테이블에 표현되는 속성명을 변경할 수 있다.
(실제 테이블에서는 변경 X)
2-2. 산술식을 이용한 검색
SELECT 키워드와 함께 산술식을 제시할 수 있다.
예시. 제품 테이블에서 제품명과 단가 속성을 검색하되, 단가에 500원을 더해 '조정 단가'라는 새 이름으로 출력
2-3. 조건 검색
SELECT문에 WHERE 키워드와 함께 비교 연산자 및 논리 연산자를 이용하여 조건 검색을 실행할 수 있다.
SELECT [ALL : DISTINCT] 속성_리스트 FROM 테이블_리스트 [WHERE 조건];
* SQL의 비교 연산자
연산자 의미 = 같다. <> 다르다. < 작다. <= 크다. >= 크거나 같다. * SQL의 논리 연산자
연산자 의미 AND 모든 조건을 만족해야 검색한다. OR 여러 조건 중 한 가지만 만족해도 검색한다. NOT 조건을 만족하지 않는 것만 검색한다. 예시. 제품 테이블에서 단가가 2,000원 이상이면서 3,000원 이하인 제품의 제품명, 단가, 제조업체 검색
2-4. LIKE를 이용한 검색
검색 조건을 부분적으로만 알고 있다면 LIKE 키워드를 이용해 검색할 수 있다.
* LIKE 키워드와 함께 사용할 수 있는 기호
기호 설명 % 0개 이상의 문자 (문자의 내용과 개수는 상관 없음) _ 1개의 문자 (문자의 내용은 상관 없음) * LIKE 키워드의 사용 예시
사용 예시 설명 LIKE '데이터%' '데이터'로 시작하는 문자열 (데이터로 시작하기만 하면 길이는 상관 없음) LIKE '%데이터' '데이터'로 끝나는 문자열 LIKE '%데이터%' '데이터'가 포함된 문자열 LIKE '데이터___' '데이터'로 시작하는 6자 길이의 문자열 LIKE '__한%' 세 번째 글자가 '한'인 문자열 예시1. 제품 테이블에서 제품명이 5글자인 제품의 제품명, 제조업체 검색
예시2. 제품 테이블에서 제조업체 이름이 '대한'으로 시작하는 제품의 제품명, 제조업체 검색2-5. 정렬 검색
SELECT문 사용 시 ORDER BY 키워드를 사용해서 결과 테이블의 내용을 사용자가 원하는 순서로 출력할 수 있다.
이 때, 다양한 조건으로 정렬 기준을 선택할 수 있으며, 먼저 나온 조건으로 정렬 후 동일한 값을 갖는 튜플들을 다음 정렬 기준으로 정렬한다.
SELECT [ALL : DISTINCT] 속성_리스트 FROM 테이블_리스트 [ WHERE 조건 ] [ ORDER BY 속성_리스트 [ASC : DESC] ]; # ASC : 오름차순 # DESC : 내림차순
예시. 제품 테이블에서 제품 단가가 1000원 이상인 제품의 제품번호 제품명과 단가를 출력.
단, 단가를 기준으로 오름차순 정렬, 단가가 같을 경우에는 제품번호를 기준으로 내림차순 정렬2-6. 집계 함수를 이용한 검색
특정 속성 값을 통계적으로 계산한 결과를 검색하기 위해 집계 합수(Aggregate function)을 이용할 수도 있다.
집계 함수는 열 함수(Column function)이라고도 하며, 개수, 합계, 평균, 최댓값, 최솟값의 계산 기능을 제공한다.
함수 의미 사용 가능한 속성의 타입 COUNT 속성 값의 개수 모든 데이터 MAX 속성 값의 최댓값 MIN 속성 값의 최솟값 SUM 속성 값의 합계 숫자 데이터 AVG 속성 값의 평균 - 집계 함수는 널인 속성 값은 제외하고 계산한다.
- 집계 함수는 WHERE 절에서는 사용할 수 없고 SELECT 절이나 HAVING 절에서만 사용할 수 있다.
예시 1. 한빛제과에서 제조한 제품의 재고량 합계를 제품 테이블에서 검색.
예시 2. 제품 테이블에서 제조업체의 수를 검색. (DISTINCT를 사용해서 중복값 제거)2-7. 그룹별 검색
테이블에서 특정 속성의 값이 같은 튜플을 모아 그룹을 만들고, 그룹별로 검색을 하기 위해 GROUP BY 키워드를 사용.
그룹에 대한 조건을 추가하려면 GROUP BY 키워드를 HAVING 키워드와 함께 사용한다.
SELECT [ALL : DISTINCT] 속성_리스트 FROM 테이블_리스트 [WHERE 조건] [GROUP BY 속성_리스트 [HAVING 조건]] [ORDER BY 속성_리스트 [ASC : DESC]];
예시 1. 제조업체별로 제조한 제품의 개수와 제품 중 가장 비싼 단가를 검색하되, 제품의 개수는 제품수라는 이름으로
가장 비싼 단가는 최고가라는 이름으로 출력
예시 2. 제품 테이블에서 제품을 3개 이상 제조한 제조업체별로 제품의 개수와, 제품 중 가장 비싼 단가를 검색.2-8. 여러 테이블에 대한 조인 검색 및 부속 질의문을 이용한 검색
위에서 설명한 다양한 검색 조건 방법 외에도
WHERE 테이블1.속성A = 'RANDOM' AND 테이블2.속성a 문을 이용한 여러 테이블 조인 검색 및
WHERE 절 안에 새로운 SELECT문을 삽입하는 부속 질의문을 이용한 검색 방법도 제공한다.
3. 데이터의 삽입
3-1. 데이터 직접 삽입
테이블에 튜플을 직접 삽입하는 INSERT 문의 기본 형식은 아래와 같다.
INSERT INTO 테이블_이름[(속성리스트)] VALUES (속성값_리스트);
INTO 절에서 속성 이름의 리스트는 생략할 수 있는데, 생략한 경우에는 테이블을 정의할 때 지정한 속성의 순서대로 VALUES 절의 속성 값이 삽입된다.
예시. 제품테이블에 새로운 튜플을 직접 추가하는 경우
3-2. 부속 질의문을 이용한 데이터 삽입
부속 질의문인 SELECT 문을 이용해 다른 테이블에서 검색한 데이터를 튜플로 삽입하는 것이 가능하다.
부속질의문을 이용한 INSERT 문의 기본 형식은 아래와 같다.
INSERT INTO 테이블_이름[(속성_리스트)] SELECT 문;
예시. 한빛제과에서 제조한 제품의 제품명, 재고량, 단가를 제품 테이블에서 검색하여 한빛제품 테이블에 삽입
INSERT INTO 한빛제품(제품명, 재고량, 단가) SELECT 제품명, 재고량, 단가 FROM 제품 WHERE 제조업체 = '한빛제과';
4. 데이터의 수정
테이블에 저장된 데이터를 수정하기 위해 필요한 SQL 명령어는 UPDATE다.
UPDATE 문의 기본 형식은 다음과 같다.
UPDATE 테이블_이름 SET 속성_이름1 = 값1, 속성_이름2 = 값2, ... [WHERE 조건];
예시. 제품 테이블에서 제품번호가 P07인 제품명을 '매콤비스킷'으로 수정하고 단가는 * 100
UPDATE 문에서도 WHERE 절 내부에 부속질의문을 포함하는 것이 가능하다.
5. 데이터의 삭제
테이블에 저장된 데이터를 삭제하기 위해 필요한 SQL 명령어는 DELETE다.
DELETE 문의 기본 형식은 아래와 같다.
DELETE FROM 테이블_이름 [WHERE 조건];
DELETE문의 사용방법은 UPDATE문가 동일하다.
'IT > 데이터베이스' 카테고리의 다른 글
[데이터베이스] 데이터베이스 설계 (E-R 모델과 릴레이션 변환규칙) (0) 2022.10.11 [데이터베이스] 데이터베이스 언어 SQL (3/3) (0) 2022.10.10 [데이터베이스] 데이터베이스 언어 SQL (1/3) (0) 2022.10.10 [데이터베이스] 관계 데이터 모델의 개념 (논리적 모델) (1) 2022.10.07 [데이터베이스] 데이터 모델링 (개념적 모델) (1) 2022.10.06