-
DB Oracle Where문 활용하는 방법(1)Programming and Database/SQL 2023. 2. 15. 19:51728x90반응형
DB Oracle Where문 활용 하는 방법(1)
SLELECT * FROM USERTBl; USERID NAME BIRTHYEAR ADDR MOB MOBILE2 HEIGHT MDATE -------- ---------- ---------- -------- --- -------- ---------- -------- LSG 이승기 1987 서울 011 1111111 182 08/08/08 KBS 김범수 1979 경남 011 2222222 173 12/04/04 KKH 김경호 1971 전남 019 3333333 177 07/07/07 JYP 조용필 1950 경기 011 4444444 166 09/04/04 SSK 성시경 1979 서울 186 13/12/12 LJB 임재범 1963 서울 016 6666666 182 09/09/09 YJS 윤종신 1969 경남 170 05/05/05 EJW 은지원 1972 경북 011 8888888 174 14/03/03 JKW 조관우 1965 경기 018 9999999 172 10/10/10 BBK 바비킴 1973 서울 010 0000000 176 13/05/05
▶ 위와 같이 usertbl 테이블에서 열과 행에 있는 데이터를 조회합니다.
SELECT * FROM USERTBL WHERE NAME = '김경호'; USERID NAME BIRTHYEAR ADDR MOB MOBILE2 HEIGHT MDATE -------- ---------- ---------- -------- --- -------- ---------- -------- KKH 김경호 1971 전남 019 3333333 177 07/07/07 SELECT * FROM USERTBL WHERE NAME = '이승기'; USERID NAME BIRTHYEAR ADDR MOB MOBILE2 HEIGHT MDATE -------- ---------- ---------- -------- --- -------- ---------- -------- LSG 이승기 1987 서울 011 1111111 182 08/08/08
▶ usertbl 테이블에서 모든 칼럼을 조회하고 조건절로 Name 컬럼에서 김경호라는 이름으로 조회를 하게 되면 김경호에 대한 열만 조회가 됩니다. 마찬가지로 동일한 조건절로 이승기 이름을 조회할 경우 이승기에 대한 열만 조회가 됩니다.
SELECT * FROM USERTBL WHERE BIRTHYEAR >=1970 AND HEIGHT >=182; USERID NAME BIRTHYEAR ADDR MOB MOBILE2 HEIGHT MDATE -------- ---------- ---------- -------- --- -------- ---------- -------- LSG 이승기 1987 서울 011 1111111 182 08/08/08 SSK 성시경 1979 서울 186 13/12/12 SELECT * FROM USERTBL WHERE ADDR ='경남' AND HEIGHT <= 180; USERID NAME BIRTHYEAR ADDR MOB MOBILE2 HEIGHT MDATE -------- ---------- ---------- -------- --- -------- ---------- -------- KBS 김범수 1979 경남 011 2222222 173 12/04/04 YJS 윤종신 1969 경남 170 05/05/0
▶ 다음으로는 usertbl 테이블에서 Height 컬럼을 조건절로 182cm 이상이면서 Birthyear가 1970년 이상인 사람의 AND 절을 조건으로 하게 되면 두 개 모두 만족하는 결과 값만 조회하게 되어 이승기, 성시경이 조회되게 됩니다. 마찬가지로 Addr 주소를 경남으로 하면서 키가 180cm 이하인 경우로 조건절을 하게 되면 모두 만족하는 김범수와 윤종신이 결과물로 조회됩니다.
SELECT * FROM USERTBL WHERE ADDR ='경남' OR HEIGHT <= 180; USERID NAME BIRTHYEAR ADDR MOB MOBILE2 HEIGHT MDATE -------- ---------- ---------- -------- --- -------- ---------- -------- KBS 김범수 1979 경남 011 2222222 173 12/04/04 KKH 김경호 1971 전남 019 3333333 177 07/07/07 JYP 조용필 1950 경기 011 4444444 166 09/04/04 YJS 윤종신 1969 경남 170 05/05/05 EJW 은지원 1972 경북 011 8888888 174 14/03/03 JKW 조관우 1965 경기 018 9999999 172 10/10/10 BBK 바비킴 1973 서울 010 0000000 176 13/05/05 SELECT * FROM USERTBL WHERE BIRTHYEAR >=1970 OR HEIGHT >=182; USERID NAME BIRTHYEAR ADDR MOB MOBILE2 HEIGHT MDATE -------- ---------- ---------- -------- --- -------- ---------- -------- LSG 이승기 1987 서울 011 1111111 182 08/08/08 KBS 김범수 1979 경남 011 2222222 173 12/04/04 KKH 김경호 1971 전남 019 3333333 177 07/07/07 SSK 성시경 1979 서울 186 13/12/12 LJB 임재범 1963 서울 016 6666666 182 09/09/09 EJW 은지원 1972 경북 011 8888888 174 14/03/03 BBK 바비킴 1973 서울 010 0000000 176 13/05/05
▶ 다음은 위와 비슷한 구문처럼 보이지만 조건절에 AND가 아닌 OR를 사용함으로써 첫 번째 조건문에서는 주소지가 경남이면서 키가 180cm 이하인 사람 즉, 둘 중 하나만 만족해도 성립되는 결과 값이 조회되게 됩니다.
마찬가지로 두 번째로는 출생일과 키가 182cm 이하일 경우 둘 중 하나만 만족하게 되는 값이 조회됩니다.SELECT * FROM USERTBL WHERE HEIGHT >= 180 AND HEIGHT <= 183; USERID NAME BIRTHYEAR ADDR MOB MOBILE2 HEIGHT MDATE -------- ---------- ---------- -------- --- -------- ---------- -------- LSG 이승기 1987 서울 011 1111111 182 08/08/08 LJB 임재범 1963 서울 016 6666666 182 09/09/09 SELECT * FROM USERTBL WHERE HEIGHT BETWEEN 180 AND 183; USERID NAME BIRTHYEAR ADDR MOB MOBILE2 HEIGHT MDATE -------- ---------- ---------- -------- --- -------- ---------- -------- LSG 이승기 1987 서울 011 1111111 182 08/08/08 LJB 임재범 1963 서울 016 6666666 182 09/09/09
▶ 다음 구문에서는 위와 같이 키가 180 ~ 183cm 사이에 만족하는 사람들을 조건으로 조회했을 때 이승기, 임재범이 출력이 됩니다. 그러나 AND 조건을 사용하기보다는 아래와 같이 Between 180 AND 183 구문을 통해서 동일한 결과를 조회할 수 있습니다.
SELECT * FROM USERTBL WHERE ADDR ='경남' OR ADDR='경기' OR ADDR='전남'; USERID NAME BIRTHYEAR ADDR MOB MOBILE2 HEIGHT MDATE -------- ---------- ---------- -------- --- -------- ---------- -------- KBS 김범수 1979 경남 011 2222222 173 12/04/04 KKH 김경호 1971 전남 019 3333333 177 07/07/07 JYP 조용필 1950 경기 011 4444444 166 09/04/04 YJS 윤종신 1969 경남 170 05/05/05 JKW 조관우 1965 경기 018 9999999 172 10/10/10 SELECT * FROM USERTBL WHERE ADDR IN('경남','경기','전남'); USERID NAME BIRTHYEAR ADDR MOB MOBILE2 HEIGHT MDATE -------- ---------- ---------- -------- --- -------- ---------- -------- KBS 김범수 1979 경남 011 2222222 173 12/04/04 KKH 김경호 1971 전남 019 3333333 177 07/07/07 JYP 조용필 1950 경기 011 4444444 166 09/04/04 YJS 윤종신 1969 경남 170 05/05/05 JKW 조관우 1965 경기 018 9999999 172 10/10/10
▶ 다음 구문에서는 Where문에 OR 조건절을 사용하여 주소가 경남, 경기, 전남 3개 중 하나만 성립하여도 조회가 되도록 SQL문을 작성하게 되면 결과가 위와 같이 조회됩니다.
하지만 변수를 계속적으로 조건을 달게 되면 OR를 계속 사용하게 되어 쿼리문이 길어질 수 있기 때문에 IN을 사용하여 안에 칼럼 값을 넣어 조회를 하게 되면 동일한 조건문의 결과를 조회할 수 있습니다.SELECT * FROM USERTBL WHERE NAME LIKE '김%'; USERID NAME BIRTHYEAR ADDR MOB MOBILE2 HEIGHT MDATE -------- ---------- ---------- -------- --- -------- ---------- -------- KBS 김범수 1979 경남 011 2222222 173 12/04/04 KKH 김경호 1971 전남 019 3333333 177 07/07/07 SELECT * FROM USERTBL WHERE NAME LIKE '윤%'; USERID NAME BIRTHYEAR ADDR MOB MOBILE2 HEIGHT MDATE -------- ---------- ---------- -------- --- -------- ---------- -------- YJS 윤종신 1969 경남 170 05/05/05
▶ 다음 구문에서는 LIKE를 사용하여 첫 번째 구문에서는 NAME 칼럼의 김으로 시작하는 사람에 대해서 조회를 하게 되면 김범수, 김경호가 조회됩니다. 두 번째 구문에서 윤으로 시작하는 이름 역시 윤종신만 출력되는 것을 확인할 수 있습니다.
SELECT * FROM USERTBL WHERE NAME LIKE '__호'; USERID NAME BIRTHYEAR ADDR MOB MOBILE2 HEIGHT MDATE -------- ---------- ---------- -------- --- -------- ---------- -------- KKH 김경호 1971 전남 019 3333333 177 07/07/07 SELECT * FROM USERTBL WHERE NAME LIKE '%호'; USERID NAME BIRTHYEAR ADDR MOB MOBILE2 HEIGHT MDATE -------- ---------- ---------- -------- --- -------- ---------- -------- KKH 김경호 1971 전남 019 3333333 177 07/07/07
▶ 다음으로는 첫 번째 조건문에서 __호 즉 세 글자가 성립이 되며 LIKE 구문을 통해서 호로 끝나는 세글자 이름을 조회할 경우 김경호만 조회되는 것을 확인할 수 있습니다. 두 번째의 경우는 호로 끝나는 이름에 대해서 조회를 할 경우 동일하게 김경호가 조회되는 것을 확인할 수 있습니다.
두 구문의 차이라면 첫 번째의 경우는 글자수에 대한 조건을 주고 두번째의 경우는 호로 끝나는 이름에 대해 조건을 주어 많은 데이터를 조회할 시 차이가 있을수 있습니다.SELECT * FROM USERTBL WHERE NAME LIKE '이%'; USERID NAME BIRTHYEAR ADDR MOB MOBILE2 HEIGHT MDATE -------- ---------- ---------- -------- --- -------- ---------- -------- LSG 이승기 1987 서울 011 1111111 182 08/08/08 SELECT * FROM USERTBL WHERE NAME LIKE '_승_'; USERID NAME BIRTHYEAR ADDR MOB MOBILE2 HEIGHT MDATE -------- ---------- ---------- -------- --- -------- ---------- -------- LSG 이승기 1987 서울 011 1111111 182 08/08/08
▶ 앞선 Like구문을 통해서 응용을 하게 되면 첫번째의 경우는 이로 시작하는 NAME 칼럼에서 조회할 경우 이승기가 조회되며 두 번째의 경우 세 글자 중 가운데 승이 포함된 이름에 대해서 조건을 주게 되어 이승기가 조회되는 것을 확인할 수 있습니다.
2023.01.17 - [Programming and Database/SQL] - DB Oracle SQL PLUS 활용하는 방법
2023.02.11 - [Programming and Database/SQL] - DB Oracle Select문 테이블 생성하기
PS. 포스팅의 내용은 제 기준으로 작성한 것이기 때문에 참고해서 보시면 감사하겠습니다.
포스팅 과정의 오류 및 오타 그리고 궁금한 점에 대해서는 댓글 남겨주세요.
728x90반응형'Programming and Database > SQL' 카테고리의 다른 글
DB Oracle21 ASM + RAC 환경 구축하기(With.OS 환경 설치) 2편 (4) 2024.06.10 DB Oracle21 ASM + RAC 환경 구축하기(With.H/W 환경 설치) 1편 (0) 2024.06.09 DB Oracle Select문 활용하는 방법 (4) 2023.02.11 DB Oracle SQL PLUS 활용하는 방법 (8) 2023.01.17 DB Oracle 백업을 통한 테이블 복구 하는 방법 (4) 2023.01.16