티스토리 뷰
1. SELECT 명령어
- 한 개 이상의 테이블에서 주어진 조건에 만족하는 레코드를 출력하는 명령문
- 관계 대수의 셀렉트, 프로젝트, 조인, 카티션 프로덕트 연산자의 기능을 모두 포함하는 명령문
- 필수절인 SELECT절과 부가적인 목적으로 사용하는 절을 혼합하여 검색 기능을 구체화
2. SELECT의 구문형식
SELECT [DISTINCT] 컬럼1, 컬럼2, … 컬럼n
FROM 테이블1[ INNER JOIN | OUTER JOIN
테이블2, INNER JOIN | OUTER JOIN
ON 조인조건식1
테이블3
… , INNER JOIN | OUTER JOIN
테이블m
ON 조인조건식n]
[ WHERE 조건식[중첩질의] ]
[ GROUP BY 컬럼1, 컬럼2, … 컬럼n
[HAVING 조건] ]
[ORDER BY 컬럼1[ASC | DESC], … 컬럼n[ASC | DESC]]
3. 데이터의 정렬
- ORDER BY절을 사용
- 검색 결과를 특정 컬럼에 대해 오름차순 또는 내림차순으로 정렬
- 오름차순 : ASC
- 내림차순 : DESC
- ASC와 DESC 모두 생략 가능하며, 생략시 기본으로 ASC가 적용
- 구문
SELECT 문 형식
ORDER BY 컬럼1[ASC | DESC],
...,
컬럼n[ASC | DESC]
- 사용 예시
- 학생의 계좌정보를 ‘잔액’ 기준으로 각각 오름차순, 내림차순으로 정렬하시오.
- SELECT * FROM 계좌 ORDER BY 잔액 ASC
- SELECT * FROM 계좌 ORDER BY 잔액 DESC
- 수강 정보를 ‘학생번호’ 기준으로 1차 오름차순으로 정렬하고, ‘과목코드’를 기준으로 2차 내림차순으로 정렬하시오.
- SELECT * FROM 수강 ORDER BY 학생번호 ASC, 과목코드 DESC
- 학생의 계좌정보를 ‘잔액’ 기준으로 각각 오름차순, 내림차순으로 정렬하시오.
4. 특수 연산자
- 범위, 부분 일치 여부, 포함 여부 등 RDBMS에서 사용되도록 고안된 연산자
- 종류
- BETWEEN : 컬럼값이 V1 ~V2사이에 존재하는지 검사
- ex ) 컬럼명 BETWEEN V1 AND V2
- LIKE
- 컬럼명 LIKE ‘V1%’ : V1으로 시작하는 문자열 검사
- 컬럼명 LIKE ‘%V1’ : V1으로 끝나는 문자열 검사
- 컬럼명 LIKE ‘%V1%’ : V1이 문자열 내부에 존재하는지 검사
- 컬럼명 LIKE IN ‘V1-’ : V1뒤에 한 문자만 일치하는지 검사
- IN : 컬럼값이 V1, V2, …, Vn 중 하나와 일치하는지 검사
- ex ) 컬럼명 IN ( V1, V2, …, Vn )
- BETWEEN : 컬럼값이 V1 ~V2사이에 존재하는지 검사
5. 특수 연산자의 사용
- 잔액이 20만원 이상 40만원 이하인 계좌의 계좌번호, 잔액, 학생번호를 출력하시오.
- SELECT 계좌번호, 잔액, 학생번호 FROM 계좌 WHERE 잔액 BETWEEN 200000 AND 400000
- SELECT 계좌번호, 잔액, 학생번호 FROM 계좌 WHERE 잔액 ≥ 200000 AND 잔액 ≤ 400000
- 과목 코드가 ‘COM’으로 시작하는 과목의 과목코드, 과목명, 이수구분을 출력하시오
- SELECT 과목코드, 과목명, 이수구분 FROM 과목 WHERE 과목코드 LIKE ‘COM%’
- 소속학과가 ‘컴퓨터학과’, ‘행정학과’, ‘법학과’인 교수의 교수이름, 직위, 소속학과를 출력하시오.
- SELECT 교수이름, 직위, 소속학과 FROM 교수 WHERE 소속학과 IN ( ‘컴퓨터학과’, ‘행정학과’, ‘법학과’ )
6. 집합 연산자
- 테이블은 집합, 레코드는 집합에 포함된 원소
- 집합 이론에서의 이진 연산
- 합집합 : UNION, UNION ALL
- 교집합 : INTERSECT
- 차집합 : EXPECT
- 집합 연산자 사용 조건
- 테이블 R과 S의 차수 및 각 컬럼의 도메인이 일치
- 교집합 및 차집합은 지원하지 않는 상용 DBMS가 있어 NOT IN등의 연산자를 사용하여 우회
7. 집합 연산자의 사용
- 과목 테이블에서 ‘컴퓨터의 이해’를 강의하는 교수와 ‘데이터베이스 시스템’을 강의하는 교수의 교수번호를 출력하시오.
- SELECT 교수번호 FROM 과목 WHERE 과목명 = ‘컴퓨터의 이해’ UNION SELECT 교수번호 FROM 과목 WHERE 과목명 = ‘데이터베이스 시스템’
8. 함수의 개념
- 특정 목적을 수행하도록 사전에 정의된 연산 및 기능을 수행한 후 결과값을 반환하는 명령어 집합
- 고도의 데이터 조작을 지원하고 SQL문 작성의 편의성을 유지
- 선언적 언어 특성상 표현 불가능한 데이터 조작을 프로그래밍 언어적 특성을 갖는 확장된 언어를 사용
- ex ) PL/SQL, TransactSQL, SQL Procedural 등
- 선언적 언어 특성상 표현 불가능한 데이터 조작을 프로그래밍 언어적 특성을 갖는 확장된 언어를 사용
- DBMS는 검색결과가 사용자에게 여러 형태로 사용되도록 여러 데이터 타입에 대한 다양한 사전 정의 함수를 제공
9. 숫자 함수
- 삼각함수, 상수, 올림과 버림, 난수 등의 숫자 데이터 타입에 적용할 수 있는 계산을 위한 함수
- 종류
- ABS(X) : X의 절대값을 반환
- SIN(X), COS(X) : X의 삼각함수 값을 반환
- SEILING(X), FLOOR(X) : X의 보다 크지(작지) 않은 최소(최대)의 정수
- LN(X) : 자연 로그 InX의 값을 반환
- PI( ) : 원주율 값을 반환
- POWER(X, Y) : 거듭제곱 XY의 값을 반환
- RAND( ) : 0과 1 사이의 임의의 값을 반환
- ROUND(X[, Y]) : X의 Y번째 소수점 위치의 수를 반올림 값을 반환
- SQRT(X) : X의 제곱근의 값을 반환
- TRANCATE(X, Y) : X의 Y번째 소수점 이하를 버림한 값을 반환
- ex ) TRANCATE(졸업학점/8, 0)
10. 문자함수
- 문자욜 조작 및 문자 형식 변환 등의 문자와 관련된 다양한 연산을 지원하는 함수
- 종류
- CHAR_LENGTH(X) : X의 글자수를 반환
- CONCAT(X, Y) : X와 Y 문자열을 결합
- LOWER(X) : X의 문자를 모두 소문자로 변환
- UPPER(X) : X의 문자를 모두 대문자로 변환
- SUBSTRING(X, A, B) : X의 A번째 문자부터 B개의 문자열을 반환
- TRIM(X) : X의 양쪽 공백 문자를 제거하고 반환
- LTRIM(X) : X의 왼쪽 공백 문자를 제거하고 반환
- RTRIM(X) : X의 오른쪽 공백 문자를 제거하고 반환
11. 날짜함수
- 날짜 및 시간 데이터 타입에 적용되어 산술 연산 및 시간 형 변환 등의 조작을 위한 함수
- 종류
- ADDDATE(X, INTERVAL Y단위) : X에 Y단위의 시간을 더한 날짜를 반환
- ADDTIME(X, Y) : X와 Y 시각을 더한 날짜를 반환
- CURDATE( ), CURRENT_DATE( ) : 현재 날짜를 반환
- CURTIME( ), CURRENT_TIME( ) : 현재 시간을 반환
- DATE(X) : X에서 날짜(년, 월, 일)을 반환
- YEAR(X) : X에서 년 값을 반환
- TIMESTAMPDIFF : 특정 시점을 기준으로 얼마만큼 차이가 발생하는지
12. 집계함수
- 특정 컬럼에 집계함수를 통해 다양한 통계 연산을 수행할 수 있는 기능
- SELECT절 또는 HAVING절에 기술
- AS를 통해 Alias를 지정할 수도 있다.
- 집계함수의 종류
- COUNT : 컬럼에 있는 값들의 개수
- SUM : 컬럼에 있는 값들의 합
- AVG : 컬럼에 있는 값들의 평균
- MAX : 컬럼에서 가장 큰 값
- MIN : 컬럼에서 가장 작은 값
13. 그룹질의
- 특정 기준으로 레코드를 그룹화하고 각 레코드 그룹에 대해 집계함수를 적용하는 질의
- 예시
- SELECT 문 형식 GROUP BY 컬럼
- ex ) SELECT 소속학과, COUNT(*) AS 교수수 FROM 교수 GROUP BY 소속학과
- 주의점
- SELECT절에 그룹의 기준과 집계함수 이외의 컬럼은 포함 불가능
14. 조건 그룹 질의
- 그룹 질의의 결과 레코드에 대해 출력 조건을 기술하는 질의
- 예시
- SELECT 문 형식 GROUP BY 컬럼 HAVING 조건
- 조건에 대한 기술
- WHERE : 레코드에 대한 조건을 기술
- HAVING : 집계 결과 레코드에 대한 조건을 기술
- SELECT 학생번호, COUNT(*) AS 신청_전공수 FROM 전공 GROUP BY 학생번호 HAVING 신청_전공수 ≥ 2
728x90
'방송대 > 데이터베이스 시스템' 카테고리의 다른 글
| 8강. 정규화 (0) | 2025.04.07 |
|---|---|
| 7강. SQL(4) (0) | 2025.04.04 |
| 5강. SQL (2) (0) | 2025.03.17 |
| 4강. SQL ( 1 ) (0) | 2025.03.10 |
| 3강. 관계형 모델 (0) | 2025.03.03 |
댓글