- TABLE 생성
-- 회원 테이블
CREATE TABLE MEMBER (
NAME VARCHAR2(100) ,
EMP_NO NUMBER PRIMARY KEY,
DEPT_NO NUMBER,
AGE NUMBER,
ADDR VARCHAR2(100),
REGIST_DATE TIMESTAMP,
BIRTH_DAY DATE
)
-- 부서 테이블
CREATE TABLE DEPT(
DEPT_NO NUMBER PRIMARY KEY,
DEPT_NAME VARCHAR2(100),
ADDR VARCHAR2(100)
)
- INSERT
* MEMBER
INSERT INTO MEMBER(NAME ,EMP_NO ,DEPT_NO,AGE , ADDR , REGIST_DATE ,BIRTH_DAY)
VALUES('white' ,1000 ,100,1 , '대한민국', SYSTIMESTAMP ,to_date('03-19-2023','MM-DD-YYYY'));
INSERT INTO MEMBER(NAME ,EMP_NO ,DEPT_NO,AGE , ADDR , REGIST_DATE ,BIRTH_DAY)
VALUES('black' ,2000 ,200,2 , '서울', SYSTIMESTAMP ,to_date('03-18-2023','MM-DD-YYYY'));
INSERT INTO MEMBER(NAME ,EMP_NO ,DEPT_NO,AGE , ADDR , REGIST_DATE ,BIRTH_DAY)
VALUES('blue' ,3000, 300,3 , '경기도', SYSTIMESTAMP ,to_date('03-17-2023','MM-DD-YYYY'));
INSERT INTO MEMBER(NAME ,EMP_NO ,DEPT_NO,AGE , ADDR , REGIST_DATE ,BIRTH_DAY)
VALUES('red' ,4000 ,100,4 , '충청도', SYSTIMESTAMP ,to_date('03-16-2023','MM-DD-YYYY'));
INSERT INTO MEMBER(NAME ,EMP_NO ,DEPT_NO,AGE , ADDR , REGIST_DATE ,BIRTH_DAY)
VALUES('yellow' ,5000 ,200,5 , '경상도', SYSTIMESTAMP ,to_date('03-15-2023','MM-DD-YYYY'));
INSERT INTO MEMBER(NAME ,EMP_NO ,DEPT_NO,AGE , ADDR , REGIST_DATE ,BIRTH_DAY)
VALUES('green' ,6000 ,300,6 , '전라도', SYSTIMESTAMP ,to_date('03-14-2023','MM-DD-YYYY'));
INSERT INTO MEMBER(NAME ,EMP_NO ,DEPT_NO,AGE , ADDR , REGIST_DATE ,BIRTH_DAY)
VALUES('silver' ,7000 ,100,7 , '강원도', SYSTIMESTAMP ,to_date('03-13-2023','MM-DD-YYYY'));
* DEPT
INSERT INTO DEPT(DEPT_NO , DEPT_NAME, ADDR) VALUES(100, '영업부', '서울');
INSERT INTO DEPT(DEPT_NO , DEPT_NAME, ADDR) VALUES(200, '개발부', '서울');
INSERT INTO DEPT(DEPT_NO , DEPT_NAME, ADDR) VALUES(300, '인사팀', '서울');
- SELECT
JOIN은 테이블끼리 서로 연관되는 데이터를 가지고서 각각의 테이블에서 데이터를 조회하여 가상의 테이블처럼 만들어서 출력해준다.
JOIN이 대상이 되는 테이블 끼리는 공통적으로 가지고 있는 컬럼 및 데이터가 있어야 한다.
잘못된 예
구분을 하지 않고 여러개의 TABLE을 조회하면 중복(MEMBER 데이터 7 * DEPT 데이터 3)으로 전체 출력된다.
컬럼명도 전체가 나온 것을 볼 수 있다.
올바른 쿼리 예
JOIN 하려는 TABLE 사이에 INNER JOIN 이 들어가야하며 생략하고 JOIN 만 입력해도 실행된다.
TABLE 을 구분 짓기 위해 TABLE명 뒤에 별칭을 붙이고 TABLE의 별칭을 가지고 컬럼을 조회한다.
JOIN 문에는 WHERE 절 대신 ON을 사용한다.
SELECT M.NAME , D.DEPT_NO , D.DEPT_NAME , M.AGE FROM
MEMBER M JOIN DEPT D
ON M.DEPT_NO = D.DEPT_NO
AND D.DEPT_NO = 100;
-- JOIN / INNER JOIN 같은 의미이다.
SELECT M.NAME , D.DEPT_NO , D.DEPT_NAME , M.AGE FROM
MEMBER M INNER JOIN DEPT D
ON M.DEPT_NO = D.DEPT_NO
AND D.DEPT_NO = 100;
'개발 > Oracle' 카테고리의 다른 글
Oracle - INTERSECT (0) | 2023.03.23 |
---|---|
[DBeaver] Oracle - LEFT , RIGHT Join (4) | 2023.03.19 |
[DBeaver] Oracle - Update 수정 (0) | 2023.03.19 |
[DBeaver] Oracle - Delete 삭제 (0) | 2023.03.19 |
[DBeaver] Oracle - Select 조회 (0) | 2023.03.19 |
댓글