GSI

--============================================================--
-- SELECT
--============================================================--
-- 가장 간단한 select 구문
select * from userTbl
/* 결과
userID   name       birthYear   addr mobile1 mobile2  height
-------- ---------- ----------- ---- ------- -------- ------
AJH      안정환        1979        강원   NULL    NULL     182
CJC      최진철        1975        제주   011     0000000  142
JJJ      조재진        1986        충북   019     3333333  179
*/

--============================================================--
-- SELECT + WHERE + 관계 연산자
--============================================================--
-- where 가 포함된 select 구문
select * from userTbl where name = '박지성'
/* 결과
userID   name       birthYear   addr mobile1 mobile2  height
-------- ---------- ----------- ---- ------- -------- ------
PJS      박지성        1983        서울   011     1111111  181
*/

-- 1980년 이후에 출생하고, 신장이 180 이상인 사람의 아이디와 이름을 조회
select userID, Name from userTbl where birthYear >= 1981 and height >= 180
/* 결과
userID   Name
-------- ----------
LYP      이영표
PJS      박지성
*/

-- 1980년 이후에 출생했거나, 신장이 180 이상인 사람의 아이디와 이름을 조회
select userID, Name from userTbl where birthYear >= 1981 or height >= 180
/* 결과
userID   Name
-------- ----------
AJH      안정환
JJJ      조재진
KNI      김남일
LCS      이천수
LYP      이영표
PJS      박지성
PJY      박주영
SJK      송종국
*/

--============================================================--
-- SELECT + WHERE + BETWEEN... AND 와 IN()
--============================================================--
-- 신장이 180 ~ 183인 사람을 조회
select name, height from userTbl where height >= 180 and height <= 183
/* 결과
name       height
---------- ------
안정환        182
김남일        183
이영표        181
박지성        181
*/

-- 신장이 180 ~ 183인 사람을 조회 ( between )
select name, height from userTbl where height between 180 and 183
/* 결과
name       height
---------- ------
안정환        182
김남일        183
이영표        181
박지성        181
*/

-- 키가 정확하게 178, 180, 182 인 사람의 정보만을 조회
select name, height from userTbl where height=178 or height=180 or height=182
/* 결과
name       height
---------- ------
안정환        182
박주영        178
설기현        178
*/

--============================================================--
-- SELECT + WHERE + ANY, ALL, SOME 그리고 하위쿼리(SubQuery, 서브쿼리)
--============================================================--
-- 박지성의 보다 키가 큰 사람의 이름과 키를 출력하려면 where 조건에 박지성의
-- 키를 적어 줘야 한다.
select name, height from userTbl where height > 181
/* 결과
name       height
---------- ------
안정환        182
김남일        183
송종국        185
*/
-- 이를 쿼리를 통해서 사용할 수 있다.
select name, height from userTbl
 where height > (select height from userTbl where name='박지성')

/* 결과
name       height
---------- ------
안정환        182
김남일        183
송종국        185
*/

-- 구문 011에 포함된, 내용이 두개 이상이기 때문에 오류가 납니다.
select name, height from userTbl
 where height >= (select height from userTbl where mobile1='011')

-- >> 두개의 결과값이 한개 이상이라서 오류가 난다.
-- >> 이때 해결할 것은 ANY를 사용하면 된다.
/* 결과
메시지 512, 수준 16, 상태 1, 줄 1
하위 쿼리에서 값을 둘 이상 반환했습니다
*/

-- ANY 011에 포함된 내용을 모두 사용해서 결과값을 뽑는다.
select name, height from userTbl
 where height >= ANY (select height from userTbl where mobile1='011')
/* 결과
name       height
---------- ------
안정환        182
최진철        142
조재진        179
김남일        183
이천수        179
이영표        181
박지성        181
박주영        178
송종국        185
설기현        178
*/

-- ALL 을 사용해서 처리
select name, height from userTbl
 where height >= ALL (select height from userTbl where mobile1='011')

/* 결과
name       height
---------- ------
안정환        182
김남일        183
이영표        181
박지성        181
송종국        185
*/

--
select name, height from userTbl
 where height = ANY (select height from userTbl where mobile1='011')
/* 결과
name       height
---------- ------
최진철        142
조재진        179
이천수        179
이영표        181
박지성        181
박주영        178
설기현        178
*/

-- ANY, IN 두개 동일한 의미이다.
select name, height from userTbl
 where height IN (select height from userTbl where mobile1='011')

/* 결과
name       height
---------- ------
최진철        142
조재진        179
이천수        179
이영표        181
박지성        181
박주영        178
설기현        178
*/

--============================================================--
-- SELECT + WHERE + ORDER BY 절
--============================================================--
-- ORDER BY
select name, height from userTbl order by height desc
/* 결과
name       height
---------- ------
송종국        185
김남일        183
안정환        182
이영표        181
박지성        181
이천수        179
조재진        179
박주영        178
설기현        178
최진철        142
*/

-- order by 를 두개 사용, desc, asc 두개를 혼합
select name, height from userTbl order by height desc, name asc
/* 결과
name       height
---------- ------
송종국        185
김남일        183
안정환        182
박지성        181
이영표        181
이천수        179
조재진        179
박주영        178
설기현        178
최진철        142
*/

--============================================================--
-- SELECT + WHERE + DISTANCE, TOP(N), TABLESAMPLE
--============================================================--

-- 거주지역이 몇 군데인지 출력
select addr from userTbl
/* 결과
addr
----
강원 
제주 
충북 
경북 
인천 
전북 
서울 
경기 
경기 
서울
*/

-- 거주지역에 order by 사용
select addr from userTbl order by addr
/* 결과
addr
----
강원 
경기 
경기 
경북 
서울 
서울 
인천 
전북 
제주 
충북
*/

-- DISTINCT 를 사용해서 중복내용을 삭제
select distinct addr from userTbl
/* 결과
addr
----
강원 
경기 
경북 
서울 
인천 
전북 
제주 
충북
*/

Posted by gsi
: