우봉수
2023. 4. 1. 15:46
2023. 4. 1. 15:46
- 순서
- where (출력할 레코드들)
- group by (레코드들 끼리 그룹을 짖기)
- having (group에대한 조건)
- order by (결과의 출력 순서)
COUNT
- 형식: count( distinct <필드이름> )
- 필드 이름 대신 *가 사용되면 레코드의 개수를 계산
- distinct는 중복을 제거하고 숫자를 보여주라는 명령
SUM
- 형식: sum(<필드 이름>)
- 필드값의 합계를 반
MIN, MAX
- 형식: max(<필드 이름>), min(<필드 이름>)
- 최대 최소 필드 값을 반
- 필드와 집계함수는 같이 사용 할 수 없다.
GROUP BY
- 형식: group by <필드 리스트>
- select 절에 집계 함수가 사용될 경우 다른 필드는 select 절에 사용할 수가 없음
- 그룹핑 후 집계함수 사용시 활용
- group by 절의 필드명과 집계함수를 같이 사용 할 수 있게 됨
HAVING
- 그룹에 대한 조건을 명시할 때 사용
- 형식: having 집계함수 조건
널 처리
- 널을 검색하는 방법
- 형식: <필드 이름> is null, <필드 이름> is not null
- where grade <> ‘A+’ → A+가 아닌 학생들을 검
중첩 질의
- SQL문 안에 SQL문이 중첩되어 사용하는 질의
- 내부질의, 부질의: 내부에 포함된 SQL문
- 외부질의: 부 질의를 내부적으로 갖는 SQL문
- 종류
- in, not in
- some, all
- exists, not exists
뷰
- 기존 테이블들로부터 생성되는 가상의 테이블
- 기존의 테이블들을 조합하여 사용자에게 실제로 존재하는 테이블인 것처럼 보이게 함
- 이렇게 만들어진 가상의 테이블을 사용하여 검색이 가능
- 형식: create or replace view <뷰이름> as <select문> from 원본 테이블 이름 where 조건문
- 마지막: with read only (검색 전용으로 만들기)
- or replace를 생략해도 되나 추가하여 사용 할 경우 기존에 뷰 이름과 같은 뷰가 이미 존재하는 경우 기존 뷰를 지우고 새로 생성
- 대부분의 DBMS에서 사용자 계정에는 뷰 생성 권한이 부여되지 않음
- grand create view to <사용자 계정>: 권한 부여
- 검색용으로만 사용하고 여기에 직접 데이터를 넣는건 바람직 하지 않다.
- 여러 베이스 뷰의 요소가 짬뽕되어 있어 굉장히 위험하기 때문