티스토리 뷰

 

 

 

 

조건문에 쓰이는 연산자들이 꽤 많아 따로 정리해야 할 것 같아 글을 작성한다. 대표적으로 AND, OR, IN, LIKE, BETWEEN, NOT 연산자들이 존재하고, 각각 어떻게 사용하는지 쿼리문과 그림을 보면서 정리해보자.

 


 

[기본 테이블]

 

 


[비교 연산자]

 

연산자 의미
= 같다
! =,  ^ = , <> 같지 않다
> 크다
< 작다
>= 크거나 같다
<= 작거나 같다

 

[논리 연산자]

 

연산자 의미
AND 모든 조건이 참일때, 참인값을 반환
OR 모든 조건 중 하나라도 참일 때, 참인 값을 반환
NOT 조건과 반대되는 결과를 반환

 

[기타 연산자]

 

연산자 의미
LIKE 문자 패턴과 일치하는 값을 반환
IN 한 컬럼 내에서 주어진 값 중 하나라도 참이면 값을 반환
BETWEEN 해당하는 조건의 범위 값을 반환

 

위에 적은 3가지가 연산자들의 종류다. 밑에는 예시와 함께 정리 했는데 순서가 뒤죽박죽인점은 참고 바란다.

(사실 글 쓰다가 연산자에도 종류가 있다는걸 알았다...)

 


1. AND 

 

  AND 연산자는  '그리고' 라는 뜻으로 사용되어 조건1 과 조건 2 모두 만족하는 데이터만 조회해준다.

 

SELECT  *  FROM  MEMBER3  WHERE  AGE  >= 30  AND REGION '부산광역시';

 

" SELECT * FROM [테이블 명] WHERE [조건 1]  AND  [조건 2] "

 

 

나이가 30 이상이면서 지역이 부산광역시인 데이터만 조회가 되었다.

 


2. OR 

 

 OR 연산자는 '또한'이라는 뜻으로 사용되어 조건1과 조건2 둘 중 하나만 참이더라도 해당하는 데이터를 조회해주는 연산자이다.

 

SELECT  *  FROM  MEMBER3  WHERE  AGE  >= 30  OR REGION   '부산광역시';

 

" SELECT * FROM [테이블 명] WHERE [조건 1]  OR  [조건 2] "

 

 

위에 AND조건문에서 AND를 OR로 바꿨을 뿐인데, 훨씬 많은 데이터가 조회되는것을 확인할 수 있다. 

 


3. IN 

 

 IN연산자는 or조건 여러개가 한 그룹으로 묶여있는 형태이다. 그 중 하나라도 참이면 조건에 맞는 데이터를 조회한다.

 

SELECT  *  FROM  MEMBER3  WHERE  REGION  IN ('부산광역시', '경상남도');

 

" SELECT * FROM [테이블 명] WHERE [컬럼명]  IN  [조건 1, 조건 2] "

 

 

컬럼안에 조건의 값이 하나라도 있으면 해당하는 데이터를 조회해준다.

 

SELECT  *  FROM  MEMBER3  WHERE  REGION  IN ('부산광역시' , '경상남도' ) AND  AGE  >=  30 ;

 

 

" SELECT * FROM [테이블 명] WHERE [컬럼명]  IN  [조건 1, 조건 2AND [컬럼명]  >=  [조건3]; "

 

이렇게 IN 조건에 AND 연사자를 붙여서 조건을 추가로 입력할 수도 있다.

 

 


4. LIKE 

 

LIKE 연산자는 문자패턴과 일치하는 데이터를 조회해준다. 

 

■  %  :  0개 이상의 문자를 나타낸다. (글자 수 제한 X) 

 

 ex) 고양이% => 고양이로 시작하는 모든 글자를 조회한다. (고양이 사료, 고양이 장난감, 고양이 카페 고양이다냥..)       

%고양이 => 고양이로 끝나는 모든 글자를 조회한다. ( 검은 고양이, 살아있는 고양이, 장화신은 고양이.. )

 

■  _   :  한 개의 문자를 나타낸다. (글자 수 제한 O)

 

ex) 경_ => 경으로 시작하는 2글자 조회(경찰, 경주, 경매..)     

정__ => 정으로 시작하는 3글자 조회(정관장, 정수리, 정강이...)  글자수를 정해서 조회한다.

 

 

 SELECT  *  FROM  MEMBER3  WHERE  ID  LIKE  'a% ' ;

 

" SELECT * FROM [테이블 명] WHERE [컬럼명]  LIKE  '값%'  or  '%값' or  '값_' or  '_값'  " 

 

 

ID 컬럼에  a가 포함된 데이터 값들을 조회하고

 

 

SELECT  *  FROM  MEMBER3  WHERE  NAME  LIKE  '%귀신';

 

 

NAME 컬럼에서 귀신으로 끝나는 글자들의 데이터를 조회하고

 

 

