Basic UPDATE statement - 기초적인 UPDATE 문법
hyperskill - Basic UPDATE statement 원문
글자 그대로, 우리는 그냥 데이터를 저장하지 않습니다.
우리는 현실에 존재하는 것의 최신 상태를 가깝게 반영 할 필요가 있습니다.
직장에서 승진하는 사람들이 있으므로, 그들의 직함을 바꿔줄 필요가 있습니다.
예를 들어, 당신의 친구들에게 선물을 살 수 있으며, 당신의 은행 계좌의 돈의 총량은 그에 따라 조정됩니다.
이 경우처럼, SQL은 이미 존재하는 줄들의 셀의 값을 바꾸는 데 도와주는 특별한 연산자를 가지고 있습니다.
이 연산자는 UPDATE
입니다.
General form - 일반적인 형태
업데이트를 만들기 위해 어떤 정보가 중요할까요?
- 데이터를 변경 할 테이블의 이름
- 데이터가 있는 컬럼의 이름(들)
- 지정된 각 컬럼의 새로운 값을 계산 할 표현식
UPDATE table_name
SET col1 = expr1,
col2 = expr2,
...,
colN = exprN;
"컬럼 이름 -- 표현식" 쌍은 콤마,
에 의해 분리됩니다.
일반적으로, 어떤 표현이던, 유효한 표현식을 사용 할 수 있습니다.
당신은 알맞는 조합의 리터럴, 연산자, 함수를 입력할 수 있습니다.
그리고, 컬럼 참조는 그냥 해당 컬럼의 타입 일관성을 기억하세요.
정수형 컬럼을 텍스트로 업데이트 시도하는 것은 절대로 좋은 아이디어가 아닙니다.
한 번 상상 해 봅시다.
당신은 'ABC Industries Ltd'를 위해 일하는 개발자입니다.
회사는 엄청난 양의 데이터를 가지고 있으며, SQL을 이용해서 데이터를 작업합니다.
그들의 인원에 대한 정보는 employees
라는 이름의 테이블에 저장되어 있습니다.
각각의 직원들은 밑의 정보를 가지고 있습니다.
- department id (integer) - 부서 아이디 (정수)
- their last name (text) - 성 이름 (텍스트)
- their salary (integer) - 연봉 (정수)
- upper limit (integer) - 연봉의 상한 제한 (정수)
department_id | last_name | salary | upper_limit |
---|---|---|---|
12 | Johnson | 80000 | 130000 |
78 | Lee | 90000 | 120000 |
34 | Flower | 70000 | 140000 |
65 | Owen | 60000 | 110000 |
만약 어떠한 이유로 모든 작업자들이 부서 14로 이동해야 한다면, 우리는 밑과 같이 쓸 수 있습니다. :
UPDATE employees
SET department_id = 14;
컬럼 department_id
가 정수형 타입인데, 우리는 정수형 값을 사용했으므로, 이 쿼리는 알맞습니다.
여기 쿼리가 실행된 뒤 보이는 테이블입니다. :
department_id | last_name | salary | upper_limit |
---|---|---|---|
14 | Johnson | 80000 | 130000 |
14 | Lee | 90000 | 120000 |
14 | Flower | 70000 | 140000 |
14 | Owen | 60000 | 110000 |
Column references - 컬럼 참조
앞서 말한 것 처럼, 새로운 값은 상수 리터럴 일 필요가 없습니다.
종종, 새로운 값은 이미 테이블 셀에 표현된 데이터를 기반으로 구성됩니다.
각 컬럼의 참조는 해당되는 줄의 셀에 저장된 최신 값을 표현합니다.
만약에 당신이 회사 구조의 엄청난 변화를 축하하며, 직원들에게 임금 상승을 해 주고 싶다면?
절대값은 여기에 적합하지 않으므로, 그들의 최신 연봉을 사용해야 합니다 :
UPDATE employees
SET salary = salary + 10000;
department_id | last_name | salary | upper_limit |
---|---|---|---|
14 | Johnson | 90000 | 130000 |
14 | Lee | 100000 | 120000 |
14 | Flower | 80000 | 140000 |
14 | Owen | 70000 | 110000 |
정수형 컬럼과 정수 값의 덧셈이 정수형 타입의 값을 만들었고, 이는 결과가 되었습니다.
이것이 의미하는 것은 타입 일관성 요구사항이 만족되었다는 것 입니다.
주의 할 점
- UPDATE를 실행하고 있는 동안, 테이블의 모든 줄은 개별적으로 고려됩니다.
- 셀에 대한 새로운 값을 계산하기 위해 오래된 값(들)을 사용해야 한다면, 동일한 줄의 셀들만 고려됩니다.
동시에 다중 컬럼을 업데이트 하는 것도 가능하므로,
두 개의 쿼리 대신 하나의 쿼리로도 동일한 결과를 이룰 수 있습니다.
UPDATE employees
SET department_id = 14,
salary = salary + 10000;
이제 좀 더 정교하게 가 봅시다.
새로운 연봉을 그들의 최대 연봉의 80퍼센트로 정하고,
계산 결과 나타날 분수 부분을 생략합니다.
분수 부분 (소수점) 제거를 위해서,
우리는 floor()
기능을 사용해서 실수 값을 가져와 정수 값으로 반환할 수 있습니다.
UPDATE employees
SET salary = floor(0.8 * upper_limit);
department_id | last_name | salary | upper_limit |
---|---|---|---|
14 | Johnson | 104000 | 130000 |
14 | Lee | 96000 | 120000 |
14 | Flower | 112000 | 140000 |
14 | Owen | 88000 | 110000 |
볼 수 있다시피, 연습 할 때 업데이트는 꽤 간단한 연산자입니다.
하지만, 종종 유용 할 것 입니다.
Summary - 요약
우리는 테이블의 몇몇 데이터를 바꿀 필요가 있을 때, 업데이트가 정말로 도움이 되는 것을 보았습니다.
당신이 할 것은 그저 UPDATE ... SET
구문을 사용하고,
컬럼 이름과 당신이 삽입 할 새로운 데이터를 표기하는 것입니다.
UPDATE
를 통해 여러 컬럼들을 업데이트 하는 것도 가능하고, SQL 기능을 사용하는 것도 가능합니다.
'Hyperskill - 컴퓨터 CS 및 영어 독해 > Introducing to SQL' 카테고리의 다른 글
Inserting selected rows - 선택된 줄 삽입하기 (0) | 2024.04.26 |
---|---|
Updating selected rows - 선택된 줄들 업데이트하기 (1) | 2024.04.25 |
Types of JOINs - JOIN의 종류들 (0) | 2024.04.24 |
Results ordering - 결과 정렬하기 (1) | 2024.04.22 |
FOREIGN KEY constraint - 외래 키 제약 조건 (2) | 2024.04.21 |