노무현 대통령 배너

실습 예제들...
==============================================================================================
테이블 CUSTOM 에서 USERID, USERNAME, ADDR1을 검색하고, COMPANY 테이블에서DEPT를 검색

SELECT * FROM CUSTOM;   --494 개 레코드
SELECT * FROM COMPANY; --490 개 레코드

SELECT  M.USERID, USERNAME, ADDR1, DEPT
FROM CUSTOM M INNER JOIN COMPANY Y
ON M.USERID = Y.USERID;

또는

SELECT  M.USERID, USERNAME, ADDR1, DEPT
FROM CUSTOM M , COMPANY Y
WHERE M.USERID = Y.USERID; --490 개 레코드

USERID     USERNAME   ADDR1                DEPT
========  ============  ==========  ==================
mi6840     이병학     서울특별시           비서실
mi8784     김종수     서울특별시           자재부
mi9323     최원규     경상남도             자재부
ml8878     편인수     광주광역시           비서실
mm5702     신혜영     전라북도             경영지원팀
mo4840     박경훈     충청남도             생산부
mo5918     정병현     경기도               AN 생산부
mo8322     노두진     경기도               영업팀
ms1580     김영재     경상북도             벌크영업부
ms4374     박종태     서울특별시           인사팀
mt3362     최성원     대구광역시           전자과
na2486     이성휘     서울특별시           노블카운티
na4477     이상연     광주광역시           비서실
na8103     박동원     전라남도             마켓팅팀
na8637     이건웅     인천광역시           품질보증
ne6444     오창렬     전라남도             자재부
                  .
                  .
                  .
                  .
490개 레코드=================================================================================================

=================================================================================================
CUSTOM 테이블에서 USERID , USERNAME을 검색하고 POINT 테이블에서 제품구입, 로그인에 관계된 PRODUCT, LOGIN 검색

SELECT * FROM CUSTOM;  --494 개 레코드
SELECT * FROM POINT;      --494 개 레코드

SELECT C.USERID, USERNAME, PRODUCT, LOGIN
FROM CUSTOM C INNER JOIN POINT P
ON C.USERID = P.USERID;

또는

SELECT C.USERID, USERNAME, PRODUCT, LOGIN
FROM CUSTOM C , POINT P
WHERE C.USERID = P.USERID;  -- 494 개 레코드

USERID     USERNAME      PRODUCT    LOGIN
---------------------------------------------
_n2679     고영기            200          5
006582     박철웅             60          4
012089     최용만             30          4
012676     허칠홍             30          2
015810     박준희             30         12
017625     임형택             30          2
018000     김상철            200          2
022913     박종원             30          3
026899     이동하             30          4
028325     최동환             30          3
058009     김성수             30          3
074210     조승희             60          6
.
.
.
494 개 레코드
============================================================================================
=============================================================================================
위 예에서 로그인 점수가 10 인상인 행 검색

SELECT C.USERID, USERNAME, PRODUCT, LOGIN
FROM CUSTOM C INNER JOIN POINT P
ON C.USERID = P.USERID
WHERE LOGIN>=10;

SELECT C.USERID, USERNAME, PRODUCT, LOGIN
FROM CUSTOM C INNER JOIN POINT P
ON C.USERID = P.USERID
AND LOGIN>=10;

SELECT C.USERID, USERNAME, PRODUCT, LOGIN
FROM CUSTOM C , POINT P
WHERE C.USERID = P.USERID
AND LOGIN>=10;

==================================================================================


=================================================================================
중복된 데이터 찾기...

1. CUSTOM 테이블에서 중복된이름을 같는 사람을 찾아보자
SELECT * FROM CUSTOM; -- 494개의 레코드, 이름, ID, 주민번호, 나이, 주소, 등등의 정보



2. 테이블을 상호 조인한다.
SELECT * FROM CUSTOM AA, CUSTOM BB;
--또는
SELECT * FROM CUSTOM AA CROSS JOIN CUSTOM BB;
서로 상호조인하여, 244036 개의 레코드 (494*494)

