일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 리눅스
- @test
- unix
- spring aop
- java
- java spring
- pointcut
- spring framework
- Framework
- 컨테이너
- Di
- spring
- Spring JDBC
- STS
- POJO
- @Spring-Test
- XML
- @JUnit
- Linux
- JDBC TEMPLATE
- JdbcTemplate
- 프로퍼티
- @AspectJ
- 마이바티스
- Spring Boot
- Dependency Injection
- Ubunt
- AOP
- SpringJDBC
- myBatis
Archives
- Today
- Total
개키우는개발자 : )
PostgreSQL 조인 이란? JOIN실습 Table 만들기 본문
반응형
조인이란?
2개 이상의 테이블에 있는 정보 중 사용자가 필요한 집합에 맞게 가상의 테이블 처럼 만들어서 결과를 보여주는 것이다.
종류 | 설명 |
INNER 조인 | 특정 컬럼을 기준으로 정확히 매칭된 집합을 출력한다. |
OUTER 조인 | 특정 컬럼을 기준으로 매칭된 집합을 출력하지만 한쪽의 집합은 모두 출력하고 다른 한쪽의 집합은 매칭되는 컬럼의 값 만을 출력한다. |
SELF 조인 | 동일한 테이블 끼리 의 특정 컬럼을 기준으로 매칭되는 집합을 출력한다. |
FULL OUTER 조인 | INNER, LEFT OUTER, RIGHT OUTER 조인 집합을 모두 출력한다. |
CROSS 조인 | Cartesian Product라고도 하며 조인되는 두 테이블에서 곱집합을 반환한다. |
NATURAL 조인 | 특정 테이블의 같은 이름을 가진 컬럼 간의 조인집합을 출력한다. |
실습준비1
BASKET_A 테이블 생성
CREATE TABLE BASKET_A
(
ID INT PRIMARY KEY,
FRUIT VARCHAR (100) NOT NULL
)
데이터 저장후 커밋
INSERT INTO BASKET_A
(ID,FRUIT)
VALUES
(1,'APPLE'),
(2,'ORANGE'),
(3,'BANANA'),
(4,'CUCUMBER');
COMMIT;
BASKET_B 테이블 생성
CREATE TABLE BASKET_B
(
ID INT PRIMARY KEY,
FRUIT VARCHAR (100) NOT NULL
)
데이터 저장후 커밋
INSERT INTO BASKET_B
(ID,FRUIT)
VALUES
(1,'ORANGE'),
(2,'APPLE'),
(3,'WATERMELON'),
(4,'PEAR');
COMMIT;
실습준비2
EMPLOYEE 테이블 생성
CREATE TABLE EMPLOYEE(
EMPLOYEE_ID INT PRIMARY KEY,
FIRST_NAME VARCHAR (255) NOT NULL,
LAST_NAME VARCHAR (255) NOT NULL,
MANAGER_ID INT,
FOREIGN KEY (MANAGER_ID)
REFERENCES EMPLOYEE (EMPLOYEE_ID)
ON DELETE CASCADE
)
데이터 저장 후 커밋
insert into EMPLOYEE (
EMPLOYEE_ID,
FIRST_NAME,
LAST_NAME,
MANAGER_ID
)
values
(1, 'Windy','Hays',Null),
(2, 'Ava','Christensen',1),
(3, 'Hassan','Conner',1),
(4, 'Anna','Reeves',2),
(5, 'Sau','Norman',2),
(6, 'Kelsie','Hays',3),
(7, 'Tory','Goff',3),
(8, 'Salley','Lester',3)
commit;
실습준비3
DEPARTMENTS 테이블 생성
CREATE TABLE
IF NOT EXISTS DEPARTMENTS
(
DEPARTMENT_ID SERIAL PRIMARY KEY,
DEPARTMENT_NAME VARCHAR (255) NOT NULL
)
DEPARTMENTS 데이터 추가
INSERT
INTO
DEPARTMENTS (DEPARTMENT_NAME)
VALUES ('Sales'),
('Marketing'),
('HR'),
('IT'),
('Production');
commit;
EMPLOYEES 테이블 생성
CREATE TABLE
IF NOT EXISTS EMPLOYEES
(
EMPLOYEE_ID SERIAL PRIMARY KEY,
EMPLOYEE_NAME VARCHAR (255),
DEPARTMENT_ID INTEGER
)
EMPLOYEES 데이터 추가
INSERT
INTO
EMPLOYEES (EMPLOYEE_NAME,
DEPARTMENT_ID)
VALUES
('Better Nicholson',1),
('Christian Gable',1),
('Joe Swank',2),
('Fred Costner',3),
('Sandra Kilmer',4),
('Julia Mcqueen',NULL);
commit;
실습준비4
CROSS_T1 테이블 생성
CREATE TABLE CROSS_T1
(
LABEL CHAR(1) PRIMARY KEY
)
CROSS_T1 데이터 추가
INSERT INTO CROSS_T1 (LABEL)
VALUES
('A'),
('B');
COMMIT;
CROSS_T2 테이블 생성
CREATE TABLE CROSS_T2
(
SCORE INT PRIMARY KEY
)
CROSS_T2 데이터 추가
INSERT INTO CROSS_T2 (SCORE)
VALUES
(1),
(2),
(3);
COMMIT;
실습준비5
CATEGORIES 테이블 생성
CREATE TABLE CATEGORIES
(
CATEGORY_ID SERIAL PRIMARY KEY,
CATEGORY_NAME VARCHAR (255) NOT NULL
)
CATEGORIES 데이터 추가
INSERT INTO CATEGORIES(CATEGORY_NAME)
VALUES
('Smart Phone'),
('Laptop'),
('Tablet');
commit;
PRODUCTS 테이블 생성
CREATE TABLE PRODUCTS
(
PRODUCT_ID SERIAL PRIMARY KEY,
PRODUCT_NAME VARCHAR (255) NOT NULL,
CATEGORY_ID INT NOT NULL,
FOREIGN KEY (CATEGORY_ID)
REFERENCES CATEGORIES (CATEGORY_ID)
)
PRODUCTS 데이터 추가
INSERT INTO PRODUCTS
(PRODUCT_NAME,CATEGORY_ID)
VALUES
('iPhone',1),
('Samsung Galaxy',1),
('HP Elite',2),
('Lenovo Thinkpad',2),
('iPad',3),
('Kindle Fire',3)
commit;
실습준비6
SALES 테이블 생성
CREATE TABLE SALES
(
BRAND VARCHAR NOT NULL,
SEGMENT VARCHAR NOT NULL,
QUANTITY INT NOT NULL,
PRIMARY KEY (BRAND,SEGMENT)
)
SALES 데이터 추가
INSERT INTO SALES (BRAND,SEGMENT,QUANTITY)
VALUES
('ABC','Premium',100),
('ABC','Basic',200),
('XYZ','Premium',100),
('XYZ','Basic',300);
commit;
반응형
'PostgreSQL > 조인과 집계 데이터' 카테고리의 다른 글
PostgreSQL CROSS 조인 (0) | 2019.11.03 |
---|---|
PostgreSQL FULL OUTER 조인 (0) | 2019.11.03 |
PostgreSQL SELF 조인 (6) | 2019.11.03 |
PostgreSQL OUTER 조인 (0) | 2019.11.03 |
PostgreSQL INNER 조인 (0) | 2019.11.03 |
Comments