데이터 리터러시를 위한 발자취

[패스트캠퍼스] SQL 강의 학습후기 3주차 본문

데이터 분석/SQL

[패스트캠퍼스] SQL 강의 학습후기 3주차

wosole 2023. 6. 10. 20:01

국비지원교육으로 수강 중인 SQL 3주차 학습후기를 시작해보겠습니다.

 

1~2주차에서 기본적인 SQL 관련 기능을 숙지하였다면 3주차부터는 문제풀이 중심으로 진행하는 기간이었습니다.

 

언어도 계속 써야 잊어버리지 않는만큼 SQL도 쿼리문들에 대한 로직이나 문장들을 기억하기 위해선 계속 써봐야 제 것으로 만들 수 있는거겠죠.

 

확실히 2주차에 비해 3주차부터는 난이도 다소 증가한 느낌입니다.


11. 알아두면 좋은 고급기능
1) 데이터 삭제, 수정하기 고급(DELETE, UPDATE)
2) 제약조건(CONSTRAINTS)
3) 권한과 DCL(GRANT, REVOKE)
4) 트랜잭션과 TCL(COMMIT, ROLLBACK, SAVEPOINT)
더보기

1) 데이터 삭제, 수정하기 고급(DELETE, UPDATE)

- DELETE : 데이터 삭제하기 (*1주차에 배웠던 내용과 이어짐)

DELETE FROM [테이블이름]
WHERE 조건식; -- DELETE에 WHERE 조건을 사용하면, 특정 행만 삭제 가능함

- UPDATE : 데이터 수정하기

UPDATE [테이블이름]
SET [컬럼이름] = [새 값]
WHERE 조건식;

2) 제약조건(CONSTRAINTS)

- 데이터 입력 시, 실행되는 입력규칙임

> ALTER TABLE, CREATE TABLE 구문에서 사용됨

CREATE TABLE [테이블이름] (
	[컬럼이름] [데이터타입] [제약조건]
    [컬럼이름] [데이터타입] [제약조건]
    ...
    );
-- ALTER TABLE 구문도 동일하게 구성됨

[ 제약조건 ]

제약조건 구문 의미
NOT NULL 이 컬럼에는 NULL 값을 저장할 수 없음
UNIQUE 이 컬럼의 값들은 서로 다른 값을 가져야 함
DEFAULT 이 컬럼에 입력값이 없을 시, 기본값을 설정됨
PRIMARY KEY 테이블의 기본키를 의미(PK), NOT NULL & UNIQUE 특징 모두 가짐
FOREIGN KEY 테이블의 외래키를 의미(FK), 다른 테이블의 특정 컬럼을 참조함

3) 권한과 DCL(GRANT, REVOKE)

[SQL 분류]

- DDL(데이터 정의어) : CREATE, ALTER, DROP, RENAME, TRUNCATE

- DML(데이터 조작어) : SELECT, INSERT, UPDATE, DELETE

- DCL(데이터 제어어) : GRANT, REVOKE

- TCL(트랜잭션 제어어) : COMMIT, ROLLBACK, SAVEPOINT

# 권한 부여하기
GRANT [권한] ON [데이터베이스이름].[테이블이름] TO [사용자이름]@[ip주소];

# 권한 회수하기(삭제)
REVOKE [권한] ON [데이터베이스이름].[테이블이름] FROM [사용자이름]@[ip주소];

# 권한 적용하기
FLUSH PRIVILEGES;

4) 트랜잭션과 TCL(COMMIT, ROLLBACK, SAVEPOINT)

- 데이터베이스의 데이터 상태를 바꾸는 작업 묶음, 트랜잭션을 제어하기 위한 언어임

- COMMIT : 데이터에 대한 변화를 DB에 반영하기 위한 명령어 

- SAVEPOINT : 코드를 분할하기 위한 저장포인트 지정

- ROLLBACK : 트랜잭션이 시작되기 이전 상태로 되돌리는 언어(최신 COMMIT & SAVEPOINT로 돌릴 수 있음)

# 세이브포인트 만들기
SAVEPOINT [세이브포인트 이름];

# 세이브포인트 돌아가기
ROLLBACK TO [세이브포인트 이름];