SELECT  *  FROM  MEMBER3  WHERE  REGION  LIKE  '%광역시%';

 

 

REGION 컬럼에서 광역시가 포함된 모든 데이터 조회할 수도 있다.

 

 

SELECT * FROM MEMBER3 WHERE NAME LIKE '____';

 

 

저렇게 ---- 4개를 입력하면 NAME컬럼에 4글자로된 값들만 찾아서 조회해준다. 이렇게 글자수를 정해서도 원하는 데이터를 조회할 수 있다.  

( '--귀신' 이렇게 적으면 마지막에 귀신이라는 글자를 포함한 4글자의 데이를 조회해준다.)

 

 

[ 추가 ]

 

SELECT * FROM MEMBER3 WHERE ID LIKE '%a__%';

 

%a__% 이렇게 적으면  ID 컬럼에 a가 포함되면서 글자수가 3개인 값들의 데이터만 보여준다.  (근데 이렇게 적으니깐 세자리 글자랑 네자리 글자 다 조회해주던데.... 몇번 다시 해봐야겠다)

 

 


 

4-1. ESCAPE 식별자

 

ESCAPE 식별자와 LIKE 연산자를 같이 쓰면 문자에 ' % ',  ' _ ' 등 특수문자가 포함된 문자열을 조회가 가능하다. 

 

 

 

 

이렇게 REGION 컬럼 몇군데  _를 추가해 보았다. ESCAPE 식별자와 LIKE 연산자를 써서 저 부분의 데이터만 조회해보자.

 

 

SELECT  *  FROM  MEMBER3  WHERE  REGION  LIKE  ' % \ _ % '  ESCAPE  ' \ ' ;

 

 

그림을 보면 알겠지만 이렇게 ESCAPE 식별자를 쓰면 ' \ ' 뒤에 있는 특수기호를 문자로 인식하여 데이터를 조회해준다. 꼭 \일 필요는 없고 저자리에  * , $ , r 등 아무 문자나 넣어도(거의 모든 문자..) 문자로 인식할 수 없는 친구들을 문자로 인식하여 조회해준다.

 

5. BETWEEN 

 

BETWEEN 연산자는 값1 이상 값2 이하인 데이터들을 조회해준다.(즉, 해당하는 범위의 값)

숫자와 날짜값의 범위를 지정하여 그 사이에 있는 값들만 조회하고 싶을 때 유용하게 쓰인다. 꼭 숫자값이 아니라 숫자값이 문자로 저장 되어있더라도 일정하게 저장되어 있다면 조회가 가능하다('10', '20', '30' 이렇게 문자로 되어있어도.. ) 

 

 

5-1. 숫자 범위

 

SELECT  *  FROM  MEMBER3  WHERE  AGE  BETWEEN  20  AND  30 ;

 

"SELECT * FROM  [테이블 명]  WHERE  [컬럼명]  BETWEEN  숫자 or 날짜값 1  AND 숫자 or 날짜값 2 " 

 

 

SELECT * FROM MEMBER3 WHERE AGE BETWEEN 20 AND 40;

 

 

각 숫자들의 범위 안에있는 값들만 조회해준다.

 

 


 

5-2. 날짜 범위

 

