공부 노트
foundation 백엔드 세션 0.
2021bong
2022. 9. 16. 13:29
mysql
외부키 걸기
테이블을 생성할 때 다른 테이블에서 참조하는 외부키를 설정해줄 수 있다. 보통 부모 테이블을 참조하는 자식 테이블을 만들 때 사용한다. 외부키를 걸어줄 컬럼과 참조할 테이블과 컬럼을 순서대로 적어준다. 외부키가 여러 개라면 똑같이 하나 더 적어주면 된다.
CREATE TABLE posts
(
id INT NOT NULL AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
content VARCHAR(2000) NULL,
user_id INT NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
PRIMARY KEY (id),
FOREIGN KEY (user_id) REFERENCES users (id) # 여기
);
테이블 변경
컬럼 추가
# ALTER TABLE 테이블이름 ADD 컬럼이름 자료형 제약조건
ALTER TABLE users ADD age INT NOT NULL;
컬럼 삭제
# ALTER TABLE 테이블이름 DROP 컬럼이름
ALTER TABLE users DROP profile_image;
컬럼 수정
# ALTER TABLE 테이블이름 MODIFY 컬럼이름 자료형 제약조건
ALTER TABLE posts MODIFY content TEXT NULL;
테이블 내의 특정행의 데이터만 삭제
# DELETE FROM 테이블이름 WHERE 컬럼이름
DELETE FROM posts WHERE condition;
테이블 내의 데이터 모두 삭제
# TRUNCATE TABLE 테이블이름
TRUNCATE TABLE posts;
데이터 변경
데이터 추가
INSERT INTO 테이블이름 (컬럼이름1, 컬럼이름2) VALUES (값1, 값2)
데이터를 이런 식으로 추가할 수 있다. 부모 테이블을 참조하고 있는 자식 테이블은 잊지 말고 참조 테이블에 존재하는 값을 넣어주어야 한다. 그렇지 않으면 에러가 난다.
# 현재 users 테이블에는 1번~40번까지 유저만 등록되어 있는 상황
# user_id = 100을 참조하도록 INSERT문을 실행
INSERT INTO posts (title, content, user_id) VALUES ("저스트코드 1일차", "HTML과 CSS 익숙해지기..", 100);
Query 1 ERROR: Cannot add or update a child row: a foreign key constraint fails..
데이터 수정
UPDATE를 사용해서 데이터를 수정할 수 있다.
# UPDATE 테이블이름 SET 컬럼이름='값' [WHERE 조건]
UPDATE posts SET content='위코드 3개월 과정을 시작하며...' WHERE id=1;
데이터 삭제
DELETE를 사용해서 데이터를 삭제할 수 있다.
# DELETE FROM 테이블이름 [WHERE 조건]
DELETE FROM posts WHERE user_id = 1;
데이터 조회
WHERE 절과 조건문을 사용해서 특정 범위의 데이터를 가져올 수도 있다.
# user_id가 1이면서 created_at이 '2022-04-15 00:00:00'이전의 데이터
SELECT * FROM posts WHERE user_id = 1 AND created_at < '2022-04-15 00:00:00';
NOT을 사용할 수 도 있다.
# user_id가 1이면서 created_at이 '2022-04-15 00:00:00'이전이 아닌 데이터
SELECT SELECT * FROM posts WHERE NOT(user_id = 1 AND created_at < '2022-04-15 00:00:00');
728x90