위 내용으로 SQL의 기본 강의는 끝이 나고 이제부턴 실습 중심의 문제풀이가 이어졌습니다. 

회사 다닐 땐 G2B 중심이어서 실습 강의에서 언급되는 용어 대부분을 모르겠더라구요..

 

비즈니스 쪽에선 KPI처럼 자주 쓰이는 지표라고 하여 아래와 같이 추가적으로 정리해두었습니다. 

[ 용어 정리 ]
1. MAU(Monthly Active User) :한 달동안 서비스를 사용하는 순 유저 수

2. DAU(Daily Active User) : 일별 활동 유저에 대한 수치를 의미, 하루에 몇 명이 이 서비스를 사용하는가
* 회사마다 Active User에 대한 정의가 다르기에 사전 확인 필요함

3. ARPU(Averge Revenue Per User) : 유저당 평균 수익(매출)
> 산출식 : 월간 반복 매출(MRR)* / 활성 유저 수
* 어떤 지표를 구할 것인가에 따라 월간 반복 매출이 아닌 DAU, 총 유저 수로도 지표를 구할 수 있음

4. MCU(Maximum Current User) : 순간 동시 접속 유저 수(보통 실시간 수치 해석함)

5. ACU(Average Current User) : 평균 동시 접속 유저 수

6. PU(Paying User) : 일정 기간 내 서비스 이용/구매한 유저 수를 의미(중복을 제외한 유저 수)

7. PU Rate : 구매유저 비율(ex. DAU(10,000명)/일일 구매유저 수(1,000명) > PU Rate 10% 

8. MRR(Monthly Recurring Revenue) : 한 달동안 발생한 총 이익의 합계
> 산출식 : 월간 총수익 - 이탈 고객으로 인한 매출 손실

 

남은 학습후기는 실습에 따른 문제풀이와 기타 TIP 위주로 정리할 것 같네요. 배울 수록 배울 게 무궁무진합니다..ㅎㅎ

 

[ TIPS ]

- OFFSET : 데이터를 어디서부터 가져올지 지정하는 키워드

> 학습후기 1주차에 배웠던 LIMIT와 연계하여 사용하기도 함 

# 사용 예시
SELECT * FROM [테이블명] LIMIT 10 OFFSET 5; -- 5번째 행부터 15번째 행까지 출력 (5~15)

# LIMIT 응용 예시
SELECT * FROM [테이블명] LIMIT 10, 2; -- 10번째 행부터 그 후 2개 행 출력 (11~12)

- DATE_ADD & DATE_SUB : 기준 날짜에서 일 더하기, 빼기

쿼리문 활용 예시 출력 결과
DATE_ADD('날짜', INTER 숫자 DAY) SELECT DATE_ADD('2023-01-01', INTERVAL 7 DAY); 2023-01-08
DATE_SUM('날짜', INTER 숫자 DAY) SELECT DATE_SUM('2023-01-01', INTERVAL 7 DAY); 2022-12-25

- DATE_FORMAT() 관련 파라미터 (*학습후기 1주차에도 작성하였으나 기입하지 않은 파라미터 중심으로 추가 보완)

> 날짜형 데이터 관련 함수가 다수 존재하지만, 테이블 내 시간 데이터가 있다면 DATE_FORMAT 기반으로 요일, 시간대별 데이터 출력하는 것이 용이함

형식 의미
EX) DATA_FORMAT(컬럼이름, ''%Y-%m-%d) > YYYY-MM-DD 형식으로 출력됨
%H 시간을 24시간 형태로 출력
%h 시간을 12시간 형태로 출력
%S, %s 초 단위로 출력(second)
%W Day of Week 요일 영어로 표현(sunday. monday...)
%w Day of Week 요일 숫자로 표현
%U week 주로 표현(시작일 : 일요일)
%u week 주로 표현(시작일 : 월요일)
%a Day of week 요일을 약어로 표현(sun, mon, tue..)

 

- MySQL Workbench 단축키 모음

> Ctrl + / : 전체 주석 처리(주석해제도 동일)

> Ctrl + Shift + Enter : SQL 쿼리문 전체 실행

> Ctrl + B : 쿼리문 자동정렬

> Ctrl + T : 쿼리 Tab 신규 생성 

 


* 용어 관련 References

더보기

 

Comments