이후 프로젝크 3차 하면서 sql 공부하면서 채우게 된
1번 데이터베이스 만들기, 각 테이블 만들기
스키마 = 데이터베이스
여러 테이블들이 모인 거 = 데이터베이스
뭐가 테이블이고 데이터베이스이고, 이름 읽을 줄 알아야
과제 1. 아래 제공된 ERD(Entity Relational Diagram)를 참고하여 MySQL Server 내에 “westagram” 이름의 스키마를 생성한 후에, DDL을 사용하여 “westagram” 스키마 내에 users, posts, comments, likes 테이블 객체를 구현합니다.
늘 글은 어려워보이는데, 알고나면 쉽다
문제파악부터. 1. 스키마 치고 DB 만들고
2. create table 하라는구나 (DDL - create, 어쩌구)
erd 읽기- 관계 파악
- 발이 여러개면 '다'
- 발이 하나면 '일'
얘는 양쪽에 발이 여러개니까 '다대다'
users의 pk 하나를 comments table의 fk 로 받는 것 (comments에게는 users 가 외부니까)
1 : 다
전체적인 순서 흐름만 잡으면 이렇다.
create database "westagram";
use westagram;
create table "users";
create table "posts";
create table "comments";
create table "likes";
show tables;
코딩
CREATE TABLE users(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
email VARCHAR(200) NOT NULL,
password VARCHAR(200) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id) );
대소문자 상관없음, 시각화 (팀 할 떈 대문자 해야
create table likes (
-> id INT NOT NULL AUTO_INCREMENT,
-> user_id INT NOT NULL,
-> post_id INT NOT NULL,
-> PRIMARY KEY(id)
-> FOREIGN KEY (post_id) REFERENCES posts(id)
-> FOREIGN KEY (user_id) REFERENCES users(id) #comments 테이블의 primary키 가져오는데, comments 테이블에서 참고해라 맞는지 확인
-> );
create table posts (
-> id INT NOT NULL AUTO_INCREMENT,
-> title VARCHAR(100) NOT NULL,
-> content VARCHAR(3000) NULL,
-> user_id INT NOT NULL,
-> created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
-> updated_at TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP,
-> PRIMARY KEY(id)
-> FOREIGN KEY (user_id) REFERENCES users (id)
-> );
create table comments (
-> id INT NOT NULL,
-> content VARCHAR(3000) NOT NULL,
-> user_id INT NOT NULL,
-> post_id INT NOT NULL,
-> created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
-> updated_at TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP,
-> PRIMARY KEY(id)
-> FOREIGN KEY (user_id) REFERENCES users (id)
-> FOREIGN KEY (post_id) REFERENCES posts (id)
-> );
1번에서는 행과 렬, 목차만 잡은 거고,(회색)
2번에서 표 안에 들어갈 데이터 채워주기 (흰색)
2번 데이터 추가
추가는 insert into 사용
과제 2.
MySQL의 DML(Data Manipulation Language)를 사용하여, 각 테이블에 data를 추가합니다. 반드시 아래에 제공되는 예제 데이터를 사용할 필요는 없습니다. 자유롭게 만들어주세요.
문제파악부터. 테이블에 데이터 추가하라네 -> insert into 써야 하고. (DML)
형태
insert into [tablename] (목차1, 목차2, 목차3) values ("값1", "값2", "값3");
insert into [tablename] (목차1, 목차2, 목차3) values ( ("값1", "값2", "값3"), ("값1", "값2", "값3") );
INSERT INTO users (name, email, profile_image, password)
VALUES ( ("Rebeca", "Rebeca@email.com", "image_1", "@@#"), #name email profile_image password 이렇게 한 줄 씩 하는 거/ name 한꺼번에, email 한꺼번에 이런 식이 아니라.
("Reb", "Reb@email.com", "image_2", "@@1#"),
("ca", "ca@email.com", "image_3", "@@#2"),
("Ka", "Ka@email.com", "image_4", "@@#3") );
데이터 추가한 users table 한번 보기
mysql> SELECT * FROM users;
cf. mysql> SELECT name FROM users; #만약에 name만 보고 싶으면 Rebeca,Reb,ca,Ka
심화버전: ("Rebeca", "Rebeca@email.com", "image_1", "@@#") 한줄 보고 싶으면,
select * from users; 로 모두 추출 후에, limit 사용
위에서 만든 mysql database로 아래 과제가 연결된다.
1)
2)
3)
https://pm-developer-justdoit.tistory.com/37
'Wecode - Foundation 1 (부트캠프) > Westagram (Mysql, Node.js, Express)' 카테고리의 다른 글
[Westagram Backend Project] 1. Express 초기 환경 설정/ TypeORM 설치 적용 (주황색) (0) | 2023.09.04 |
---|---|
[Express] .gitignore 생성 (0) | 2023.09.04 |
[Express 초기 환경세팅] 2. database 서버 연결- dbConnection 설정 (0) | 2023.09.04 |
Mysql, westagram 만들기 (0) | 2023.09.04 |
Westagram Github (0) | 2023.09.04 |