1장_5절. Where 조건절

1.where 조건절 개요
-select 조회할컬럼명 from 테이블명;사용시 모든 entity의 instance가 조회되므로 원하는 instance만 조회할 필요가 있으므로 where 조건절사용
-if문과 유사한 기능
-select [all/distinct] 컬럼명 from 테이블명 where 조건식;
ex) select all player_name 선수이름 from player where team_id='K02';
->팀명이 K02인 모든 플레이어의 이름 출력
#조건식의 구성
-칼럼명 비교연산자(=,>,>=,<,<= 등등) 문자or순자or표현식 비교칼럼명 //???뭔소리지...

2.연산자의 종류
1)비교연산자 : 같다,크다,작다, 크거나같다, 작거나같다 : 등호와 부등호(=,<,<=,등등등)

2)SQL연산자 : 
-between 숫자1 and 숫자2 ( 숫자1 < x < 숫자2인 모든 행)
-in(list) (list에속한 값과 일치하는 모든 행)
-like '비교문자열' (비교하는 문자열 값과 일치하는 모든 행)
-is null (해당 컬럼값이 null인 모든행)

3)논리연산자 : and, or, not

4)부정비교연산자 : 비교연산자에 부정연산자(not,!) 붙은것
-!= (같지않다)
-^=(같지않다)
-<>(같지않다)
-not 칼럼명 = x (x와 같지않다)
-not 칼럼명 > x (x보다 크지않다)

5)부정SQL연산자 : sql연산자에 부정연산자(not, !) 붙은것
-not between 숫자1 and 숫자2( 숫자1>x or 숫자2<x인 모든행)
-not in(list) ( list에 속한 값과 일치하지 않는 모든 행)
-is not null (해당 컬럼값이 null이 아닌 모든행)

#연산우선순위
1순위 : 괄호()
2순위 : not연산
3순위 : 비교연산, sql비교연산
4순위 : 논리연산(and)
5순위 : 논리연산(or)

3.비교연산자
ex)소속팀이 삼성블루윙즈(K02)이거나 전남드래곤즈(K07)에 소속되어야 하고,
포지션이 미드필더(MF)이어야 하고,
키는 170cm이상 180cm이하인 선수들 출력해봐
->
SQL> select player_name 선수명, team_id 팀명, position 포지션, height 키
  2  from player
  3  where (team_id='K02' or team_id='K07') and
  4  position ='MF' and
  5  (height >= 170 and height <= 180);
#주의점 : 비교할때 컬럼값이 char데이터유형이면 'K02'처럼 ''로 묶어줘야 함

4.SQL연산자
1)예약어로써 4가지 연산이 있다(between, in(list), like, is null)
ex)삼성블루윙즈팀(K02)이거나 전남드래곤즈팀(K07)이고,
포지션이 미드필더(MF)이고,
키가 170~180인 모든선수 출력해봐
->
SQL> select player_name 선수명, team_id 팀명, position 포지션, height 키
  2  from player
  3  where team_id in('K02','K07') and
  4  position like 'MF' and
  5  height between 170 and 180;

2)비교연산자 vs SQL연산자
<비교연산자>
SQL> select player_name 선수명, team_id 팀명, position 포지션, height 키
  2  from player
  3  where (team_id='K02' or team_id='K07') and
  4  position ='MF' and
  5  (height >= 170 and height <= 180);

<SQL연산자>
SQL> select player_name 선수명, team_id 팀명, position 포지션, height 키
  2  from player
  3  where team_id in('K02','K07') and
  4  position like 'MF' and
  5  height between 170 and 180;
=>or로 연결되는 비교연산자 -> in(list)로 바꿀수 있다
비교연산자 (=)와 sql연산자(in(list))는 다름. 순서쌍가능 유무차이
ex)
의 차이.
=> 문자열연산의 '=' -> like 연산과 같음
=>범위연산 -> between연산과 같음

3) like연산에서 와일드카드(%, _)사용
% : 0개 이상의 어떤 문자
_ : 1개인 단일 문자
ex)where player_name like '장%'
->'장'으로 시작하는 모든 선수검색
where player_name list '장_'
->'장'으로 시작하는 2글자 선수검색 

4) between a and b 연산
-a 와 b를 포함함. 즉 크다가 아니라 크거나 같다.

5) is null연산
-비교자체가 불가능한 값이 null이다
-null의 수치연산 ->null값을 출력
-null의 비교연산 ->false값을 출력
5.논리연산자 6.부정연산자
-and, or, not연산 // !=,^=,<>, not칼럼명=, not 칼럼명>, 등등
-괄호가 1순위 // not연산이 2순위 //비교연산이 3순위 // 논리연산이 4순위

7.rownum, top사용
1)rownum
-sql처리 결과 집합의 각 row에 대한 임시부여되는 일련번호?
-테이블이나 집합에서 원하는 만큼의 행만 가지고 오고 싶을때 사용
ex)select player_name 
from player
where rownum <= 10;
->1행부터 10행까지의 instance를 출력함.

2)top
-sql server에서 사용되는 rownum같은 명령어임

댓글

이 블로그의 인기 게시물

1장_1절 관계형 데이터베이스 개요

1장_2절 DDL(Data Definition Language : 데이터 정의어)