반응형

DB/PostgreSQL 25

15. OUTER JOIN( LEFT JOIN )

LEFT JOIN - 가장 많이 사용함 - INNER JOIN은 합친 테이블의 "공통" 데이터만 가져오지만 - LEFT JOIN은 나머지 왼쪽 테이블의 "모든" 데이터도 가져온다 - 공통된 부분을 먼저 조회하고, 추가로 왼쪽 테이블의 나머지 부분도 가져온다. - 데이터가 없는 부분은 NULL로 채워서 가져온다. LEFT JOIN 문제1 -- 모든 사진의 파일명을 조회하시오. 게시자가 있다면 닉네임도 함께 가져올것 SELECT photos.filename, users.nickname FROM photos LEFT JOIN users ON photos.user_id = users.id; LEFT JOIN 문제2 -- 모든 댓글 내용을 조회하시오. 단, 댓글이 달린 사진의 파일명도 함께 가져올 것 SELECT..

DB/PostgreSQL 2022.10.31

14. INNER JOIN 실습

테이블 삭제 DROP -- 기존 테이블 삭제 DROP TABLE likes; DROP TABLE settings; DROP TABLE comments; DROP TABLE photos; DROP TABLE users; 테이블 새로 CREATE -- users 테이블 CREATE TABLE users ( id SERIAL PRIMARY KEY, nickname VARCHAR(50), email VARCHAR(100) ); -- photos 테이블 CREATE TABLE photos ( id SERIAL PRIMARY KEY, filename VARCHAR(255), user_id INTEGER REFERENCES users(id) ); -- comments 테이블 CREATE TABLE comments (..

DB/PostgreSQL 2022.10.31

13. 테이블 JOIN이란? INNER JOIN | OUTER JOIN

테이블 JOIN 이란? 두 테이블 데이터를 하나로 합치는것 FROM절의 데이터를 JOIN절의 데이터와 합쳐준다. 뭐를 통해 합친다? 조건으로 걸러서 합친다. 테이블 JOIN은 크게 내부조인, 외부조인으로 분리된다 내부조인 INNER JOIN SELECT * FROM comments JOIN users ON users.id = comments.user_id; 외부조인 OUTER JOIN 외부조인은 그 안에서 또 LEFT JOIN, RIGHT JOIN, FULL JOIN 으로 나눠진다.

DB/PostgreSQL 2022.10.30

11. 1:N | 1:1(UNIQUE) | M:N | 관계 테이블 요약, 생성 |

1:N 관계 3개의 데이터의 관계를 연결시켰다 각각의 아이디값을 PK로 선언하고, 이들의 관계를 연결시켜주기 위해서 FK를 만들었다. 1:1 관계 데이터가 1:1로 연결된 관계 (하나의 나라는 하나의 수도를 갖는다) FK의 위치가 중요함, 범위가 작거나 사용빈도가 작은곳에 FK를 줌 -- 1:1 연결 CREATE TABLE settings ( id SERIAL PRIMARY KEY, private BOOLEAN, adding_photos VARCHAR(15), -- FK: 개인설정 유저 (1:1) UNIQUE user_id INTEGER UNIQUE REFERENCES users(id) ); -- Setting 레코드 생성 INSERT INTO settings(private, adding_photos, ..

DB/PostgreSQL 2022.10.29

10. 댓글 테이블 생성

댓글 테이블 생성 CREATE -- comments 테이블 생성 CREATE TABLE comments( id SERIAL PRIMARY KEY, -- PK body VARCHAR(1000), user_id INTEGER REFERENCES users(id), -- FK photo_id INTEGER REFERENCES photos(id) -- FK: 댓글이 달린 사진 ); 댓글 레이블 코드 추가 INSERT -- comments 레코드 추가 INSERT INTO comments(body, user_id, photo_id) VALUES -- 1번 사진에 달린 댓글 ('meow', 1, 1), -- 1번유저 ('nayong', 2, 1), -- 2번유저 ('냐옹', 3, 1), -- 3번유저 -- 2번 사..

DB/PostgreSQL 2022.10.29

9. 사진 테이블 생성 | FK | 컬럼 INTEGER REFERENCES users(id)

사진 테이블 생성 CREATE -- photos 테이블 생성 CREATE TABLE photos( id SERIAL PRIMARY KEY, filename VARCHAR(255), user_id INTEGER REFERENCES users(id) -- FK: 사진 게시자의 PK로 연결 ); 사진 레코드 등록 INSERT -- photos 레코드 등록 INSERT INTO photos(filename, user_id) VALUES -- 1번 유저가 등록한 사진 ('cat-on-road.jpg', 1), ('sunset-over-the-ocean.jpg', 1), ('andromeda-galaxy.jpg', 1), -- 2번 유저가 등록한 사진 ('white-tiger.jpg', 2), ('nero-the-..

DB/PostgreSQL 2022.10.29

8. 사용자 테이블 생성 | PK | 컬럼 SERIAL PRIMARY KEY

사용자 테이블 생성 CREATE -- users 테이블 CREATE TABLE users( id SERIAL PRIMARY KEY, -- PK선언 (SERIAL: 자동 생성 타입) nickname VARCHAR(50), email VARCHAR(100) ); 사용자 INSERT -- users 레코드 등록 INSERT INTO users(nickname, email) VALUES ('cloudstudying_kr', 'mail@cloudstudying.kr'), ('hyunjung_cs', 'limhyunjung@cloudstudying.kr'), ('donggyu_cs', 'donggg@naver.com'); 사용자 조회 SELECT -- users 조회 SELECT * FROM users;

DB/PostgreSQL 2022.10.29

7. PK와 FK개념 (대표값을 가리켜 관계를 연결)

Primary Key - 레코드를 대표하는 값 일종의 주민등록번호 이다. 한 주민등록번호는 다른 사람과 겹칠수 없고 한 사람과만 연결된다. 하나의 PK는 오직 하나의 레코드를 의미한다 보통 ID 컬럼이 되고 DB에 의해 자동생성 된다. CREATE TABLE users( id SERIAL PRIMARY KEY 컬림이름 자동증가 PK를 추가해서 레코드 대표 설정 ... ); Foreign Key - 관계형성을 위한 컬럼 CREATE TABLE photos( user_id INTEGER RERFERENCES users(id), 컬럼이름 컬럼타입 FK설정 타겟PK )

DB/PostgreSQL 2022.10.29

6. 일대 다 관계 One-to-Many

1:N 일대다 관계란? 하나의 데이터가 여러의 데이터를 포함하는 관계 예) 장바구니 상품목록DB 예) 기사글과 댓글 DB 등.. DB에서 어떻게 관리되는걸까? 데이터의 대표값을 PK, PK를 가리키는 컬럼을 FK 라고한다. PK 와 FK의 연결을 통해서 데이터의 관계가 형성된다. 거꾸로도 해석할수있다. One-to-Many 를 거꾸로 해석하면 Many-to-One 대표값인 PK와 이를 가리키는 FK의 연결을 통해 형성된다.

DB/PostgreSQL 2022.10.29
반응형