목차
0. DCL상에 TRUNCATE
1. DDL상에 TRUNCATE
내가 여기서 말하는 TRUNCATE는 DCL이 아닌 DDL이라는 것을 말하고 시작하겠다.
이것을 찾게된 계기는 여기에서 처음으로 작성하면서 이게 어떨때 쓰는지 궁금해서 검색해 봤고 DCL에 대해서만 내용이 나왔었다.
테이블 내용을 삭제하는 DELETE나 DROP 처럼 테이블 내용을 삭제할 수 있는데 TRUNCATTE는 DELETE처럼 하나만 삭제하거나 DROP처럼 테이블을 날려버리는 것이 아닌 테이블은 그대로 두면서(규칙도 유지한다) 테이블에 열심히 작성해서 넣어둔 모든 것을 날리지만 삭제한 데이터들을 로그에 남기지 않을 수 있으니 자신이 사용하는 DB에서 TRUNCATE가 어떤 동작을 해서 실행되는지 알고 사용하길 바란다.
TRUNCATE 테이블 이름
테이블이 PRODUCT 이고 ROW가 100개정도 있다고 할때
TRUNCATE PRODUCT
입력시 PRODUCT의 형태는 유지되나 테이블 조회시
컬럼명들만 나오고 내용은 다 삭제된다.
TRUNCATE 함수는 일부분 또는 소수 자릿수를 버릴 때 사용하는 SQL 함수입니다.
주로 숫자 데이터 타입에서 사용됩니다.
TRUNCATE 함수는 다음과 같은 기능을 수행합니다:
숫자 자릿수 제한: TRUNCATE 함수는 숫자의 자릿수를 제한하여 표시합니다. 예를 들어, TRUNCATE(1234.5678, 2)는 소수점 이하 자릿수를 2로 제한하여 1234.56을 반환합니다.
라운딩: TRUNCATE 함수는 버림 연산을 수행하므로, 소수점 이하 값을 무시하고 정수 부분만 반환합니다. 예를 들어, TRUNCATE(9.99)는 9를 반환합니다.
소수 자릿수 제한: 음수 값을 사용하여 TRUNCATE 함수를 호출하면 소수 자릿수 이상의 자릿수를 버릴 수 있습니다. 예를 들어, TRUNCATE(1234.5678, -2)는 소수점 두 자리 이상을 버려 1200을 반환합니다.
이 경우에는 PRICE 열에서 가격을 자릿수에 따라 그룹화하여 결과를 얻기 위해 TRUNCATE 함수가 사용되었습니다. PRICE를 -4로 TRUNCATE하면 소수점 아래 4자리를 제외한 숫자만 남게 됩니다. 그런 다음, 이러한 그룹별로 상품의 수를 계산하여 결과를 반환합니다
TRUNCATE('Hello, World!', 5)는 문자열 'Hello'를 반환합니다. 원래 문자열의 길이가 기준 길이보다 길기 때문에 잘라내기가 수행됩니다.
TRUNCATE('OpenAI', 10)는 문자열 'OpenAI'를 반환합니다. 기준 길이와 길다면 전체를 반환하며 반환하면서 글자수가 부족하다고 더 추가해서 보내주지는 않습니다. 잘라내기만 하는거니 추가는 없답니다.
TRUNCATE 함수는 데이터 값을 조작하는 것이 아니라, 숫자 값을 가공하거나 소수점 이하 자릿수를 제한하는 등의 데이터 구조에 영향을 주는 작업을 수행하기 때문에 DDL에 속합니다.