티스토리 뷰
SQL의 데이터 조작 기능
데이터 검색 : SELECT
- 기본 검색
- SELECT 키워드와 함께 검색하고 싶은 속성의 이름 나열
- FROM 키워드와 함께 검색하고 싶은 속성이 있는 테이블의 이름 나열
- 검색 결과는 테이블 형태로 반환됨
- ALL : 결과 테이블이 투플의 중복을 허용하도록 지정, 생략 가능
- DISTINCT : 결과 테이블이 중복을 허용하도록 지정
IF 고객 테이블에 존재하는 모든 속성을 검색
SELECT 고객아이디, 고객이름, 나이, 등급, 직업, 적립급
FROM 고객;
----------------------
SELECT *
FROM 고객;
AS 키워드를 이용해 결과 테이블에서 속성의 이름을 바꾸어 출력 가능
SELECT 고객이름 AS 고객;
FROM 고객;
2. 산술식을 이용한 검색
- SELECT 키워드와 함꼐 산술식 제시
- 속성의 값이 실제로 변경되는 것은 아니고 결과 테이블에서만 계산된 결과 값이 출력됨
- 산술식을 이용한 검색
SELECT 제품명, 단가 + 500 AS 조정단가
FROM 제품;
조건 검색
조건을 만족하는 데이터만 검색
- WHERE 키워드와 함께 비교 연산자와 논리 연산자를 이용한 검색 조건 제시-조건에서 문자나 날짜 값은 작은 따옴표로 묶어서 표현
- -숫자 뿐만 아니라 문자나 날씨 값을 비교한 것도 가능
IF 제품테이블에서 한빛제과가 제조한 제품의 제품명, 재고량, 단가를 검색해보자
SELECT 제품명, 재고량, 단가
FROM 제품
WHERE 제조업체 = '한빛제과';
3. LIKE를 이용한 검색
- LIKE 키워드를 이용해 부분적으로 일치하는 데이터를 검색
- 문자열을 이용하는 조건에만 LIKE 키워드 사용 가능
IF 고객테이블에서 성이 김씨인 고객의 고객이름, 나이, 등급, 적립금을 검색
SELECT 고객이름, 나이, 등급, 적립금
FROM 고객
WHERE 고객이름 like"김*"
- NULL를 이용한 검색
- IS NULL 키워드를 이용해 검색 조건에서 특정 속성의 값이 널 값인지를 비교
- IS NOT NULL 키워드를 이용하면 특정 속성의 값이 널 값이 아닌지를 비교
IF 고객테이블에서 나이가 아직 입력되지 않은 고객의 이름을 검색해보자
SELECT 고객이름
FROM 고객
WHERE 나이 IS NULL
4. 정렬 검색
- OREDER BY 키워드를 이용해 결과 테이블 내용을 사용자가 원하는 순서로 출력
- ORDER BY 키워드와 함께 정렬 기준이 되는 속성과 정렬 방식을 지정-여러 기준에 따라 정렬하려면 정렬 기준이 되는 속성을 차례대로 제시
- -오름차순(기본): ASC / 내림차순: DSEC
IF 고객테이블에서 고객이름, 등급, 나이를 검색하되, 나이를 기준으로 내림차순 정렬해보자
SELECT 고객이름, 등급, 나이
FROM 고객
ORDER BY 나이 DESC;
5. 집계 함수를 이용한 검색
- 특정 속성 값을 통계적으로 계산한 결과를 검색하기 위해 집계 함수를 이용
- 집계 함수(aggregate function)
- 개수, 합계, 평균, 최대값, 최소값의 계산 기능을 제공
- 집계 함수(aggregate function)
- 집계 함수 사용 시 주의 사항-집계 함수는 WHERE 절에서는 사용할 수 없고 SELECT절이나 HAVING 절에서만 사용 가능
- -집계 함수는 널인 속성 값은 제외하고 계산함
IF 제품 테이블에서 모든 제품의 단가 평균을 검색해보자
SELECT AVG(단가)
FROM 제품;
IF 제품 테이블에서 제조업체의 수를 검색해보자
SELECT COUNT(DISTINCT 제조업체)) AS '제조업체 수'
FROM 제품;
#DISTINCT 중복제거
6. 그룹별 검색
IF 제품 테이블에서 주문제품별 수량의 합계를 검색
SELECT 주문제품, SUM(수량) AS 총주문수량
FROM 제품
GROUP BY 주문제품;
7. 여러 테이블에 대한 조인 검색
- 조인 검색: 여러 개의 테이블을 연결하여 데이터를 검색하는 것
- 조인 속성: 조인 검색을 위해 테이블을 연결해주는 속성
- 연결하려는 테이블 간에 조인 속성의 이름은 달라도 되지만 도메인은 같아야 함
- 일반적으로 외래키가 조인 속성으로 이용됨
- FROM 절에 검색에 필요한 모든 테이블을 나열
- WHERE 절에 조인 속성의 값이 같아야 함을 의미하는 조인 조건을 제시
- 같은 이름의 속성이 서로 다른 테이블에 존재할 수 있기 때문에 속성 이름 앞에 해당 속성이 소속된 테이블의 이름을 표시
- ex) 주문.주문고객
IF 판매 데이터베이스에서 banana 고객이 주문한 제품의 이름을 검색
SELECT 제품명
FROM 주문, 제품
WHERE 주문.주문고객 = 'banana' and 주문.주문제품=제품.제품번호;
8. 부속 질의문을 이용한 검색
- SLECT 문 안에 또 다른 SELECT 문을 포함하는 질의
- 상위 질의문(주 질의문): 다른 SELECT문을 포함하는 SELECT문
- 부속 질의문(서브 질의문): 다른 SELECT 문 안에 내포된 SELECT 문
- 괄호로 묶어서 작성, ORDER BY 절에 사용할 수 없음
- 단일 행 부속 질의문 : 하나의 행을 결과로 반환
- 다중 행 부속 질의문 : 하나 이상의 행을 결과로 반환
- 부속 질의문을 먼저 수행하고, 그 결과를 이용해 상위 질의문을 수행
- 부속 질의문과 상위 질의문을 연결하는 연산자가 필요
- 단일 행 부속 질의문은 비교연산자 사용가능
- 다중 행 부속 질의문은 비교 연산자 사용 불가
IF 판매 데이터베이스에서 달콤비스캣과 같은 제조업체에서 제조한 제품의 제품명과 단가를 검색해보자
SELECT 제품명, 단가
FROM 제품
WHERE 제조업체 = (SELECT 제조업체
FROM 제품
WHERE 제품명 = '달콤비스캣')
IF 판매 데이터베이스에서 banana 고객이 주문한 제품의 제품명과 제조업체를 검색해보자
SELECT 제품명, 제조업체
FROM 제품
WHERE 제품번호 IN (SELECT 주문제품
FROM 주문
WHERE 주문고객 = 'banana')
데이터 삽입 : INSERT
- 데이터 직접 삽입
- INTO 키워드와 함께 투플을 삽입할 테이블의 이름과 속성의 이름을 나열
- VALUES 키워드와 함께 삽입할 속성 값들을 나열
- INTO 절의 속성 이름과 VALUES절의 속성 값은 순서대로 일대일 대응되어야 함
- 부속 질의문을 이용한 데이터 삽입
- SELECT문을 이용해 다른 테이블에서 검색한 데이터를 삽입
데이터 수정 : UPDATE
- 테이블에 저장된 투플에서 특정 속성의 값을 수정
- SET 키워드 다음에 속성 값을 어떻게 수정할 것인지를 지정
- WHERE절에 제시된 조건을 만족하는 투플에 대해서만 속성 값을 수정
- WHERE 절을 생략하면 테이블에 존재하는 모든 투플을 대상으로 수정
데이터 삭제 : DELETE
- 테이블에 저장된 데이터를 삭제
- WHERE절에 제시한 조건을 만족하는 투플만 삭제
- WHERE절을 새약하면 테이블에 존재하는 모든 투플을 삭제해 빈 테이블이 됨
IF 판매 데이터베이스의 주문 테이블에 존재하는 모든 투플을 삭제해보자
DELETE
FROM 주문;
IF 판매 데이터베이스에서 정소화 고객이 주문한 내역을 주문 테이블에서 삭제해보자
DELETE
FROM 주문
WHERE 주문고객 IN (SELECT 고객아이디
FROM 고객
WHERE 고객이름 = '정소화');
참고 강의) http://www.kocw.net/home/cview.do?cid=9c591659f017851e
'DataBase System' 카테고리의 다른 글
DBCP 란? (1) | 2023.05.21 |
---|---|
데이터베이스와 파일시스템의 차이 (0) | 2023.05.21 |
SQL 정의(Structured Query Langauge) (0) | 2022.08.22 |
관계 데이터 연산 (0) | 2022.08.22 |
정규화 (0) | 2022.08.22 |