Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
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 31
Tags
more
Archives
Today
Total
관리 메뉴

ddodoi 님의 블로그

5주차-파트04: CLI로 데이터베이스 관리, ALTER, JOIN 본문

웹풀스택 일일정리

5주차-파트04: CLI로 데이터베이스 관리, ALTER, JOIN

ddodoi 2024. 9. 14. 14:58

CHAPTER 1. MYSQL workbench 설치(CLI로 데이터베이스 다루기)

https://dev.mysql.com/downloads/workbench/

 

MySQL :: Download MySQL Workbench

 

dev.mysql.com

 

 

 

 

CHAPTER 2. DB 테이블 생성 실습

DESC 데이터베이스이름.테이블 이름

->해당 테이블의 구조를 확인할 수 있다.

 

 

 

 

posts테이블을 만들 때 id 옆에 

AUTO_INCREMENT를 넣어 테이블에 값 입력시 id값을 주지 않아도 자동으로 숫자가 증가한다.

 

 

 

✔️MYSQL(mariadb)날짜 / 시간 타입

 

1. DATE

-날짜만

-YYYY - MM - DD

 

2. DATETIME

-날짜  + 시간

-YYYY-MM-DD HH:MM:SS(24시간제)

 

3. TIME

-시간

-HH:MM:SS

 

4. TIMESTAMP:자동입력

-날짜 + 시간

-YYYY-MM-DD HH:MM:SS(24시간제)

 

시스템 시간대 정보에 맞게 일시를 저장한다.

cf. UTC : 한국시간 - 9

 

 

✔️NOT Null vs Default

Not Null

-직접 null 이라고 작성해서 넣는 것도 안 되어요!

 

Default : 값이 안 들어올 때 기본 값으로 세팅

-공란으로 insert -> Default 설정 해둔 기본 값이 insert

-직접 null이라 작성해서 넣음 -> null setting

 

 

 

✔️ALTER 명령어

컬럼의 이름을 바꾸거나 / 제약조건을 변경하거나 / 컬럼을 추가 또는 삭제하는 등의 다양한 테이블 변경 기능을 수행

 

 

컬럼 추가(ADD)

ALTER TABLE 테이블명 ADD COLUMN 컬럼명 컬럼자료형 NOT NULL;
 

 

컬럼 변경(Modify)

ALTER TABLE 테이블명 MODIFY COLUMN 컬럼명 컬럼자료형 NULL;

 

 

 

컬럼 삭제(Drop)

ALTER TABLE 테이블명 DROP COLUMN 컬럼명;

 

테이블 이름 변경(RENAME)

ALTER TABLE 테이블명 RENAME 새테이블명;

 


 

user테이블의 id칼럼(primary키값)을 참조해오는 user_id칼럼을 posts테이블에 만들어보자.(외래키)

 

먼저 posts테이블에 user_id칼럼을 추가한뒤

ALTER TABLE posts
ADD COLUMN user_id INT;

 

 

연결시켜준다.

ALTER TABLE posts
ADD FOREIGN KEY(user_id)
REFERENCES users(id);

 

 

 

다음은 users 테이블이다.

 

 

 

 

 

users테이블의 primary키인 id값에 없는 데이터를 추가 시키면 다음과 같은 에러가 뜬다.

 

 

users테이블의 primary키인 id값에 있는 데이터를 추가 시키면 잘 반영된다.

 

 

 

 

 

CHAPTER 3. JOIN

데이터의 중복을 피하기 위해 테이블을 2개로 분리하면서 직관성이 떨어지게 되었다. 이를 해결하기 위해 SELECT할 경우에만 임시로 두 테이블을 붙여주도록 join을 이용해보자(원래의 테이블이 변경되거나 새로운 테이블이 만들어지는 것이 아니다).

 

 

다음 명령어를 이용하여 posts테이블을 기준으로 user_id와 id가 같은 값을 이어붙여보자.

SELECT * FROM 테이블1 LEFT
JOIN 테이블2 ON 조건;

 

 

 

 

 

 

다음처럼 원하는 칼럼값만 지정해서 뽑아낼수도 있다.

SELECT 뽑고싶은칼럼명 FROM 테이블1 LEFT
JOIN 테이블2 ON 조건;

 

 

 

 

 

 

 

 

cf. auto_increment_lock_mode