ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DB Oracle Where문 활용하는 방법(1)
    Programming and Database/SQL 2023. 2. 15. 19:51
    반응형

    DB로고이미지

    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 활용하는 방법

     

    DB Oracle SQL PLUS 활용하는 방법

    DB Oracle SQL PLUS 활용하는 방법 C:>sqlplus Shop/oracle@xe SQL*Plus: Release 11.2.0.2.0 Production on 일 1월 15 18:32:36 2023 Copyright (c) 1982, 2014, Oracle. All rights reserved. Connected to: Oracle Database 11g Express Edition Release 11.2.0.2.

    pinetreeday.tistory.com

    2023.02.11 - [Programming and Database/SQL] - DB Oracle Select문 테이블 생성하기

     

    DB Oracle Select문 테이블 생성하기

    DB Oracle Slect문 테이블 생성하기 CREATE TABLE userTbl -- 회원 테이블 ( userID CHAR(8) NOT NULL PRIMARY KEY, -- 사용자 아이디 (pK) name VARCHAR(10) NOT NULL, -- 이름 birthYear INT NOT NULL, -- 출생년도 addr CHAR(2) NOT NULL, -- 지

    pinetreeday.tistory.com

     

    PS. 포스팅의 내용은 제 기준으로 작성한 것이기 때문에 참고해서 보시면 감사하겠습니다.

    포스팅 과정의 오류 및 오타 그리고 궁금한 점에 대해서는 댓글 남겨주세요.

    반응형

    댓글

Designed by Tistory.