3. 보기 쉽게 데이터를 정리해보자...
SELECT AA.USERID, AA.USERNAME, BB.USERID, BB.USERNAME
FROM CUSTOM AA , CUSTOM BB
ORDER BY AA.USERNAME, BB.USERNAME;


USERID USERNAME USERID_1 USERNAME_1
mh3020 Park's CY mh3020 Park's CY
mh3020 Park's CY 953075 강석구
mh3020 Park's CY OB7387 강성민
mh3020 Park's CY ik3837 강영욱
mh3020 Park's CY wd2588 강윤필
mh3020 Park's CY 799915 강태임
mh3020 Park's CY rp9890 고강석
mh3020 Park's CY bs4796 고강욱
.
.
.
244036 개의 레코드
'


4. 이름으로 일치하는 레코드를 표현하면

SELECT AA.USERID, AA.USERNAME, BB.USERID, BB.USERNAME
FROM CUSTOM AA , CUSTOM BB
WHERE AA.USERNAME = BB.USERNAME
ORDER BY AA.USERNAME, BB.USERNAME;

USERID USERNAME USERID_1 USERNAME_1
mh3020 Park's CY mh3020 Park's CY
953075 강석구 953075 강석구
OB7387 강성민 OB7387 강성민
ik3837 강영욱 ik3837 강영욱
wd2588 강윤필 wd2588 강윤필
799915 강태임 799915 강태임
rp9890 고강석 rp9890 고강석
bs4796 고강욱 bs4796 고강욱
765689 고광배 765689 고광배
861381 고동석 861381 고동석
ad6159 고명균 ad6159 고명균
ry8911 고승현 ry8911 고승현
_n2679 고영기 _n2679 고영기
bo8726 고영인 bo8726 고영인
777486 고영진 777486 고영진
401303 고운기 401303 고운기
om6846 고종운 om6846 고종운
ak5833 고준필 ak5833 고준필
.
.
.
534 개의 레코드
중에서....

동명이인인 백승엽은 이름으로 일치 하는 4개의 레코드
no3372  백승엽   no3372  백승엽
dj9811   백승엽   no3372  백승엽
no3372  백승엽   dj9811   백승엽
dj9811   백승엽   dj9811   백승엽

동명 삼인인 박경훈은 이름으로 일치 하는 9개의 레코드
ot1194   박경훈   el3409   박경훈
el3409   박경훈   el3409   박경훈
mo4840    박경훈   el3409     박경훈
ot1194   박경훈   ot1194   박경훈
mo4840    박경훈   ot1194     박경훈
el3409   박경훈   ot1194   박경훈
ot1194   박경훈   mo4840    박경훈
el3409   박경훈   mo4840    박경훈
mo4840    박경훈    mo4840  박경훈


5. 여기서 동명이인, 삼인들만 보자면...
SELECT AA.USERID, AA.USERNAME, BB.USERID, BB.USERNAME
FROM CUSTOM AA , CUSTOM BB
WHERE AA.USERNAME = BB.USERNAME
AND AA.USERID <> BB.USERID
ORDER BY AA.USERNAME, BB.USERNAME;

USERID USERNAME USERID_1 USERNAME_1
ps1075 김성섭 8i7164 김성섭
8i7164 김성섭 ps1075 김성섭
302384 김성수 058009 김성수
058009 김성수 302384 김성수
oa5789 김종수 mi8784 김종수
mi8784 김종수 oa5789 김종수
ba5570 김지연 gk8385 김지연
gk8385 김지연 ba5570 김지연
ed2400 노영호 en4557 노영호
en4557 노영호 ed2400 노영호
el3409 박경훈 ot1194 박경훈
mo4840 박경훈 ot1194 박경훈
ot1194 박경훈 el3409 박경훈
mo4840 박경훈 el3409 박경훈
ot1194 박경훈 mo4840 박경훈
el3409 박경훈 mo4840 박경훈
si1166 박상준 ma3030 박상준
ma3030 박상준 si1166 박상준
mi2834 박상현 uo3089 박상현
uo3089 박상현 mi2834 박상현
bm3050 박재현 ap5832 박재현
ap5832 박재현 bm3050 박재현
dm6931 박재호 im2229 박재호
im2229 박재호 dm6931 박재호
2e7631 박정도 771922 박정도
771922 박정도 2e7631 박정도
808749 박정일 th2237 박정일
th2237 박정일 808749 박정일
1s8180 박정호 e18877 박정호
e18877 박정호 1s8180 박정호
022913 박종원 sr4342 박종원
sr4342 박종원 022913 박종원
dj9811 백승엽 no3372 백승엽
no3372 백승엽 dj9811 백승엽
ku4159 이동훈 hg3791 이동훈
hg3791 이동훈 ku4159 이동훈
ip2550 이정훈 so9887 이정훈
so9887 이정훈 ip2550 이정훈
ar3920 이종성 2h6034 이종성
2h6034 이종성 ar3920 이종성

