IT's 우

Database MySQL_(SQL을 이용한 데이터 조작)SELECT 본문

데이터베이스

Database MySQL_(SQL을 이용한 데이터 조작)SELECT

디우 2021. 1. 22. 15:44
728x90

데이터의 검색

 

▷기본 검색

 

SELECT [ ALL | DISTINCT ] 속성_리스트 FROM 테이블_리스트;

 

 

ex) 모든 속성 검색! 속성의 이름을 전부 나열하지 않고 *을 사용할 수 있다. *를 사용하면 결과 테이블의 속성 순서가 원본 테이블이 정의한 속성 순서와 같다.

 

 

 

결과 테이블이 중복을 허용하도록 all 키워드를 명시적으로 사용해도 된다.

 

 

 

결과 테이블에서 투플의 중복을 제거하고 한 번씩만 출력되도록 하려면 distinct 키워드를 사용한다.

 

 

결과 테이블에 출력되는 속성의 이름을 다른 이름으로 바꾸어 출력할 수도 있다. AS 키워드를 변경할 이름과 함께 지정하면 된다. 원래 테이블의 속성 이름이 실제로 바뀌는 것은 아니다. SELECT 문의 결과 테이블에서만 지정한 이름으로 출력되는 것뿐이다. 지정하는 이름에 공백이 포함되어 있으면 오라클에서는 큰따옴표로 묶어주고 MS SQL 서버에서는 큰따옴표나 작은따옴표로 묶어 주어야 한다. 그리고 AS 키워드는 생략할 수 있다.

 

 

 

 

 

▷ 산술식을 이용한 검색

 

SELECT 키워드와 함께 산술식을 제시할 수 있다. 산술식은 속성의 이름과 +, -, *, / 등의 산술 연산자, 상수로 구성한다. 테이블에 있는 속성의 값이 실제로 변경되는 것은 아니다. 결과 테이블에서만 계산한 결과 값을 출력한다.

 

 

▷ 조건 검색

 

조건을 만족하는 데이터만 검색하는 SELECT 문의 기본형식

SELECT [ ALL | DISTINCT ] 속성_리스트 FROM 테이블_리스트 [ WHERE 조건 ];

 

 

 

 

 

▷ LIKE를 이용한 검색

LIKE 키워드는 문자열을 이용하는 조건에만 사용할 수 있다.

기호 설명
% 0개 이상의 문자 (문자의 내용과 개수는 상관 없음)
_ 1개의 문자 (문자의 내용은 상관 없음)
사용 예 설명
LIKE '데이터%' 데이터로 시작하는 문자열 (데이터로 시작하기만 하면 길이는 상관 없음)
LIKE '%데이터' 데이터로 끝나는 문자열 (데이터로 끝나기만 하면 길이는 상관 없음)
LIKE '%데이터%' 데이터가 포함된 문자열
LIKE '데이터_ _ _' 데이터로 시작하는 6자 길이의 문자열
LIKE '_ _한%' 세 번째 글자가 '한'인 문자열

 

 

▷ NULL을 이용한 검색

검색 조건에서 특정 속성의 값이 널 값인지를 비교하려면 IS NULL 키워드를 사용한다. 반대로 특정 속성의 값이 널 값이 아닌지를 비교하려면 IS NOT NULL 키워드를 사용한다.

검색 조건에서 널 값은 다른 값과 크기를 비교하면 모두 거짓이 된다.

 

 

 

▷ 정렬 검색

select 문의 검색 결과 테이블은 일반적으로 DBMS가 정한 순서로 출력된다. 결과 테이블의 내용을 사용자가 원하는 순서로 출력하려면 ORDER BY 키워드를 사용한다.

ORDER BY 키워드와 함께 정렬 기준이 되는 속성을 지정하고, 오름차순 정렬이면 ASC, 내림차순 정렬이면 DESC로 표현한다. 특별히 지정하지 않으면 오름차순으로 기본 정렬한다.

 

 

 

 

 

▷  집계 함수를 이용한 검색

 특정 속성 값을 통계적으로 계산한 결과를 검색하기 위해 집계 함수(aggregate function)을 이용할 수 있다. 집계 함수 열 함수(column function)라고도 하며 개수, 합계, 평균, 최댓값, 최솟값의 계산 기능을 제공한다.

- 집계 함수는 널인 속성 값은 제외하고 계산한다.

- 집계 함수는 WHERE 절에서는 사용할 수 없고 SELECT 절이나 HAVING 절에서만 사용할 수 있다.

함수 의미 사용 가능한 속성의 타입
COUNT 속성 값의 개수 모든 데이터
MAX 속성 값의 최댓값
MIN 속성 값의 최솟값
SUM 속상 값의 합계 숫자 데이터
AVG 속상 값의 평균

 

 

▷ 그룹별 검색

테이블에서 특정 속성의 값이 같은 투플을 모아 그룹을 만들고, 그룹별로 검색을 하기 위해 GROUP BY 키워드를 사용한다. 그룹에 대한 조건을 추가하려면 GROUP BY 키워드를 HAVING 키워드와 함께 사용하면 된다.

 

 

 

 

▷ 여러 테이블에 대한 조인 검색

여러 개의 테이블을 연결하여 데이터를 검색하는 것을 조인 검색이라 한다. 조인 검색을 하려면 테이블을 연결해주는 속성이 필요하고 이 속성을 조인 속성이라 한다. 테이블을 연결하려면, 조인 속성의 이름은 달라도 되지만 도메인은 반드시 같아야 한다. 일반적으로 테이블의 관계를 나타내는 외래키를 조인 속성으로 이용한다.

ex) select 제품.제품명 from 제품, 주문 where 주문.주문고객 = 'banana' and 제품.제품번호=주문.주문제품;

 

▷ 부속 질의문을 이용한 검색

selelct 문 안에 또 다른 selelct 문을 포함할 수도 있다. 다른 select 문 안에 들어있는 select 문을 부속 질의문 또는 서브 질의문이라 한다.그리고 다른 selelct 문을 포함하는 slelect 문을 상위 질의문 또는 주 질의문이라 한다. 부속 질의문은 괄호로 묶어 작성하고 order by 절을 사용할 수 없으며, 상위 질의문보다 먼저 수행된다. 부속질의문을 이용한 검색은 이어 달리기처럼 부속 질의문을 먼저 수행하고, 그 결과를 이용해 상위 질의문을 수행하여 최종 결과를 테이블을 반환한다.

 

- 다중 행 부속 질의문에 사용 가능한 연산자

 

연산자 설명
IN 부속 질의문의 결과 값 중 일치하는 것이 있으면 검색 조건이 참
NOT IN 부속 질의문의 결과 값 중 일치하는 것이 없으면 검색 조건이 참
EXITS 부속 질의문의 결과 값이 하나라도 존재하면 검색 조건이 참
NOT EXITS 부속 질의문의 결과 값이 하나도 존재하지 않으면 검색 조건이 참
ALL 부속 질의문의 결과 값 모두와 비교한 결과가 참이면 검색 조건을 만족(비교 연산자와 함께 사용)
ANY 또는 SOME 부속 질의문의 결과 값 중 하나라도 비교한 결과가 참이면 검색 조건을 만족(비교 연산자와 함께 사용)

 

 

 

 

출처: 데이터베이스 개론 김연희 지음

728x90
반응형