SQL

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, 전환당 비용) = 예산 / 전환 수

 

SQL에서 데이터 조작

[CREATE, INSERT, SELECT, UPDATE, DELETE, TRUNCATE, DROP, ALTER]

 

1. 테이블 생성 [CREATE]

(CREATE 명령문 틀)
이전글( SQL1. Maria DB를 활용한 SQL) 중..

 

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) -- 입사일 (기본값: 현재 날짜)
);

(실습)

 

  • AUTO_INCREMENT PRIMARY KEY : 인덱스 자동 지정
    • ⇒ insert할 때 따로 col 추가 필요x

order_id: 순서대로 인덱싱 되는 경우

 

2. 데이터 삽입 [INSERT]

(INSERT명령문 틀)
이전글( SQL1. Maria DB를 활용한 SQL) 중..

 

INSERT INTO employees (name, position, salary)
VALUES
('김철수', '디자이너', 4500000),
('이영희', '마케팅', 4800000),
('박민수', '개발자', 5200000),
('최수영', 'HR 매니저', 4700000);

(실습)

 

데이터 확인 관련 SQL명령문 tip!

 

+) desc employees;

테이블 생성 확인 출력값

 

3. 데이터 조회 [SELECT]

SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department
ORDER BY employee_count DESC
LIMIT 1;
  1. selcet ⇒ 무엇을 볼 목적인지 : department, employee_count(as 별칭)라는 전체(*) 개수
    • 별칭(as ~): 소실(임시) 변수⇒ 해당 쿼리 종료되면 사라짐
    • 추가 tip. db에 저장할만한 것은 아니고 다른 처리를 위해 이 변수를 유지하고 싶을 땐 pandas로 연결
      • pandas는 유지되는 기능 있으므로 (=프로세스가 운영되는 시간이 보다 김)
  2. from⇒ 어디 테이블인지
  3. group by⇒ 무엇을 기준으로 그룹화:
    • department 컬럼 내 같은 이름의 department끼리 그룹화
  4. order by⇒ 해당 컬럼에 대해 DESC(내림차순)
  5. 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을 사용할 때는 기존 데이터 타입을 명시해야 함
    • 열 자료형 변경- MODIFY
    • 테이블 이름 변경- RENAME TO
    • 기본 키(PK) 변경 **해당 열이 (1) 중복x, (2) NOT NULL 이어야 함