coding/mssql 31

sql 테이블 명명 규칙

https://sabarada.tistory.com/49 database 이름 짓기 안녕하세요. Class명, 변수명, REST API의 명 등 이름을 짓는 일은 개발에서 가장어려운 부분중 하나라는 점은 다들 공감하실 것이라 생각합니다. 프로젝트에 참여하는 모두가 공감대를 가질 수 있 sabarada.tistory.com 그런데 우리 회사에서 수석님은 카멜 케이스를 쓰라고 하심.. 그러니 회사서는 그렇게 쓰자!..

coding/mssql 2022.04.22

DB 성능 올리기

요즘 많은 분들이 SQL을 통해서 데이터를 조회하고 추출합니다. 예전에는 DBA 분들이 주로 SQL을 통해서 데이터를 조회하고 추출하였습니다. 하지만 이제는 데이터 분석가, 사업, 기획, 개발 많은 분야에서 다양한 분들이 SQL을 통해서 데이터를 조회 및 추출을 합니다. 이렇게 많은 분들이 사용하다 보니 비전문가가 많아서 성능을 고려하지 못하고 SQL을 쓰는 사례가 많아졌습니다. 이는 자칫 실서버 또는 분석용 서버에 무리를 주는 경우가 있어서 이러한 부분을 조금이라도 줄이기 위해서 글을 작성합니다. 이 글의 경우 mysql , google big query에서 테스트하였습니다. (2020 기준으로 회사에서 2개를 사용) 첫 번째, WHERE절의 좌변을 가공하지 마세요. 이게 무슨 말일까요? SQL의 기본..

coding/mssql 2022.04.22

@@IDENTITY

@@IDENTITY 사용법 DB 내에서 날짜가 저장될 때 3 7 0 date 날짜 끝자리가 이렇게 끝남. (sql 처리 속도가 002 걸린다고 가정) DB에 입력된 시간의 끝자리가 .004, .005일 경우 *web은 많은 사람이 동시접속하기에 그런 경우가 많음 (작은 사이트라해도) 004+002 = 006 005+002 = 007 하지만 db에 6으로 끝나는 자리수는 없기에 3이 들어갈 걸..? 그래서 @@IDENTITY 써야 함 @@Identity는 해당 id값을 계속 잡고 있음 마지막으로 삽입된 ID 값을 반환하는 시스템 함수입니다. INSERT, SELECT INTO 또는 대량 복사 문이 완료된 후 @@IDENTITY에는 문에 의해 생성된 마지막 ID 값이 들어 있습니다. 문이 ID 열이 있는 테..

coding/mssql 2022.04.15

프로시져(Procedure)란?

* 프로시져(Procedure)란? - 특정 작업을 수행하는, 이름이 있는 PL/SQL BLOCK 이다. PL/SQL BLOCK ? PL/SQL (Procedural Language extension to SQL) - PL/SQL은 상용 관계형 데이터베이스 시스템인 오라클 DBMS에서 SQL 언어를 확장하기 위해 사용하는 *컴퓨터 프로그래밍 언어 중 하나* => Oracle의 표준 데이터 엑세스 언어 => 프로시저 생성자를 SQL과 완벽하게 통합 주로 자료 내부에서 SQL 명령문만으로 처리하기에는 복잡한 자료의 저장이나!! 프로시저와 트리거 등을 작성하는 데 쓰인다. 매개 변수를 받을 수 있고, 반복적으로 사용 할 수 있는 BLOCK 이다. 보통 연속 실행 또는 구현이 복잡한 **트랜잭션을 수행하는 PL..

coding/mssql 2022.03.23

mssql over() 만 사용할 때..

over()는 원래 테이블 분할 함수인 partition과 함께 사용.... PARTITION 함수 그룹 내 순위 및 그룹 별 집계를 구할 때 유용하게 사용할 수 있다. SELECT 순위함수() OVER(PARTITION BY 컬럼명 ORDER BY 컬럼명) FROM 테이블명 SELECT 집계함수(컬럼명) OVER (PARTITION BY 컬럼명) FROM 테이블명 순위함수 - ROW_NUMBER - RANK - DENSE_RANK [MSSQL] ROW_NUMBER, RANK, DENSE_RANK 순위함수 집계함수 - SUM(합계) - AVG(평균) - MAX, MIN(최대, 최소) - COUNT(개수) 예제1. 학생들의 등수 매기기 원본 데이터 다음과 같은 데이터가 있을때, 이 학생들의 등수를 매기려고..

