SQL2. 데이터 조작 [CREATE, INSERT, SELECT, UPDATE, DELETE, TRUNCATE, DROP, ALTER]
dltmfdltmf
2025. 2. 11. 19:25
SQL & Marketing
[process]
데이터 기반 지표(KPI)들 분석⇒ 표준 목표에 맞는지 파악⇒ 이후 이를 조정하여 최적화
⇒ 이를 기반으로 마케팅 전략으로 인사이트(=사회적 현상과 연관지어 분석+문서화) 도출
part1.
분석 ⇒ ‘검토’
e.g. 리텐션 분석, ROI 비교 분석, AB 테스트 비교 분석, 퍼널 분석, 구조 모델 분석 등 다른 지표들
이를 표준 목표에 맞는지⇒ 이후 이를 조정하여 최적화
part2.
최적화 ⇒ ‘조정’
최적화 = 특정 목적 위해 조정하는 과정
비율 분석 통해
e.g. 전환율 최적화, LTV 예측, 캠페인 자동 최적화, 추천 시스템 최적화
📜 MEMO
지표 계산1_ 사용자 행동 분석
- 평균 클릭률: AVG((clicks/impressions) * 100) AS avg_ctr 클릭률(%) = (클릭 수/ 노출 수) * 100 - 전환율(%)_ conversion_rate = (구매 사용자 수 / 총 방문 수) * 100 - 특정 기준 이상: WHERE (col명) ≥ 5000 - 특정 범위: WHERE (col명) BETWEEN ‘날짜A’ AND ‘날짜B’
지표 계산 2_ 이메일 캠페인 성과 분석
- 오픈율 = 오픈 수 / 메일 발송 수 - 클릭률 = 클릭 수 / 메일 발송 수 - 전환율 = 전환 수 / 메일 발송 수
지표 계산 3_ 광고 ROI 분석
- ROI(%) = ((매출액 - 예산) / 예산) * 100 - CPC(클릭당 비용) = 예산 / 클릭 수 - CPA (Cost Per Acquisition, 전환당 비용) = 예산 / 전환 수
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY, -- 자동 증가하는 기본 키
name VARCHAR(100) NOT NULL, -- 이름 (필수 입력)
position VARCHAR(50) NOT NULL, -- 직급
salary DECIMAL(10,2) NOT NULL, -- 급여 (소수점 2자리)
hire_date DATE DEFAULT (CURRENT_DATE) -- 입사일 (기본값: 현재 날짜)
);
SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department
ORDER BY employee_count DESC
LIMIT 1;
selcet ⇒ 무엇을 볼 목적인지 : department, employee_count(as 별칭)라는 전체(*) 개수
별칭(as ~): 소실(임시) 변수⇒ 해당 쿼리 종료되면 사라짐
추가 tip. db에 저장할만한 것은 아니고 다른 처리를 위해 이 변수를 유지하고 싶을 땐 pandas로 연결
pandas는 유지되는 기능 있으므로 (=프로세스가 운영되는 시간이 보다 김)
from⇒ 어디 테이블인지
group by⇒ 무엇을 기준으로 그룹화:
department 컬럼 내 같은 이름의 department끼리 그룹화
order by⇒ 해당 컬럼에 대해 DESC(내림차순)
LIMIT⇒ 몇 개 제한
4. 데이터 수정 [UPDATE]
UPDATE employees
SET position = '시니어 개발자', salary = 6000000
WHERE name = '박민수';
여러 칼럼 동시 수정
{name = 박민수}에 해당하는 레코드를 대상으로,
{position = '시니어 개발자'}, {salary = 6000000}의 조건으로 수정
UPDATE employees
SET salary = salary * 1.1 -- 모든 직원의 급여를 10% 인상
WHERE position = '디자이너';
특정 조건 만족하는 모든 행 수정
{ position = '디자이너'}에 해당하는 레코드를 대상으로,
{ salary = salary * 1.1} 조건으로 수정
5. 데이터 삭제 [DELETE]
DELETE FROM employees
WHERE position = '마케팅';
특정 조건 만족하는 행 삭제
6. 테이블 내 전체 데이터 삭제 [TRUNCATE]
TRUNCATE TABLE employees;
TRUNCATE는 모든 데이터를 삭제하지만, 테이블 구조는 유지됨!!
7. 테이블 삭제 [DROP TABLE]
DROP TABLE employees;
DROP TABLE을 실행하면 테이블 자체가 삭제됨
8. 데이터 수정 [ALTER]
# 1) 열 추가 (ADD COLUMN)
ALTER TABLE employees ADD COLUMN email VARCHAR(100) AFTER name; --새로운 email 열을 추가합니다
# 2) 열 삭제 (DROP COLUMN)
ALTER TABLE employees DROP COLUMN department; -- 기존 department 열을 삭제합니다.
# 3) 열 이름 변경 (CHANGE COLUMN)
ALTER TABLE employees CHANGE COLUMN salary monthly_salary DECIMAL(10,2) NOT NULL; -- salary 열의 이름을 monthly_salary로 변경합니다
# 4) 열 데이터 타입 변경 (MODIFY COLUMN)
ALTER TABLE employees MODIFY COLUMN monthly_salary BIGINT NOT NULL; -- monthly_salary의 데이터 타입을 BIGINT로 변경합니다.
# 5) 기본 키 변경 (ADD/DROP PRIMARY KEY)
ALTER TABLE employees MODIFY id INT; -- AUTO_INCREMENT 제거
ALTER TABLE employees DROP PRIMARY KEY;
ALTER TABLE employees ADD PRIMARY KEY (email); --오류나는 경우 (email 컬럼에서 중복값이나 NULL 값이 있는 경우⇒ PK 지정 불가)
# 6) 테이블 이름 변경 (RENAME TO)
ALTER TABLE employees RENAME TO staff; -- employees 테이블을 staff로 변경합니다.
열 추가- ADD
열 삭제- DROP
변경
열 이름 변경- CHANGE ** CHANGE COLUMN을 사용할 때는 기존 데이터 타입을 명시해야 함