DataBase/MySQL

[MySql] 이미 존재하는 row의 속성을 새로 입력하고 싶다면?

왈왈디 2023. 4. 6. 11:44
728x90

예를 들어 name, email, phone_number 칼럼이 있는 users 테이블에서 

당신이 이미 name, email을 넣어 한 명의 user를 아래와 같이 입력했다고 해보자.

id (PK) name email 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

 

728x90