상세 컨텐츠

본문 제목

SELECT 문으로 데이터 조회 2-2 연산자 활용 1~4

MySQL

by 싫은밀 2024. 5. 27. 16:44

본문

728x90
반응형

책 홍보 : https://product.kyobobook.co.kr/detail/S000201370815

 

너 혼자서도 할 수 있어! SQL능력자 | 서진수 - 교보문고

너 혼자서도 할 수 있어! SQL능력자 | 이 책은 SQL을 처음 공부하는 사람부터 현업에서 직접 SQL 을 작성해야 하는 사람들까지 사용할 수 있도록 SQL 기초부터 활용까지를 아주 쉽지만 현업에 적용

product.kyobobook.co.kr

 
위 책을 읽고 실습 후 복습차원으로 게시물을 작성함을 알린다.


(1) 다른 조건을 검색하기(! = / < >)

1 SELECT deptno "부서번호", name "이름", hobby "취미"
2 FROM emp
3 WHERE deptno != 1011 ;

 위 SQL에서 3번 행을 보면 != 연산자를 사용하여 deptno 값이 1011번이 아닌 모든 데이터를 출력함. <> 연산자를 사용해도 동일함.

 

(2) 특정 구간의 값을 추출하기 (BETWEEN a AND b)

아래 SQL은 department 테이블에서 부서 번호(deptno), 부서 이름(dname), 건물이름(build)을 출력하는데 deptno 값이 100이상 200이하인 부서들의 값을 추출하는 SQL.

1 SELECT deptno, dname, build
2 FROM department
3 WHERE deptno BETWEEN 100 AND 200 ; 

BETWEEN a AND b에서 a와 b를 모두 포함함.

 

실전에서는 성능상에 이슈로 BETWEEN 연산자보다는 >=, <= 연산자를 훨씬 더 많이 사용.

 

1 SELECT deptno, dname, build
2 FROM department
3 WHERE deptno >= 100 AND deptno <= 200 ;

 

(3) 여러가지 조건을 한꺼번에 지정하기 (IN)

여러가지 조건 중에서 해당 되는 조건만을 추출할 때 많이 사용되는 연산자. OR 연산자를 여러 번 쓰는 것을 간략하게 사용할 수 있도록 해 주는 방법 OR연산자는 여러 가지 조건 중 1가지라도 만족하는 경우를 추출함.

아래 SQL은 professor 테이블dptj deptno 값이 101dlrjsk 102이거나 103인 교수들의 교수번호 (profno), 이름(name), 학과번호(deptno) 값을 출력함.

 

1 SELECT profno, name, deptno
2 FROM professor
3 WHERE deptno IN(101,102,103) ;

위 결과에서 deptno 부분을 보면 101~103번만 조회된 것이 확인됨.

여러 가지 조건을 지정하여 해당되는 조건의 값을 출력할 때 IN 연산자를 아주 많이 사용, 특히 조건 검색시 상당히 속도가 빨라서 실무에서도 아주 많이 사용되고 있는 연산자.

 

(4) 특정 패턴을 지정하여 검색하기 (LIKE)

 

LIKE 연산자는 항상 함꼐 사용하는 기호가 2가지가 있는데 2가지 기호의 의미와 사용방법을 알아야함. 2가지 연산자의 의미는 아래와 같다.

 

 % 기호 : 모든 글자를 의미하고 글자 수도 0글자부터 모든 글자 수를 의미.

 _기호 : 모든 글자를 의미하고 _기호 1개당 반드시 1글자만 올 수 있다.

 

아래 SQL은 emp 테이블에서 이름의 첫 글자가 'K'로 시작하는 사원들의 이름과 급여를 추출하는 SQL.

1 SELECT name, pay
2 FROM emp 
3 WHERE name LIKE 'K%' ;

위  그림과 같이 3번 행에서 WHERE 조건에 LIKE 'K%'라고 하니까 K로 시작하는 모든 이름들이 다 출력되었습니다.

만약 % 대신_ 기호를 사용하면 _ 기호 1글자당 1개의 문자와 치환되기 때문에 위 코드에서는 아무런 데이터도 출력되지 않게됨.

 

 그런데 % 기호나 _ 기호를 사용할 때는 아주 조심해야 하는 점이 있음.

% / _ 기호를 맨 앞에 사용할 경우에는 데이터베이스에서 인덱스라는 것을 사용할 수가 없어서 SQL 실행 속도가 아주 느리게 된다.

 

1 SELECT name, pay

2 FROM emp

3 WHERE name LIKE '%e%' ; 

 

위 SQL에서 3번 행의 조건을 보면 '%e%'를 사용했는데 이 조건의 의미는 소문자 e가 들어있는 모든 이름을 다 출력하라는 의미가 됨. 이렇게 % 기호를 맨 앞에 쓰면 SQL의 실행 속도를 빠르게 하기 위해 만들어 놓은 인덱스를 사용할 수 없게 되어 SQL 실행 속도가 아주 느리게 됨. 절대로 위의 예와 같이 LIKE 뒤에 조건을 쓸 때 % 기호나 _ 기호를 먼저 쓰면 안됨.

728x90
반응형

관련글 더보기