[Node.js] mysql FOREIGN KEY

2022. 8. 18. 23:35·개발/node.js
728x90
반응형

1. mysql FOREIGN KEY

데이터베이스 테이블의 컬럼값끼리 관계를 정할수 있다.

const dot = require("dotenv").config();
const config = {
  dev: {
    user: "root",
    password: process.env.DB_PASSWORD,
    database: "text9",
    multipleStatements: true,
  }
}
  
module.exports = config;

테이블에 컬럼값 넣어서 만들기

const sql =
  "CREATE TABLE users (id INT AUTO_INCREMENT, username varchar(255), PRIMARY KEY (id));";
const sql2 =
  "CREATE TABLE items (id INT AUTO_INCREMENT,name varchar(255),price INT,image varchar(255),PRIMARY KEY (id));";
const sql3 =
  "CREATE TABLE orders (id INT AUTO_INCREMENT,user_id INT,total_price INT,created_at datetime DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (id));";
const sql4 =
  "CREATE TABLE order_items (id INT AUTO_INCREMENT,order_id INT,item_id INT,order_quantity INT,PRIMARY KEY (id));";
client.query(sql1 + sql2 + sql3 +sql4);

FOREIGN KEY 만들기

const sql5 =
  //   FOREIGN KEY 추가하는데 orders 테이블의 user_id와 uesrs 테이블의 id를 연결시킨다.
  "ALTER TABLE orders ADD FOREIGN KEY (user_id) REFERENCES users (id);";
const sql6 =
  "ALTER TABLE order_items ADD FOREIGN KEY (order_id) REFERENCES orders (id);";
const sql7 =
  "ALTER TABLE order_items ADD FOREIGN KEY (item_id) REFERENCES items (id);";

client.query(sql5 + sql6 + sql7);

밸류값 넣어주기

const sql8 =
  "INSERT INTO items (name, price, image) VALUES ('첫번째',1000,'/'),('두번째',2000,'/');";

const sql9 = "INSERT INTO users (username) VALUES ('안녕');";

client.query(sql8 + sql9);

 

 

관계형 합치기

// INNER JOIN 두개의 테이블이 공통된 부분만 (참조된것들) 합치는것
// id, user_id, orer_id, item_id 끼리 합쳐짐

// SELECT 부분이 찾을 값들 FROM전까지
// INENR JOIN order_items ON (order_items.item_id = items.id)
// order_items의 item_id 값이랑 items 테이블의 id 값이랑 같은 값을 합친다.

const sql13 = `SELECT orders.id, orders.created_at,
orders.total_price, items.name, items.price, items.image,
order_items.order_quantity FROM items
INNER JOIN order_items ON (order_items.item_id = items.id)
INNER JOIN orders ON (orders.id = order_items.order_id)
WHERE (orders.user_id = ?)`;

client.query(sql13, [1], (err, result) => {
  console.log(result);
});
728x90
반응형

'개발 > node.js' 카테고리의 다른 글

sequelize Op연산자  (1) 2022.08.25
sequelize 외래키 설정  (0) 2022.08.25
[Node.js] 로그인 만들기  (1) 2022.08.18
[Node.js] crypto, bcrypto  (0) 2022.08.17
[Node.js] access token, refresh token 을 활용하여 로그인 유지시키기  (0) 2022.08.16
'개발/node.js' 카테고리의 다른 글
  • sequelize Op연산자
  • sequelize 외래키 설정
  • [Node.js] 로그인 만들기
  • [Node.js] crypto, bcrypto
TeTedo.
TeTedo.
  • TeTedo.
    TeTedo 개발 일기
    TeTedo.
  • 전체
    오늘
    어제
    • 분류 전체보기 (319)
      • 개발 (274)
        • Article (4)
        • 정리 (21)
        • Spring Boot (17)
        • JPA (2)
        • JAVA (6)
        • Database (4)
        • 자료구조 (11)
        • 알고리즘 (32)
        • React (20)
        • Docker (10)
        • node.js (18)
        • Devops (11)
        • Linux (4)
        • TypeScript (3)
        • Go (10)
        • HyperLedger (4)
        • BlockChain (43)
        • html, css, js (48)
        • CS (3)
        • AWS (3)
      • 모아두고 나중에 쓰기 (3)
      • 팀프로젝트 (18)
        • SNS(키보드워리어) (9)
        • close_sea (9)
      • 개인프로젝트 (1)
        • Around Flavor (1)
        • CHAM (13)
        • ethFruitShop (5)
      • 독서 (0)
        • 스프링부트와 AWS로 혼자 구현하는 웹 서비스 (0)
  • 블로그 메뉴

    • 홈
    • 개발일기
    • CS
    • 실습
    • 코딩테스트
    • 웹
    • Go
    • node.js
    • 팀플
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프로그래머스
    go언어
    nodejs
    CSS
    30일챌린지
    ERC721
    node
    블록체인
    html
    명령어
    하이퍼레저
    컨테이너
    erc20
    도커
    React
    node.js
    30일 챌린지
    go
    js
    mysql
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
TeTedo.
[Node.js] mysql FOREIGN KEY
상단으로

티스토리툴바