본문 바로가기
CS/데이터베이스

[Database] SELECT

by 루시킴 2021. 10. 8.

SELECT

SELECT절과 FROM절만 필수이고 나머지는 선택사항이다.

GROUP BY 뒤의 HAVING은 그룹화된 결과에 조건을 줄때 사용한다.

 

별칭

서로 다른 릴레이션에 동일한 이름을 가진 애트리뷰트가 속해있거나 셀프 조인 시, 애트리뷰트의 이름을 구분하는 방법이다.

포맷 : SELECT ~ FROM [TABLE이름] AS [별칭]

 

SELECT 문 기능

1. 문자열 비교

WHERE TITLE LIKE 'ABC%' #TITLE이 ABC로 시작하는

WHERE TITLE LIKE '%ABC' #TITLE이 ABC로 끝나는

WHERE TITLE = 'ABC' #TITLE이 ABC인

WHERE TITLE LIKE 'ABC_' #TITLE이 ABC다음 한글자로 끝나는 

 

[NOTE]

% : 0개이상 문자열이 매칭

- : 1개의 임의의 문자가 매칭

 

2. 리스트를 사용한 검색

WHERE DNO IN (1,3) #DNO가 1이거나 3에 속한거

 

3. 산술연산자 (+,-,*,/)

SELECT SALARY, SALARAY * 1.1 AS NEW SALARY 

 

4. 널값

WHERE DNO IS NULL 

WHERE DNO IS NOT NULL

 

5. 범위 사용

WHERE DNO BETWEEN 10 AND B

 

6. 집단함수 

COUNT(*)는 결과 릴레이션의 모든 행들의 총 개수

COUNT(애트리뷰트)는 해당 애트리뷰트에서 널값이 아닌값들의 개수

DISTINCT가 집단함수 앞에 사용되면 집단함수가 적용 되기 전에 먼저 중복을 제거

 

7. GROUP BY ~ HAVING

HAVING절에 나타나는 애트리뷰트는 반드시 GROUP BY절에 나타나거나 집단함수에 포함 되어야함

 

8. 조인

SELECT문과 같이 FROM절에 두개 이상의 릴레이션들이 열거되고, 두 릴레이션에 속하는 애트리뷰트들을 비교하는 조인조건이 WHERE절에포함됨

SELECT ~~~~ FROM TEST1 A, TEST2 B WHERE A.DNO=B.EMP

 

9. 자체조인

한 릴레이션에 속하는 투플을 동일한 릴레이션에 속하는 투플들과 조인하는것 

실제로는 한 릴레이션이 접근되지만 FROM절에 두 릴레이션이 참조되는 것처럼 나타내기 위해서 그 릴레이션에 대한 별칭을 두개 지정해야함

 

10. 중첩질의

서브쿼리라고도 하며 WHERE 또는 FROM절에 (SELECT ~ FROM ~) 형태로 표현

바깥 쿼리를 외부 질의, ()안에 있는 쿼리를 내부 질의라고 표현

  • 외부 질의의 WHERE절에서 IN, ANY(SOME), ALL, EXISTS와 같은 연산자를 사용해야함
    • IN : 한 애트리뷰트가 값들의 집합에 포함되어 있는지 테스트
    • ANY : 한 애트리뷰트가 값들의 젭합에 속하는 하나 이상의 값들과 어떤 관계를 갖는가를 테스트
    • ALL : 한 애트리뷰트가 값들의 집합에 속하는 모든 값들과 어떤 관계를 갖는가를 테스트
    • EXISTS : 중첩 질의의 결과과 빈 릴레이션인지 여부를 검사함. 빈 릴레이션이 아니면 참이고, 비어있으면 거짓

11. 상관 중첩질의

중첩질의 안쪽에서 외부 질의에 있는걸 참조하는 것

외부질의를 참조하게되면 외부질의의 튜플하나가 결정이 된다음에 튜플을 처리

'CS > 데이터베이스' 카테고리의 다른 글

[Database] INSERT문 / UPDATE문 / DELETE 문  (0) 2021.10.22
[Database] 무결성 제약조건  (0) 2021.10.22
[Database] SQL  (0) 2021.10.08
[Database] 관계 대수와 SQL (2)  (0) 2021.10.08
[Database] 관계대수와 SQL  (0) 2021.09.23

댓글