블로그
전체 42024. 03. 25.
0
SQL SEC3 _ 쿼리 템플릿
1. TASK 확인지표 구체화 : 추상적이지 않고 구체적인 지표 명시 (분자, 분모 명시)지표 탐색 : 유사한 문제를 해결한 케이스가 있는 지 확인 -> 있다면 해당 쿼리 리뷰테이블 결정2. DB 구조 확인단일지표다량 지표-> JOIN 필요join key 확인driving table이 무엇인지 체크테이블에서 파악해야할 정보데이터가 어떻게 저장되어 있는가 - ERD, 스키마 확인칼럼의 의미다른 테이블과 연결할 때 어떤 칼럼을 사용해야 할까 3. 쿼리 짜기쿼리 구상 순서FROM + JOIN -> WHERE -> GROUPBY -> (HAVING) -> SELECT -> ORDER BY -> LIMIT마지막에 정렬 신경쓰기4. 데이터 결과 검증데이터 정합성 확인 (예상한 결과와 동일한지 확인)효율성(실행 계획), 시간 체크 -> 쿼리 튜닝5. 쿼리 가독성 체크쿼리 작성 템플릿# 쿼리를 작성하는 목표, 확인할 지표 : # 쿼리 계산 방법 : # 데이터 기간 : # 사용할 테이블 : # join key : # 데이터 특징 : SELECT FROM WHERE생산성 도구 : espanso
데이터베이스
2024. 03. 22.
0
sql - sec2 : where 조건
WHERE 조건을 걸 때조건 칼럼이 어떻게 생겼는 지 확인하기 (EX. type) 칼럼의 내용이 없는 값을 추출WHERE COL IS NULL
2024. 03. 22.
0
sql -sec2
select 문 실행순서실행 순서에 맞춰서 쿼리문을 작성하는 게, 튜닝 관점에서 유리하고, 성능 낭비를 방지할 수 있다.실행 순서 때문에 ROWNUM 순서가 바뀐다.FROM + JOIN조회를 하기 위한 테이블을 가져옴. JOIN이 필요하다면 이때 진행WHERE받아온 테이블에 조건을 검GROUP BY집계 기준으로 사용할 그룹 칼럼 지정.GROUP BY가 걸려있을 때 실행 순서가 헷갈리긴함.HAVING해당 절에서 GROUP에 대한 조건을 검. 이때 select에서 지정한 칼럼을 사용함.HAVING 절의 조건을 WHERE 절에도 사용할 수 있는 경우라면 WHERE절에 사용하는 것이 바람직하다.HAVING 절은 각 그룹에 조건을 걸기 때문에 퍼포먼스가 떨어진다.하지만 현재는 내부에서 optimizingSELECT조건이 걸린 테이블에서 원하는 칼럼만 들고 오는 것.ORDER BY행의 순서 정렬LIMIT결과 중 몇 개의 행을 보여줄 지 결정쿼리 쓰는 순서테이블 -> 조건 -> 칼럼 -> (집계) -> (집계 조건) -> 정렬주의해야할 쿼리1. WHERE절이 SELECT보다 먼저 실행되기때문에 full_name변수명을 조건으로 사용할 수 없다.SELECT CONCAT(first_name, last_name) AS full_name FROM user WHERE full_name = 'VioletBeach';이때는 문제 없이 돌아감. 실행 순서가 어떻게 되는 걸까SELECT gender, COUNT(emp_no) as people_cnt FROM EMPLOYEES GROUP BY gender HAVING people_cnt > 130000GROUP BY에서는 select에서 칼럼명 변경한 칼럼 사용 가능이유 : mysql에서는 GROUP BY,HAVING을 평가하기 전에 select 절을 일부 평가하기 때문에 alias 사용이 가능하다.
2024. 03. 20.
1
sql - section 1
관계형 DBOLTP (Online Transaction Processing): 트랜잭션을 하기위한 데이터베이스특징보류, 중간 상태가 없어서 데이터의 무결성을 유지할 수 있다.데이터 추가, 변경이 많다.쿼리 속도가 느리다.트랜잭션: 데이터베이스의 상태를 변화시키기 위해 수행되는 작업의 단위관련 DBMSoracle데이터 베이스 시장 1위높은 안정성과 유지보수 보장비싼 가격mysql오픈소스데이터 베이스 시장 2위postgreSQL오픈소스mysql보다 sql 표준을 잘 지원하며, 쿼리가 복잡해질 수록 성능이 더 잘 나옴mssql대규모 엔터프라이즈 수준의 시스템에 적합주로 윈도우 환경에 사용default isolation level이 read committed데이터를 읽을 때 공유잠금이 유지 -> WITH(NOLOCK)을 통해 공유잠금없이 데이터 조회OLAP(Online Analytical Processing): 데이터 웨어하우스를 이용해, 분석질의를 처리 목적으로 만들어진 데이터베이스쿼리 속도가 빠른 편데이터 웨어하우스: 분석가능한 정보의 중앙 라포지토리관련 DBMS빅쿼리구글 클라우드의 OLAP + data warehouse 사용컴퓨팅 레이어와 스토리지 레이어 분리각 레이어가 다른 레이어에 영향을 안 미침비관계형 DB (NOSQL)특징key - value 형식을 지원PK,FK JOIN을 지원하지 않음스키마에 대한 정의가 없음장점대용량 데이터 처리에 유리관계형 데이터베이스보다 읽기, 쓰기 속도가 빠름데이터 모델링에 유리분산처리에 유리데이터의 일관성을 보장하지 않아도 되고, join 연산이 필요없을 때 사용하면 유리관련 DBMS몽고DBRedis
데이터베이스