본문 바로가기
programming/DataManage

mysql SELECT 조건절 AND OR NOT 혼합 사용 using mysql SELECT conditions

by 개코 - 개발과 코딩 2022. 5. 22.

mysql에서 SELECT 의 WHERE 조건절은 데이터를 검색하는데 사용된다. AND OR NOT 조건절은 데이터 검색에 대한 조건을 추가하여 데이터의 상세한 내용을 검색할 수 있도록 한다. 이런 조건 키워드들을 사용할 때 중첩과 혼합하여 사용하면 하나의 데이터에 대해 유연한 검색조건을 만들 수 있다.

mysql SELECT 조건절 AND OR NOT 혼합 사용
using mysql SELECT conditions

데이터베이스의 테이블을 검색할 때는 많은 조건이 들어간다.

업무의 특성에 따라 수시로 변동될 수도 있고, 검색조건은 그 때마다 달라질 수도 있다.

테이블에 존재하는 데이터들은 시간이 지남에 따라 양이 늘어난다.

그렇기에 많은 데이터들을 검색조건을 이용하여 검색하는 것이 중요해 진다.

이전에 다뤘던 SELECT 구문은 AND, OR, NOT 구문은 이런 것들을 혼합해서 사용하면 그만큼 테이블의 데이터를 검색하는데 편의성을 준다.

조건절 혼합 사용

먼저 mysql 에서 사용하는 SELECT 조회 구문의 검색조건을 상기해 본다.

WHERE 절로 시작하는 검색조건에는 AND, OR, NOT 이 있다.

AND 조건은 검색조건이 맞는 것만 찾을 수 있지만 하나의 컬럼에서 2개 이상의 서로 다른 값을 찾을 경우 OR 조건절을 사용할 수 있다.

특정 데이터를 제외하고 싶다면 NOT 조건절을 사용할 수 있다.

아래는 WHERE 조건절에서 AND, OR, NOT 조건절이 어떻게 사용되는지 보여주는 구문이다.

SELECT * FROM 테이블명
 WHERE ( 컬럼명 = 값 OR 컬럼명 = 값 )
   AND ( 컬럼명 = 값 OR 컬럼명 = 값 )
   AND ( NOT 컬럼명 = 값 )
;

샘플코드

mysql의 WHERE 조건절에서 AND OR NOT 구문을 사용하는 어렵지 않지만, 조건 구문 사용에 대한 이해를 하는 것이 중요하다.

AND 나 OR 조건절은 어떤 컬럼에서 조건이 맞는 것을 찾는 것이지만, 같은 컬럼에 대해 중복으로 데이터를 검색하고 싶다면 OR 조건절을 사용하는 것이 좋다.

아래의 코드를 보자.

테이블의 추가부터 삭제까지 있기 때문에 중간의 조건절이 들어간 부분만 참고하면 된다.

/** tb_sample 테이블을 생성 */
CREATE TABLE tb_sample (
	idx INT,
	company VARCHAR(250),
	title VARCHAR(250),
	content TEXT,
	insert_date DATETIME,
	update_date DATETIME
)
;

/** tb_sample 테이블에 데이터 추가  */
INSERT INTO tb_sample ( idx, company, title, content, insert_date, update_date )
VALUES( '1', '현대자동차', '제목1', '내용1', NOW(), NOW() )
;
INSERT INTO tb_sample ( idx, company, title, content, insert_date, update_date )
VALUES( '2', '기아자동차', '제목2', '내용2', NOW(), NOW() )
;
INSERT INTO tb_sample ( idx, company, title, content, insert_date, update_date )
VALUES
( '3', '현대자동차', '제목3', '내용3', NOW(), NOW() )
;
INSERT INTO tb_sample ( idx, company, title, content, insert_date, update_date )
VALUES ( '4', '기아자동차', '제목4', '내용4', NOW(), NOW() )
;
INSERT INTO tb_sample ( idx, company, title, content, insert_date, update_date )
VALUES ( '5', '쌍용자동차', '제목5', '내용5', NOW(), NOW() )
;

SELECT * FROM tb_sample
;

SELECT * FROM tb_sample
 WHERE ( company = '기아자동차' OR company = '현대자동차' )
   AND ( title = '제목1' OR title = '제목2')
   AND ( NOT content = '내용2')
;

/** tb_sample 테이블 데이터 삭제  */
DELETE FROM tb_sample
;

/** tb_sample 테이블 데이터 완전 삭제  */
TRUNCATE tabLE tb_sample
;

/** tb_sample 테이블 삭제  */
DROP TABLE tb_sample
;

/*-----*/

조건절에서 많은 경우 AND 를 자주 사용한다. 쿼리를 많이 만들다보면 이런경우 저런경우 검색이 많아지거나 중복되는 데이터에 대해 검색이 필요한 경우들도 생긴다.

이런 경우 AND 와 OR 조건절을 중첩하여 사용하면 필요한 데이터만 검색하는데 수월하다.

반응형

댓글