실습 예제들...
==============================================================================================
테이블 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 ;
=====================================================================================
"oracle_sql" 카테고리의 다른 글
- [ORACLE/SQL] [04] JOIN문 I (댓글 0개 / 트랙백 0개) 2008/06/12
- [ORECLE/SQL] [03] 날짜, 시간, 숫자 표기법 (댓글 0개 / 트랙백 0개) 2008/06/11
- [ORACLE/SQL] [03] 함수 - 그룹 함수 (댓글 0개 / 트랙백 0개) 2008/06/11
- [ORACLE/SQL] [01] 조건절 where 와 연산자, IN, BETWEEN,... (댓글 0개 / 트랙백 0개) 2008/06/08
- [ORACLE/SQL] [02] 함수 - 날짜 함수 (댓글 0개 / 트랙백 0개) 2008/06/10
- [ORACLE/SQL] [04] JOIN문 II - 실습예제들... (댓글 0개 / 트랙백 0개) 2008/06/13
- [ORACLE/SQL] [05] SUBQUERY (댓글 0개 / 트랙백 0개) 2008/06/16
- [ORACLE/SQL] [01] 별칭과 정렬 (댓글 0개 / 트랙백 0개) 2008/06/08
- [ORACLE/SQL] [01] CASE문 , 가상테이블, JOIN 문 , 테이블 별칭 (댓글 0개 / 트랙백 0개) 2008/06/09
- [ORACLE/SQL] [02] 함수 - 문자함수 (댓글 2개 / 트랙백 0개) 2008/06/10



댓글을 달아 주세요