SQL
SQL 언어의 구성
- 데이터 정의 언어(DDL)
- 데이터 조작 언어(DML)
- 무결성
- 뷰 정의
- 트랜잭션 제어
- 내장 SQL
- 권한 부여
SQL 질의 연산 순서
SELECT dept_name, avg(salary) as avg_salary
FROM instructor
GROUP BY dept_name
HAVING avg(salary) > 50000;
- from 절로 릴레이션을 조회
- where 절이 존재하면 where 절의 술어가 from 절의 결과 릴레이션에 적용
- where 절의 술어를 만족하는 튜플은 group by 절이 존재하면 group by 절에 의해 그룹화된다. group by 절이 없다면, where 절의 술어를 만족하는 전체 튜플 집합은 하나의 그룹으로 간주된다.
- having 절이 존재한다면 각각의 그룹에 적용된다. having 절의 술어를 만족하지 못하는 그룹은 제거된다.
- select 절은 남아있는 그룹을 사용하여 질의의 결과 튜플을 생성하는데, 이때 그룹별로 집계 연산을 적용하여 단일 결과 항을 만든다.
인덱스
- 인덱스는 데이터베이스에서 데이터를 검색할 때 성능을 향상시키는 데 사용된다.
- 인덱스는 데이터베이스에서 릴레이션 속성의 특정 값을 가지고 있는 튜플을 릴레이션의 모든 튜플을 살펴보지 않고도 효과적으로 찾을 수 있는 자료구조다.
- 사용자가 인덱스를 통해 성능 이득을 볼 수 있는 질의문을 입력하면 SQL query processor 가 자동으로 인덱스를 사용한다.
- WHERE 절에서 열(컬럼) 값을 비교
- ORDER BY 절에서 열(컬럼) 값을 기준으로 정렬
- GROUP BY 절에서 열(컬럼) 값을 기준으로 그룹화
- JOIN 절에서 조인 대상 열(컬럼) 값을 비교
댓글