예를 들어 name, email, phone_number 칼럼이 있는 users 테이블에서
당신이 이미 name, email을 넣어 한 명의 user를 아래와 같이 입력했다고 해보자.
id (PK) | name | phone_number | |
1 | 왈왈이 | walwalwal@tistory.com | NULL |
... |
phone_number는 입력하지 않았으므로, NULL값일 것이다.
이 상태에서 phone_number를 입력하고자 할 때
INSERT INTO 구문을 사용하여 데이터를 넣어야겠다고 생각할 수 있다.
하 지 만
데이터 관점에서 INSERT INTO는 새로운 행(새로운 user)를 추가하는 행위이므로
이미 존재하는 행(user)의 속성(column)을 새로이 입력하고자 할 때는 UPDATE ~ SET ~구문을 사용해줘야 한다.
INSERT INTO는 새로운 행을 추가하는 명령어이므로, 자연히 WHERE 조건절도 사용할 수 없다.
UPDATE에서는 특정 행을 지정해야 하므로 사용할 수 있다.
따라서 위 예시에서 '왈왈이' 유저의 phone_number를 추가하기 위해서는 아래와 같은 명령어를 입력해주면 된다.
UPDATE users
SET phone_number = '010-1234-1234'
WHERE id = 1
참고한 StackOverFlow 링크: https://stackoverflow.com/questions/485039/mysql-insert-query-doesnt-work-with-where-clause
MySQL Insert query doesn't work with WHERE clause
What's wrong with this query: INSERT INTO Users( weight, desiredWeight ) VALUES ( 160, 145 ) WHERE id = 1; It works without the WHERE clause. I've seemed to have forgot my SQL.
stackoverflow.com
'DataBase > MySQL' 카테고리의 다른 글
[MySQL] 인덱스의 기본, B-Tree 인덱스 사용법 (3) | 2024.11.24 |
---|---|
[MySql] 조건 입력 순서 (0) | 2023.04.27 |
[MySql] GROUP BY, max()를 활용한 문제 풀이 (0) | 2023.03.25 |
[MySql] mysql을 실행하려고 했을 때 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 에러 문구가 나온다면 (0) | 2023.03.25 |
[MySql] 명령어 정리 - DDL (Data Definition Language) 쿼리문 (0) | 2023.03.24 |