JAVA를 잡아라!...
SQL - 2. SELECT 문 : 데이터 검색_WHERE, ORDER BY, LIKE, GROUP BY 본문
DBMS_SQL/Oracle
SQL - 2. SELECT 문 : 데이터 검색_WHERE, ORDER BY, LIKE, GROUP BY
onivv 2023. 12. 22. 14:09#1 기본 문법
SELECT [열] FROM [테이블]
- ~ 테이블의 ~ 열 검색
- 여러 열 검색 : 쉼표(,)로 연결
- 전체 열 검색 : * 입력 ;단, 불필요한 열의 데이터까지 검색하면 네크워크에 부담; 필요한 정보만 최소한으로 검색
#2 WHERE 문 : 조건에 맞는 데이터 검색
SELECT [열] FROM [테이블] WHERE [열] = [조건값]
- WHERE 문에 열의 값이 조건값에 맞으면 ~ 테이블의 ~ 열 검색
- NULL 데이터 검색 : 열의 값이 ' ' 공백이 들어있는 것과는 다름 (IS NULL, IS NOT NULL 을 사용해 필터링)
※ 연산자
< | 조건보다 작은 값 검색 | ALL | 모든 비교 집합이 T이면 T |
<= | 조건보다 같거나 작은 값 검색 | AND | 양쪽 조건 모두 T이면 T |
= | 조건과 같은 값 검색 | ANY | 비교 집합 중 하나라도 T이면 T |
> | 조건보다 큰 값 검색 | BETWEEN | 범위에 해당하는 값 검색 |
>= | 조건보다 같거나 큰 값 검색 | EXISTS | 하위 퀴리에 행이 포함되면 T |
<>, != | 조건과 같지 않은 값 검색 | IN | 하나라도 포함되면 T (OR 반복 사용시 대체사용) |
!< | 조건보다 작지 않은 값 검색 | LIKE | 피연산자가 패턴과 일치하면 T |
!> | 조건보다 크지 않은 값 검색 | NOT | 연산자를 반대로 실행 |
OR | 양쪽 조건 중 하나라도 T이면 T | ||
SOME | 비교 집합 중 일부가 T이면 T |
#3 ORDER BY 문 : 데이터 정렬
SELECT [열] FROM [테이블] WHERE [열] = [조건값] ORDER BY [열] [ASC, DESC]
- ORDER BY 문을 SELECT 문의 가장 마지막에 추가해 사용
- ASC - 오름차순, DESC - 내림차순
- 2개 이상 기준으로 열을 정렬할 때는 쉼표(,)를 사용해 열 이름을 나열 (단, 열 입력 순서 주의)
- SELECT TOP N
- : 특정 조건에 해당하는 데이터 중 상위 N개의 데이터 검색 (정렬 우선순위 중요)
- OFFSET ... FETCH NEXT
- : 특정 구간의 데이터 검색
- ex) SELECT * FROM 테이블명 ORDER BY ~ OFFSET ~ ROWS FETCH NEXT ~ ROWS ONLY
- ~로 정렬된 값 중 ~행은 건너뛰고 ~개의 행만 출력
#4 와일드카드로 문자열 검색
SELECT [열] FROM [테이블] WHERE [열] LIKE [조건값]
- 지정한 패턴과 일치하는 문자열, 날짜, 시간 등을 검색
- NOT LIKE : 특정 문자열 제외
- LIKE와 %로 특정 문자열을 포함하는 문자열 검색
- A% : A로 시작하는 모든 문자열
- %A : A로 끝나는 모든 문자열
- %A% : A를 포함하는 모든 문자열
- _로 특정 문자열 포함하는 특정 길이의 문자열 검색
- A_ : A로 시작하면서 뒤의 글자는 무엇이든 상관없으며 전체 글자 수는 2개인 문자열
- _A : A로 끝나면서 앞의 글자는 무엇이든 상관없으며 전체 글자 수는 2개인 문자열
- _A_ : 세 글자 중 가운데 글자만 A이며 앞뒤로 무엇이든 상관없는 문자열
- ESCAPE 문 : 특수 문자를 포함한 문자열 검색
- 쿼리를 실행할 때 ESCAPE 문에 사용된 특수 문자를 제거 (단, 해당 문자가 실제 문자열에 쓰이면 안됨)
- []로 문자나 문자 범위를 지정해 문자열 검색
- [A, B, C]% or [A-C]% : 첫 글자가 A or B or C로 시작하는 모든 문자열 검색
- %[A, B, C] or %[A-C] : 마지막 글자가 A or B or C로 끝나는 모든 문자열 검색
- [^A, ^B, ^C]% or [^A-C]% : 첫번째 글자가 A or B or C가 아닌 모든 문자열 검색
#5 데이터 그룹화 다루기
SELECT [열] FROM [테이블] WHERE [열] = [조건값] GOURP BY [열] HAVING [열] = [조건값]
- GROUP BY : 데이터를 그룹화하는 구문
- [열] : 그룹화 기준의 열 이름을 지정, 1개 이상 그룹화 가능 (단, 열 순서에 따라 그룹화 우선순위)
- HAVING : WHERE와 비슷한 기능을 하며, 그룹화된 결과의 필터링 기능
- [조건값] : HAVING 필터에 적용할 조건값 입력
==> 그룹화는 중복된 결과를 제외하고 출력
==> GROUP BY 문에 사용한 [열]은 SELECT 문에 그대로 사용해야 함 (그룹 기준이 되는 열이 필요하니까)
- 집계함수 COUNT로 그룹화된 열의 데이터(행) 개수 확인
- ex) SELECT [열], COUNT(*) AS cnt FROM [테이블] GROUP BY [열]
- 테이블의 열을 그룹화, 그룹화된 열 검색, 열의 행 개수를 cnt라는 이름의 열에 출력
- 단, cnt는 실제 데이터 열이 아님
- HAVING 문으로 그룹화한 데이터 필터링
- WHERE 문은 테이블에 있는 열에 적용하지만,
- HAVING 문은 SELECT 문이나 GROUP BY 문에 사용한 열에만 적용 가능
- ex) SELECT [열1, 열2] FROM 테이블 GROUP BY [열1, 열2] HAVING [열1 = ' ~~~']
- 테이블의 열1, 열2 그룹화, 단 열1이 ~~~인 것만 출력
- DISTINCT 문으로 중복 데이터 제거
- GROUP BY 문은 중복 데이터를 제거
- GROUP BY 문을 사용하지 않고 중복을 제거할 경우 DISTINCT 문 사용
- 단, DISTINCT문은 중복을 제거할 뿐, 집계하거나 계산은 불가
SELECT DISTINCCT [열] FROM [테이블]
'DBMS_SQL > Oracle' 카테고리의 다른 글
SQL - 6. 서브 쿼리 (Subquery) (0) | 2023.12.25 |
---|---|
SQL - 5. 조인 (Join) (0) | 2023.12.25 |
SQL - 4. 자료형 (0) | 2023.12.23 |
SQL - 3. 테이블 생성 & 데이터 조작 (DDL & DLC) (0) | 2023.12.22 |
SQL - 1. 데이터베이스와 SQL의 기초 (2) | 2023.12.21 |