SELECTFROM  MEMBER3  WHERE  REGDATE  BETWEEN  TO_DATE ('2023-06-01', 'YYYY-MM-DD' AND TO_DATE('2023-06-20','YYYY-MM-DD');

 

 

 

날짜는 TO_DATE(' 2023 - 06 - 01 ' , ' YYYY - MM - DD ') 이렇게 형변환을 해서 문자값으로 바꿔준 뒤 범위값을 구해줘야한다. 

 

SELECT  *  FROM  MEMBER3  WHERE  REGDATE  BETWEEN  TO_DATE (' 2023-06-01','YYYY-MM-DD' ) AND TO_DATE('2023-06-26','YYYY-MM-DD');

 

 

날짜를 6월 20일에서 26일로 바꿔주었다. 이러면  6월 1일 ~ 6월 26일 사이의 데이터가 조회되어 26일에 해당하는  행이 있어야 하는데 보이지 않는다. why? 여기서 6월26일 까지는 시간대가 00:00:00을 말하기 때문에 0.1초라도 넘어가면, 해당 날짜는 26일 이후로 인식되어 조회를 하지 않는다. 그래서 뒤에 +0.99999적어주어 시간까지 같이 계산하여 조회해야한다.

 

SELECT * FROM MEMBER3 WHERE REGDATE BETWEEN TO_DATE('2023-06-01','YYYY-MM-DD') AND TO_DATE('2023-06-26','YYYY-MM-DD')+0.99999;

 

 

 

쿼리문 뒤에 +0.99999를 적어주면 시간도 같이 인식하여 해당하는 날짜의 값도 포함시킨 데이터가 조회된다.

 

 


 

5-3. 문자 범위

 

문자 범위를 구하는게 약간 애매하긴한데 예를들면 이름이 'ㄱ' 으로 시작하는 사람부터 'ㄷ' 으로 시작하는 사람들 까지만 조회하고 싶을 수가있다.(ㄱ~ㄷ) 이때는 한글이나 영어 둘다 마찬가지로 어순을 생각해 장 끝에 오는 글자형태로 적어주면된다.

 

SELECT * FROM MEMBER3 WHERE NICKNAME BETWEEN '가' AND '딯';

 

" SELECT * FROM  [테이블 명]  WHERE  [컬럼명]  BETWEEN  '가'  AND  '딯' " 

 

 

가갸거겨... 가장 맨 앞이 "가" 이고, 다댜더뎌...드디 "디"가 제일 마지막이다. 디 밑에 "ㅎ" 받침 까지 붙여주면 ㄷ에서 가장 마지막 글자인 "딯"이 만들어진다. 그러면 ㄱ ~ ㄷ 사의의 글자들만 조회가 가능해진다.

 


 

6. IS NULL / IS NOT NULL   

 

쿼리문을 통해 컬럼의 값이 null인 을 찾아 조회하거나, 그 반대인 null이 아닌 데이터를 조회할 수 있다.

 

 

 

먼저 나이 필드에 임의로 NULL값을 몇군데 주었다.

 

SELECT * FROM MEMBER3 WHERE  AGE  IS  NULL;

 

"SELECT * FROM  [테이블 명]  WHERE  [컬럼명]  IS  NULL " 

 

 

 

요렇게 AGE 컬럼 중 NULL값만 찾아서 데이터를 불러온다. 

 

 

※ 주의!  NULL은 문자나 숫자들처럼 연산기호(>, =) 써서 결과를 불러오는 것이 아니다. AGE = NULL 이렇게 적는 거 아니다. IS를 써서 "NULL"값을 구해야한다.

 

 

SELECT * FROM MEMBER3 WHERE AGE IS NOT NULL;

 

 

 

반대로 IS NOT NULL을 조건으로 적으면  AGE 컬럼에서 " NULL" 값이 아닌 데이터들만 조회하여 우리에게 보여준다. 

 

 


 

6-1. 부정 연산자의 사용

 

부정 연산자 "같지 않다" 를 나타내는 NOT을 다른 비교 연산자, 기타 연산자들과 같이 쓰면 좀 더 유연하게 데이터를 조회할 수 있다.

 

 

SELECT  *  FROM  MEMBER3  WHERE NOT  AGE 30 ;

 

" SELECT * FROM  [테이블 명]  WHERE  NOT [컬럼명]  > '조건' " 

 

 

AGE < 30 이렇게 조건을 적는거랑 사실 별 차이는 없지만, 알고 있으면 분명 도움될것이다. 이것 말고도 아마 활용할 수 있는 방안이 꽤 있을것이다.

 

 

SELECT FROM  MEMBER3  WHERE  NOT  AGE  BETWEEN  20  AND  30 ;

 

 

NOT를 BETWEEN과 함께 적게되면 해당하는 범위가 아닌 범위 밖에 있는 값들을 구할 수 있다. 아주 유용하게 쓰일거 같다.

 


이렇게 조건절과 연산자에 대한 글을 마쳤다. 인터넷을 검색해보면 이것보다 수많은 쿼리문과 예시들이 존재한다. 하지만 내 머리로는 100% 다 알지 못하니 기본이라도 제대로 공부하자. 

 

반복숙달 하다보면 나도 잘 할 수 있지 않을까? 라는 생각을 하며 다음글을 준비해야겠다.

 

 

어제는 모각코 모임에 나가서 블로그를 썼다. 내 포트폴리오를 보여드리고 피드백도 받았다. 도움이 많이 된거같다. 다른 멤버님들은 대부분 취업을 하셨는데... 나도 얼른 열심히 해서, 취업 후 모임에 나가고 싶다. 좀 더 열심히 공부해보자. 으쌰!!

 

 

 

[도움주신 사이트]

 

Truman Show

딥러닝을 공부하는 블로그입니다.

truman.tistory.com

 

 

'분류 전체보기' 카테고리의 글 목록

끊임없이 제 자신을 계발하는 개발자입니다👨🏻‍💻

yermi.tistory.com

 

 

SQL 특징, SQL의 종류, Select 문, Select 산술연산, as 별칭 부여, || 연결 연산자, where 조건절, in, between,

---------------------------SQL---------------------------------- --SQL 이란 --Staructured QUERY LANGUAGE(구조화된 질의언어) --데이터베이스를 대상으로 질의를 수행할 수 있다. --데이터의 조회, 데이터의 추가, 데이터

cmelcmel.tistory.com