백엔드심화sql
posted on 10 Oct 2024 under category mysql
💫 백엔드심화SQL
CREATE DATABASE Board;
USE Board;
CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
job VARCHAR(100),
birth DATE,
PRIMARY KEY (id)
);
INSERT INTO users (name, job, birth)
VALUES ("haerin", "idol","20060515");
INSERT INTO users (name, job, birth)
VALUES ("haerin", "student","2006-07-15");
INSERT INTO users (name, job, birth)
VALUES ("danielle", "idol","2005-04-11");
INSERT INTO users (name, job, birth)
VALUES ("minji", "idol","2004-05-07");
INSERT INTO users (name, job, birth)
VALUES ("hanni", "idol","2004-10-06");
CREATE TABLE posts (
id INT NOT NULL AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
content VARCHAR(2000),
created_at TIMESTAMP DEFAULT NOW(),
PRIMARY KEY (id)
);
INSERT INTO posts (title, content)
VALUES ("title1", "content1");
ALTER TABLE posts
ADD COLUMN updated_at DATETIME
DEFAULT NOW()
ON UPDATE NOW();
UPDATE posts
SET content="updated!"
WHERE id = 2;
ALTER TABLE posts
ADD COLUMN user_id INT;
ALTER TABLE posts
ADD FOREIGN KEY(user_id)
REFERENCES users(id);
[FK 제약조건 이름 짓기] : “컨벤션”
fk_기준 테이블명_참조테이블명_참조키
cartItems.user_id > users.id : fk_cartItems_users_id
likes_user_id > users.id : fk_likes_users_id
SELECT * FROM posts LEFT
JOIN users ON posts.user_id = users.id;
SELECT posts.id, title, content, created_at, updated_at, name, job, birth FROM posts LEFT
JOIN users ON posts.user_id = users.id;
SELECT count(*) FROM likes WHERE liked_book_id = 1;
SELECT *, (SELECT count(*) FROM likes WHERE liked_book_id=books.id) AS likes FROM books;
SELECT *,
(SELECT count(*) FROM likes WHERE liked_book_id=books.id) AS likes,
(SELECT EXISTS (SELECT * FROM likes WHERE user_id=1 AND liked_book_id=1)) AS liked
FROM books
LEFT JOIN category
ON books.category_id = category.category_id
WHERE books.id=1;