반응형

분류 전체보기 294

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

5. 문자열 병합/연결 함수 ||, CONCAT

|| 'HOME' || ' '||'STUDY' -> HOME STUDY 'VALUE :' || 56 -> VALUE : 56 'ABC' || Null || 43 -> 빈값(Null) 함수형식 : 인자1 || 인자2 || - 인자1, 인자2 등의 입력 인자들은 문자열이나 비문자열 모두 가능 반환값 데이터 형식 : text 힘수설명 : 문자열을 병함 또는 연결하며, 입력 인자 중 하나라도 빈값이 있으면 결과는 빈값이 된다 CONCAT CONCAT('HOME',' ','STUDY') -> HOME STUDY CONCAT ('Value :',56) -> Value : 56 CONCAT ('ABC',Null,34) -> ABC34 함수형식 : CONCAT(인자1, 인자2..) - 인자1, 인자2 등의 입력 인자들..

DB/PostgreSQL 2022.10.26

4. FETCH FIRST 절을 사용하여 TOP-N 쿼리를 처리할 수 있다.

-- FETCH FIRST 절을 사용하는 문장의 예시 SELECT ... FROM 테이블 [WHERE ...] [ORDER BY ...] [OFFSET 건너뛸행수 {ROW | ROWS}] [FETCH {FIRST | NEXY} [출력할행수] {ROW | ROWS} ONLY]; 대괄호 [] 는 생략 가능함을 중괄호 {} 는 내부의 수직바 | 표시로 구분한 것들 중 하나를 선택해야 함을 나타낸다. 건너뛸행수는 0이상의 양수여야한다. 기본적으로 0이나 NULL은 OFFSET을 생략한 것과 같다. 건너뛸행수의 값이 결과 집합의 행 수보다 크면 공집합이 반환된다. 출력할행수는 1이상 이어야하며 출력할 행수를 지정하지 않으면 기본적으로 1로 처리한다. 또한 0을 지정면 공집합을 반환하며 빈값을 지정하면 FETCH ..

DB/PostgreSQL 2022.10.26

3. 데이터 출력결과의 행 갯수를 제한 | LIMIT, OFFSET

SELECT ... FROM 테이블 [WHERE ...] [OEDER BY ...] [LIMIT {출력행수 | ALL}] [OFFSET 건너뛸행수] 위 SELECT 문장의 5번 라인에 보이는 것처럼 LIMIT 다음에 출력할 행 수를 지정한다. 출력할 행 수는 일반적으로 양의 정수일 때 의미가 있으며, 출력할 행의 개수 대신 ALL이나 빈값(NULL)이 지정되면 LIMIT 절을 생략한 것과 동일하게 처리되어결과 집합의 모든 행이 출력된다. 출력할 행 수에 0을 지정하면 공집합(EMPTY SET) 이 반환된다. 위 SELECT 문장의 5번 라인에 제시된 OFFSET은 검색 결과 집합을 출력할때 건너뜀 행 수 를 지정한다. 즉, 검색결과 집합을 출력할 때 LIMIT 절을 사용하여 먼저 출력한 행이 있다면 그 ..

DB/PostgreSQL 2022.10.26
반응형