반응형

DB 74

16. OUTER JOIN( RIGHT JOIN 과 FULL JOIN )

RIGHT JOIN - 연관 데이터를 조인해서 가져오는데 조인할수 없을때 오른쪽을 살리면 RIGHT JOIN이 된다 FULL JOIN - 조인 가능한 데이터 뿐만 아니라 조인 불가능한것 까지도 좌,우측 상관없이 모두 가져온다. 테이블 생성 CREATE /* 테이블 생성 */ -- 사용자 CREATE TABLE users( id SERIAL PRIMARY KEY, -- PK email VARCHAR(60) UNIQUE, -- 이메일 nickname VARCHAR(30) -- 닉네임 ); -- 주문 CREATE TABLE orders( id SERIAL PRIMARY KEY, -- PK status VARCHAR(15), -- 주문 상태 created_at TIMESTAMPTZ, -- 주문시각 user_id..

DB/PostgreSQL 2022.10.31

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
반응형