| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 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
													
											
												
												- unix
 - JdbcTemplate
 - SpringJDBC
 - java
 - AOP
 - 프로퍼티
 - 컨테이너
 - spring aop
 - Di
 - @test
 - JDBC TEMPLATE
 - Spring JDBC
 - pointcut
 - POJO
 - XML
 - Framework
 - Dependency Injection
 - Linux
 - 마이바티스
 - java spring
 - @JUnit
 - STS
 - spring
 - 리눅스
 - @AspectJ
 - @Spring-Test
 - Spring Boot
 - myBatis
 - spring framework
 - Ubunt
 
													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