동명3인은 아직 해결되지 않았다.

6. id가 중복된 것을 제외하면
SELECT DISTINCT AA.USERID, AA.USERNAME
FROM CUSTOM AA , CUSTOM BB
WHERE AA.USERNAME = BB.USERNAME
AND AA.USERID <> BB.USERID
ORDER BY AA.USERNAME;

USERID USERNAME
8i7164 김성섭
ps1075 김성섭
058009 김성수
302384 김성수
mi8784 김종수
oa5789 김종수
ba5570 김지연
gk8385 김지연
ed2400 노영호
en4557 노영호
el3409 박경훈
mo4840 박경훈
ot1194 박경훈
ma3030 박상준
si1166 박상준
mi2834 박상현
uo3089 박상현
ap5832 박재현
bm3050 박재현
dm6931 박재호
im2229 박재호
2e7631 박정도
771922 박정도
808749 박정일
th2237 박정일
1s8180 박정호
e18877 박정호
022913 박종원
sr4342 박종원
dj9811 백승엽
no3372 백승엽
hg3791 이동훈
ku4159 이동훈
ip2550 이정훈
so9887 이정훈
2h6034 이종성
ar3920 이종성

이렇게 하면 동명 2인, 동명 3인이 누구인지 알수 있다.


==============================================================================

==============================================================================
--3개이상의 테이블을 조인하는 예
CUSTOM = USERID, USERNAME
COMPANY = COMPANY, DEPT
POINT  = PROCUCT, LOGIN
각테이블 키열은 USERID

SELECT AA.USERID, USERNAME,COMPANY,DEPT,PRODUCT,LOGIN
FROM CUSTOM AA INNER JOIN COMPANY BB
ON AA.USERID=BB.USERID INNER JOIN POINT CC ON AA.USERID=CC.USERID;

================================================================================

================================================================================
--파생 테이블과 조인
CUSTOM 테이브렝는 고객의 기본정보를 저장하고있다.
SALES 테이블에는 고객들에게 팬매한 아이디, 제품의 이름, 가격 할인율 판매일자가 저장
한명의 고객이 여러 제품을 구입할수 있으므로SALES 테이블에는 동일한 아이디를갖는 행들이 있을수 있다.
각 아이디 별로 판매 횟수와판매금액의 합을 검색하고자 한다면 다음고 같이 작성할 수 있을것이다.

SELECT * FROM SALES;
SELECT * FROM CUSTOM;

USERID, USERNAME,판매횟수, 총판매금액


SELECT userid, (SELECT username FROM CUSTOM m WHERE m.userid = s.userid) username,
COUNT(userid) 판매횟수, SUM(price-discount) 판매금액
FROM SALES s
GROUP BY s.userid ;
=====================================================================================

크리에이티브 커먼즈 라이센스
Creative Commons License

"oracle_sql" 카테고리의 다른 글


이 글의 관련글
2008/06/13 00:06 2008/06/13 00:06

트랙백을 보내세요

트랙백 주소 :: http://pippen80.cafe24.com/trackback/89

댓글을 달아 주세요

[로그인][오픈아이디란?]
비밀글 (Serect)
댓글 달기 (Submit)