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연산자 (0) | 2022.08.25 |
---|---|
sequelize 외래키 설정 (0) | 2022.08.25 |
[Node.js] 로그인 만들기 (0) | 2022.08.18 |
[Node.js] crypto, bcrypto (0) | 2022.08.17 |
[Node.js] access token, refresh token 을 활용하여 로그인 유지시키기 (0) | 2022.08.16 |