본문 바로가기

반응형

msSQL

(69)
[MSSQL] 집합 연산자 UNION (합집합), INTERSECT (교집합), EXCEPT (차집합) 집합 연산자 UNION, INTERSECT, EXCEPT에 대해 알아보자 UNION / UNION ALL 합집합 (A∪B) SELECT * FROM 테이블A UNION SELECT * FROM 테이블B 테이블A와 테이블B의 모든 데이터를 출력한다. 조회하려는 컬럼의 수는 일치해야 한다. UNION은 중복된 행을 하나의 행으로 출력하고, UNION ALL은 중복된 행을 그대로 출력한다. 즉, 중복을 제거하며 결과를 가져오는 UNION보다는 UNION ALL의 속도가 더 빠르다. INTERSECT 교집합 (A∩B) SELECT * FROM 테이블A INTERSECT SELECT * FROM 테이블B 테이블A와 테이블B의 데이터 중 일치하는 데이터만 출력한다. EXCEPT 차집합 (A-B) SELECT * F..
[DB_MSSQL] INDEX 인덱스 빠른 쿼리 실행을 돕는 인덱스에 대해 알아보자 인덱스란? 테이블을 만들고 데이터를 입력/수정/삭제 할 때 데이터의 레코드는 내부적으로 순서 없이 힙 (Heap) 영역에 저장된다.만약 인덱스가 없는 테이블의 데이터를 찾을때는 무조건 레코드의 처음부터 차례대로 다 읽으며 데이터를 찾게된다.이를 테이블 스캔(Table Scan) 또는 풀 스캔(Full Scan)이라고 하며, 처리 성능은 좋지 않다. 인덱스는 데이터를 빠르게 조회할 수 있도록 돕는다.책으로 따지면 목차라고 할 수 있다.어떤 페이지를 찾을 때 첫 페이지부터 한 장씩 살피는 것이 아니라, 목차를 보고 찾으면 빨리 찾을 수 있지 않은가 그것과 같다. 클러스터드 인덱스 (Clustered Index)- 테이블 당 한 개만 생성 가능하다.- 범위 검색과..
[MSSQL] 문자열을 뒤에서 부터 구분자로 잘라보자 (RIGHT, REVERSE, CHARINDEX, PATHINDEX) 문자열 자르기 함수 RIGHT SELECT RIGHT(문자열, 길이) 문자열을 오른쪽에서부터 길이만큼 출력한다. SELECT RIGHT('안녕하세요', 3) -- 하세요 REVERSE SELECT REVERSE(문자열) 문자열을 거꾸로 출력한다. SELECT REVERSE('안녕하세요') -- 요세하녕안 CHARINDEX SELECT CHARINDEX(검색할문자, 문자열, [시작위치]) 문자열에서 특정 문자의 위치를 검색한다. SELECT CHARINDEX('안', '안녕하세요안녕하세요') -- 결과 : 1 SELECT CHARINDEX('안', '안녕하세요안녕하세요', 2) -- 결과 : 6 -- 시작점이 첫번째 '안' 뒤에서 부터이기 때문에, 그 이후의 '안'의 위치가 출력 PATHINDEX SELE..
[DB_MSSQL] 일/주/월/년도/요일 별로 카운트 일별, 주별, 월별, 년도별, 요일별로 카운트를 계산해보자 DATEPART, DATENAME 함수를 이용한다. 일별/주별/월별/년도별/요일별 -- 일 단위로 카운트 SELECT DATEPART(DAY, 날짜), COUNT(*) FROM 테이블명 GROUP BY DATEPART(DAY, 날짜) -- 주 단위로 카운트 SELECT DATEPART(WEEK, 날짜), COUNT(*) FROM 테이블명 GROUP BY DATEPART(WEEK, 날짜) -- 월 단위로 카운트 SELECT DATEPART(MONTH, 날짜), COUNT(*) FROM 테이블명 GROUP BY DATEPART(MONTH, 날짜) -- 년 단위로 카운트 SELECT DATEPART(YEAR, 날짜), COUNT(*) FROM 테이블명..
[DB_MSSQL] 돈 금액 천단위 콤마 찍기 돈 금액에 콤마를 찍어보자 돈 금액을 출력하고자 하는데, 100000 다음과 같이 보여준다면 얼마인지 바로 확인하기가 불편하다.이를 100,000 다음과 같이 콤마를 찍어서 조금 더 보기 편하도록 만들어보자 -- 1단계) MONEY형으로 컨버팅 SELECT CONVERT(MONEY,10000000) AS 'MONEY형' -- 2단계) 콤마를 찍기 위해 VARCHAR형으로 다시 컨버팅 SELECT CONVERT(VARCHAR,CONVERT(MONEY,10000000),1) AS 'VARCHAR형' -- 3단계) 소수점 두자리 (.00)을 제거하길 원하는 경우 SELECT REPLACE(CONVERT(VARCHAR,CONVERT(MONEY,10000000),1), '.00', '') AS '1) 소수점 두자..

반응형