DELETE
- 데이터베이스에서 특정 조건에 맞는 데이터를 삭제하는 데 사용됩니다.
-- 해당 쿼리는 emp_no가 999903인 데이터를 지웁니다.
DELETE FROM employees
WHERE
emp_no = 999903;
- 주의사항 : where절을 넣지 않으면 해당 테이블의 모든 데이터가 삭제됩니다.
DROP vs TRUNCATE vs DELETE: 차이점
1. DROP
DROP 명령어는 테이블 자체를 삭제
- 특징: 테이블의 모든 데이터와 구조가 제거됨.
- 사용 예시: DROP TABLE table_name;
- 주의사항: 롤백 불가. 테이블이 완전히 삭제되므로 신중하게 사용해야 함.
2. TRUNCATE
TRUNCATE 명령어는 테이블의 모든 데이터를 삭제하지만, 테이블 구조와 인덱스, 제약 조건은 그대로 유지됩니다.
이 명령어는 DELETE보다 더 빠르게 데이터를 제거할 수 있으며, 자동 증가(Auto increment) 값도 초기화됩니다.
- 특징: 테이블의 모든 데이터가 삭제되지만, 테이블 구조는 유지됨.
- 사용 예시: TRUNCATE TABLE table_name;
- 주의사항: 롤백 불가. 데이터만 삭제되며 테이블 구조는 남아 있음.
3. DELETE
DELETE 명령어는 테이블에서 특정 조건을 만족하는 데이터만 삭제합니다.
- 특징: 조건에 맞는 데이터만 삭제됨.
- 사용 예시: DELETE FROM table_name WHERE condition;
- 주의사항: 테이블 구조와 다른 데이터는 유지됨. TRUNCATE보다 느릴 수 있음.
요약
- DROP: 테이블 자체를 삭제하며 복구 불가.
- TRUNCATE: 데이터만 빠르게 삭제하며 테이블 구조 유지.
- DELETE: 특정 조건의 데이터만 삭제하며 롤백 가능.
Aggregate functions(집계함수)
1. COUNT
COUNT 집계 함수는 특정 조건에 만족한 데이터의 행의 개수를 세어주는 역할을 합니다.
COUNT(DISTINCT 컬럼명) 해당 명령어는 유니크 값(즉, 고유값)의 개수를 세어줍니다.
추가로 COUNT 함수에만 '*'에만 사용 가능합니다.
SELECT
COUNT(*)
FROM
salaries;
SELECT
COUNT(DISTINCT dept_no) -- 고유값 찾기
FROM
dept_emp;
2. SUM
SUM 집계 함수는 특정 조건에 만족하는 데이터의 값들의 행들을 모두 더해 줍니다.
만약, 데이터의 값이 숫자형이 아니라면 오류가 발생합니다.
SELECT
SUM(salary) -- 숫자 데이터만 가능하다.
FROM
salaries;
3. AVG
AVG집계 함수는 특정 조건에 만족하는 데이터의 값들의 행들의 평균을 구해 줍니다.
SUM과 마찬가지로 데이터의 값이 숫자형이 아니라면 오류가 발생합니다.
4. MIN MAX
MIN 집계 함수는 최솟값을 구해주고 MAX 집계함수는 최대값을 구해줍니다.
5. ROUND
ROUND 집계 함수는 반올림을 해줍니다. 그리고 반올림을 할 자릿수도 정할 수 있습니다.
ROUND(반올림할 데이터, 반올림 자릿수)
-- 반올림 할 자릿수에 아무것도 넣지 않는다면 0으로 설정됩니다.
SELECT
ROUND(AVG(salary), 2)
FROM
salaries;
IFNULL - COALESCE
- 두 함수는 NULL 값을 처리하는 함수들입니다. 이 두 함수는 NULL 값을 대체하는 역할을 하지만, 사용 방식에 차이가 있습니다.
1. IFNULL()
IFNULL() 함수는 두 개의 인수를 받아, 첫 번째 인수가 NULL이면 두 번째 인수를 반환합니다. 주로 NULL 값을 특정 값으로 대체할 때 사용됩니다.
- 사용 예시: SELECT IFNULL(column_name, 'default_value') FROM table_name;
- 특징: 두 개의 인수만 받을 수 있음.
/*
dept_name의 값 중 null 값이 있다면 null 대신 'Department name not provided'문자열로
넣어주게 됩니다.
그리고 별칭으로 dept_name으로 출력하도록 만들었습니다.
*/
SELECT
dept_no,
IFNULL(dept_name,
'Department name not provided') as dept_name
FROM
departments_dup;
2. COALESCE()
COALESCE() 함수는 여러 개의 인수를 받아, 첫 번째로 NULL이 아닌 값을 반환합니다. 이 함수는 IFNULL()과 유사하지만, 더 많은 인수를 받을 수 있어 유연성이 높습니다.
- 사용 예시: SELECT COALESCE(column1, column2, 'default_value') FROM table_name;
- 특징: 여러 인수를 받을 수 있으며, 첫 번째 NULL이 아닌 값을 반환.
/*
dept_manager가 null일 경우 dept_name값을 넣어주고
만약 dept_name값이 null일 경우 'N/A'를 넣어준다.
*/
SELECT
dept_no,
dept_name,
COALESCE(dept_manager, dept_name, 'N/A') AS dept_manager
FROM
departments_dup order by dept_no;
요약
- IFNULL(): 두 개의 인수만 처리.
- COALESCE(): 여러 인수를 처리하며 첫 번째 NULL이 아닌 값을 반환.
'Data Analyst > SQL' 카테고리의 다른 글
SQL - RIGHT JOIN, SQL 조인 구문: 새로운 방식과 오래된 방식, CROSS JOIN (0) | 2024.09.02 |
---|---|
SQL - INNER JOIN, DUPLICATED, LEFT JOIN (0) | 2024.08.31 |
SQL - The INSERT Statement, The UPDATE Statement, COMMIT and ROLLBACK (0) | 2024.08.28 |
SQL - Wildcard, IS NULL, Between AND, Distinct, Aggregate Function, Group By, Having, Limit (0) | 2024.08.27 |
SQL - SELECT, WHERE, AND, OR, IN-NOT IN (0) | 2024.08.26 |