DB Oracle Where문


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

다음으로 키가 182cm 이상이고 출생연도가 1970년 이상인 사람의 AND절에 usertbl 테이블의 키 컬럼을 조건으로 사용하면 과 Lee를 모두 만족하는 결과값만 승기와 성시경이 수색된다.
조건문을 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란에 Kim으로 시작하는 사람을 검색하면 김범수, 김경호로 검색됩니다.
두 번째 구문에서는 Yoon으로 시작하는 이름에 대해 Yoon Jongshin만 인쇄되는 것을 볼 수 있습니다.

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 문법에 적용하면 1번의 경우 이글로 시작해서 NAME란에 검색하면 이승기가 검색되고, 2번의 경우 중간에 win이 들어간 이름에 조건이 주어짐 세 글자로 이승기를 검색하면 확인할 수 있다.

2023년 1월 17일 – (프로그래밍 및 데이터베이스/SQL) – DB Oracle SQL PLUS 사용

DB Oracle SQL PLUS 사용 방법

DB 사용 Oracle SQL PLUS C:>sqlplus Shop/oracle@xe SQL*Plus: 2023년 1월 15일 18:32:36에 버전 11.2.0.2.0 생산 Copyright (c) 1982, 2014, Oracle. 판권 소유. 연결 대상: Oracle Database 11g Express Edition 버전 11.2.0.2.

pinetreeday.tistory.com

2023년 2월 11일 – (프로그래밍 및 데이터베이스/SQL) – DB Oracle Select 문 테이블 생성

DB Oracle Select 문 테이블 생성

DB Oracle select 문 생성 테이블 CREATE TABLE userTbl — 구성원 테이블( userID CHAR(8) NOT NULL PRIMARY KEY, — 사용자 ID(pK) name VARCHAR(10) NOT NULL, — name birthYear INT NOT NULL, — 생년월일 addr CHAR(2) NOT NULL, — G

pinetreeday.tistory.com

HP 이 포스팅의 내용은 제 기준으로 작성되었으니 참고해주시면 감사하겠습니다.

게시 과정의 오류 및 오타와 궁금한 사항에 대한 의견을 남겨주세요.