티스토리 뷰

공부 노트

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

'공부 노트' 카테고리의 다른 글

[HTML] hidden 속성  (0) 2022.09.16
[Vite] Vite  (0) 2022.09.16
[JS] switch문  (0) 2022.08.19
HTTP 메소드와 리소스  (0) 2022.08.10
웹서비스의 역사와 발전  (0) 2022.08.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함