coding/mssql 2022.03.10

mssql SQL 작동순서

SQL의 문법 순서와 실행 순서는 서로 다릅니다. 문법 작성 순서와 실행 작동 순서를 알아보겠습니다. 문법 작성 순서 ① SELECT 컬럼명 ② FROM 테이블명 ③ WHERE 조건식 ④ GROUP BY 컬럼명 ⑤ HAVING 조건식 ⑥ ORDER BY 칼럼명 실행 작동 순서 ① FROM ② ON ③ JOIN ④ WHERE ⑤ GROUP BY ⑥ CUBE | ROLLUP ⑦ HAVING ⑧ SELECT ⑨ DISTINCT ⑩ ORDER BY ⑪ TOP 실행 작동순서를 자주사용하는 파란색글씨로된 쿼리문만 설명 하면 1. 조회 테이블 확인(FROM) 2. 데이터 추출 조건 확인(WHERE) 3. 컬럼 그룹화(GROUP BY) 4. 그룹화 조건(HAVING) 5. 데이터 추출(SELECT) 6. 데이터 순서 ..

coding/mssql 2022.03.10

mssql CTE 이해 (우선 재귀제외)

CTE(Common Table Expressions) 중간 과정의 결과셋을 여러 번 사용할 때 임시 테이블이나 뷰를 사용합니다. 둘 다 임시적이지만 DB에 실제 저장되는 객체여서 여러모로 번거로우며 속도도 느립니다. => CTE는 다름. ***CTE는 쿼리 실행 중에 메모리에 존재하는 테이블입니다. 쿼리 내부에서 임시 테이블을 정의하는 일종의 매크로 기능이며, 예비 동작 없이 쿼리문 내부에서 모든 것을 일괄 처리할 수 있어 간편합니다. ANSI SQL99의 표준 기능이며 모든 DBMS가 지원하여 호환성이 높습니다. 1. CTE 문법 WITH 테이블명(필드목록) AS (쿼리문) CTE 사용 WITH 구문으로 쿼리문에 대해 이름을 붙여 생성하며 필드 목록 생략시 내부 쿼리의 필드명을 사용합니다. (나는 필드..

coding/mssql 2022.03.10

Mssql Exec, sp_executesql 사용 및 차이

예전 부터 "Dynamic Query는 가급적이면 사용하지 말아라! 되도록이면 Stored Procedure을 사용해라"이런 문구를 많이들 보았을 것이다. 이는 Dynamic Query는 실행시킬때마다 실행플랜이 캐쉬에 올라가기 때문이다. 물론 Stored Procedure는 한번 실행할때 플랜이 캐쉬되고 그 캐쉬를 제 활용 한다. 언제까지? Stored procedure의 내용이 수정되기 전 또는 인덱스 통계가 갱신되기 전까지.. 우리는 Dynamic Query를 실행시킬때 exec()또는 sp_executesql을 사용한다. 그럼 exec()하고 sp_executesql은 어떻게 다른가? EXECUTE(Transact-SQL) Transact-SQL 일괄 처리 내에서 또는 시스템 저장 프로시저, 사용..

coding/mssql 2022.02.22

MSSQL 날짜 변환 (DATETIME CONVERT)

- 기준날짜 ​ 2000년 01월 02일 13시 14분 15.678초 기준 날짜 형변환 ​ - MSSQL 날짜 변환표 (기준날짜를 대상으로 CONVERT 실행하여 날짜 형변환) 번호 쿼리 결과 코드 0 CONVERT(CHAR(19), DATETIME, 0) 01 02 2000 1:14PM MM DD YYYY H:MM 1 CONVERT(CHAR(10), DATETIME, 1) 01/02/2000 MM/DD/YYYY 2 CONVERT(CHAR(8), DATETIME, 2) 00.01.02 YY.MM.DD 3 CONVERT(CHAR(8), DATETIME, 3) 02/01/00 DD/MM/YY 4 CONVERT(CHAR(8), DATETIME, 4) 02.01.00 DD.MM.YY 5 CONVERT(CHAR(..

coding/mssql 2022.02.22