본문 바로가기

개발/프로그래머스 데브코스

프로그래머스 데브코스 23일차 with. TS 웹 풀스택

📚요약

지난 시간에 테이블을 만들어 보고 mysql의 workbench를 설치했습니다. 이번 시간에는 테이블 생성 실습을 해보겠습니다.

 

📖테이블 생성 실습

📄기본키(PK), 외래키(FK) 설정

  1. 테이블을 생성할 때 설정
    기본키 : CREATE 문 내부에서 'PRIMARY KEY(컬럼명)' 또는 '컬럼명 타입 PRIMARY KEY'
    외래키 : CREATE 문 내부에서 'FOREIGN KEY(컬럼명) REFERENCES 외부테이블(기본키컬럼명)' 
  2. 테이블을 생성하고 ALTER로 설정
    기본키 : 'ALTER TABLE 테이블이름 ADD PRIMARY KEY(컬럼명)' 또는 'ALTER TABLE 테이블이름 ADD 컬럼명 타입 PRIMARY KEY'
    외래키 : 'ALTER TABLE 테이블이름 ADD FOREIGN KEY(컬럼명) REFERENCES 외부테이블(기본키컬럼명)'

 

📄자료형(데이터 타입)

테이블을 생성하려면 이름도 중요하지만 각 컬럼의 자료형을 정하는 것도 중요합니다. Mariadb에는 다양한 데이터 타입이 있습니다. 

자주 사용하는 데이터 타입

  • 정수 : INT, BIGINT
  • 날짜 : DATE(YYYY-MM-DD), TIME(HH:MM:SS.ssssss), DATETIME(YYYY-MM-DD HH:MM:SS), TIMESTAMP (YYYY-MM-DD HH:MM:SS)
  • 문자 : VARCHAR

'MUL'이라고 나오는 타입은 multiple의 약자로 중복가능한 값으로 외래키(Foreign Key)의 타입으로 나옵니다.

🍯tip! 생성 일자는 'created_at', 수정 일자는 'updated_at'을 많이 사용한다.
🍯tip! 인덱스로 생성하는 경우 AUTO INCREMENT 옵션을 사용하면 자동으로 데이터를 추가할 때마다 1씩 증가한다. 하지만 추가를 실패해도 1이 증가하기 때문에 lock_mode를 설정하면 문제를 해결할 수 있다.
🍯tip! default 예약어를 사용하면 기본값을 지정할 수 있다.

 

📄JOIN

지난 시간 데이터의 중복을 없애기 위해 테이블을 분리했습니다. 이렇게 되면 두 개의 테이블을 SELECT 해서 봐야 하는 불편함이 발생하게 되는데, 이를 해결하기 위한 JOIN 기능이 있습니다.

책 테이블

id name publisher publish_date librarian_id
1 books pbBook 2024.05.07 nulzi123
2 boks pbbooK 2020.05.07 nulzi123

 

사서 테이블

id pw name
nulzi123 1234 nulzi

예를 들어 위 두 테이블을 하나의 테이블로 보기 위해서 다음과 같은 SQL을 사용할 수 있습니다.

SELECT * FROM 책테이블 LEFT JOIN 사서테이블 on 책테이블.librarian_id = 사서테이블.id;

 

 

해당 SQL의 결과는 다음과 같습니다.

책 테이블 LEFT JOIN 사서 테이블

id name publisher publish_date librarian_id id pw name
1 books pbBook 2024.05.07 nulzi123 nulzi123 1234 nulzi
2 boks pbbooK 2020.05.07 nulzi123 nulzi123 1234 nulzi

 

실질적으로 librarian_id와 id, pw는 필요 없는 데이터이므로 name만 불러오는 SQL문과 결과를 보여드리겠습니다.

SELECT 책테이블.id, 책테이블.name, publisher, publish_date, 사서테이블.name
from 책테이블 LEFT JOIN 사서테이블
ON 책테이블.librarian_id = 사서테이블.id;

책 테이블 LEFT JOIN 사서 테이블

id name publisher publish_date librarian_id id pw name
1 books pbBook 2024.05.07 nulzi123 nulzi123 1234 nulzi
2 boks pbbooK 2020.05.07 nulzi123 nulzi123 1234 nulzi

 

 

다음 시간에 계속...

 

출처 & 참고

김송아 강사님의 강의

mariadb-data type, 공식 홈페이지, 2024.05.07

mariadb-auto-increment handling, 공식 홈페이지, 2024.05.07

마리아DB 테이블 외래키 제약조건, 전산직의 삶, 2024.05.07

mariadb primary key 설정, 예나부기, 2024.05.07