SQLD 2과목 SQL 기본 및 활용
<목차>
|
WHERE 절
- 사용자들이 자신이 원하는 자료만을 검색하기 위해서 SQL 문장에 WHERE 절을 이용하여 자료들에 대해 제한
- 두 개 이상의 테이블에 대한 조인 조건을 기술하거나 결과를 제한하기 위한 조건을 기술할 수도 있음.
- 조회하려는 데이터에 특정 조건을 부여할 목적으로 사용하기 때문에 FROM 절 뒤에 옴.
SELECT [DISTINCT/ALL] 칼럼명 [ALIAS명] FROM 테이블명 WHERE 조건식; |
조건식은
- 칼럼명(보통 조건식의 좌측에 위치)
- 비교 연산자
- 문자, 숫자, 표현식 (보통 조건식의 우측에 위치)
- 비교 칼럼명(JOIN 사용 시)
WHERE 절에 사용되는 연산자의 종류
구분 | 연산자 | 연산자의 의미 |
비교 연산자 |
= | 같다 |
> | 보다 크다 | |
>= | 보다 크거나 같다 | |
< | 보다 작다 | |
<= | 보다 작거나 같다 | |
SQL 연산자 |
BETWEEN a AND b | a와 b의 값 사이에 있으면 된다. (a와 b 값이 포함됨.) |
IN(LIST) | 리스트에 있는 값 중에서 어느 하나라도 일치하면 됨 | |
LIKE "비교문자열" | 비교문자열과 형태가 일치하면 됨 (%, _ 사용) %: 0개 이상의 어떤 문자를 의미 _: 1개인 단일 문자를 의미 |
|
IS NULL | NULL 값인 경우 | |
논리 연산자 |
AND | 앞에 있는 조건과 뒤에 오는 조건이 참(True)이 되면 결과도 참(True)이 됨. 즉, 앞의 조건과 뒤의 조건을 동시에 만족해야 함. |
OR | 앞의 조건이 참(True) 이거나 뒤의 조건이 참(True) 이 되어야 결과도 참(True)이 됨. 즉, 앞뒤의 조건 중 하나만 참(True)이면 됨. | |
NOT | 뒤에 오는 조건에 반대되는 결과를 리턴 | |
부정 비교 연산자 |
!= | 같지 않다 |
^= | 같지 않다 | |
<> | 같지 않다 (ISO 표준, 모든 운영체제에서 사용 가능) | |
NOT 칼럼명 = | ~와 같지 않다 | |
NOT 칼럼명 > | ~보다 크지 않다 | |
부정 SQL 연산자 |
NOT BETWEEN a AND b | a와 b 값 사이에 있지 않다. (a, b 값을 포함하지 않는다) |
NOT IN (list) | list 값과 일치하지 않는다 | |
IS NOT NULL | NULL 값을 갖지 않는다 |
연산자의 우선순위
연산 우선 순위 | 설명 |
1 | 괄호() |
2 | NOT 연산자 |
3 | 비교 연산자, SQL 비교 연산자 |
4 | AND |
5 | OR |
* CHAR 변수나 VARCHAR2와 같은 문자형 타입을 가진 칼럼을 특정 값과 비교하기 위해서는 인용 부호(작은따옴표, 큰 타옴 표)로 묶어서 비교 처리.
하지만 NUMERIC과 같은 숫자형 형태의 값은 인용부호 미사용.
문자 유형 비교 방법
구분 | 비교 방법 |
비교 연산자의 양쪽이 모두 CHAR 유형 타입인 경우 |
길이가 서로 다른 CHAR형 타입이면 작은 쪽에 SPACE를 추가하여 길이를 길게 한 후에 비교 |
서로 다른 문자가 나올때까지 비교 | |
달라진 첫 번째 문자의 값에 따라 크기 결정 | |
BLANK의 수만 다르다면 서로 같은 값으로 결정 | |
비교 연산자의 어느 한 쪽이 VARCHAR 유형 타입인 경우 |
서로 다른 문자가 나올 때까지 비교 |
길이가 다르다면 짧은 것이 끝날 때까지만 비교한 후에 길이가 긴 것이 크다고 판단 | |
길이가 같고 다른 것이 없다면 같다고 판단 | |
VARCHAR는 NOT NULL 까지 길이를 말함 | |
상수값과 비교할 경우0 |
상수 쪽을 변수 타입과 동일하게 바꾸고 비교 |
변수 쪽이 CHAR 유형 타입이면 위의 CHAR 유형 타입의 경우를 적용 | |
변수 쪽이 VARCHAR 유형 타입이면 위의 VARCHAR 유형 타입의 경우 적용 |
논리 연산자의 순서 사례
잘못 해석한 예 | 조건에 맞게 올바르게 수정한 예 |
WHERE 소속팀 = 삼성블루윙즈 OR 소속팀 = 전남드래곤즈 AND 포지션 = 미드필더(MF) AND 키 >= 170 센티미터 AND 키 <= 180 센티미터 |
WHERE (소속팀 = 삼성블루윙즈 OR 소속팀 = 전남드래곤즈) AND 포지션 = 미드필더(MF) AND 키 >= 170 센티미터 AND 키 <= 180 센티미터 |
ROWNUM, TOP 사용
- ROWNUM(Oracle)
- 칼럼과 비슷한 성격의 Pseudo Cloumn 으로써 SQL 처리 결과 집합의 각 행에 대해 임시로 부여되는 일련번호
- 테이블이나 집합에서 원하는 만큼의 행만 가져오고 싶을 때 WHERE 절에서 행의 개수를 제한하는 목적으로 사용
- 테이블 내의 고유한 키나 인덱스 값을 만들 수 있음. UPDATE MY_TABLE SET COLUMN1 = ROWNUM;
ex) 한 건의 행만 가져오고 싶을 때
- SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM = 1;
- SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM <= 1;
- SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM < 2;
ex) 두 건 이상의 N 행을 가져오고 싶을 때
ROWNUM = N;
ROWNUM <= N;
ROWNUM <= N+1;
- TOP 절 (SQL Server)
TOP (Expression) [PERCENT] [WITH TIES] |
- Expression: 반환할 행의 수를 지정하는 숫자
- PERCENT: 쿼리 결과 집합에서 처음 Expression%의 행만 반환됨
- WITH TIES: ORDER BY 절이 지정된 경우에만 사용할 수 있으며, TOP N(PERCENT)의 마지막 행과 같은 값이 있는 경우 추가 행이 출력되도록 지정할 수 있음.
ex) 한 건의 행만 가져오고 싶을 때
- SELECT TOP(1) PLAYER_NAME FROM PLAYER;
ex) 두 건 이상의 N 행을 가져오고 싶을 때
- SELECT TOP(N) PLAYER_NAME FROM PLAYER;
이전글
다음글
'자격증 > SQLD' 카테고리의 다른 글
SQLD 2과목 SQL 기본 및 활용 - 조인 (1) | 2024.01.13 |
---|---|
SQLD 2과목 SQL 기본 및 활용 - GROUP BY, HAVING 절 (1) | 2024.01.12 |
SQLD 2과목 SQL 기본 및 활용 - 함수(2) (0) | 2024.01.10 |
SQLD 2과목 SQL 기본 및 활용 - 함수(1) (0) | 2024.01.10 |
SQLD 2과목 SQL 기본 및 활용 - SELECT 문 (1) | 2024.01.09 |