티스토리

초보개발자꽁쥐
검색하기

블로그 홈

초보개발자꽁쥐

ggmouse.tistory.com/m

구독 구독! 😀👍 MSSQL 관련 질문 글은 댓글 혹은 방명록에 작성해주시면 최대한 답변해드리겠습니다.

구독자
20
방명록 방문하기
공지 [MSSQL 기초 공부 연습] SQL⋯ 모두보기
반응형

주요 글 목록

  • [MSSQL] STUFF, REPLACE 문자열 치환 문자열 치환 함수 STUFF, REPLACE에 대해 알아보자 STUFF STUFF('문자열', 시작위치, 크기, '대체문자열') 문자열에서 시작위치와 크기를 지정하여 원하는 문자로 변경한다. 예제. name컬럼 문자열의 2번째 문자부터 n개의 문자를 '*'로 변경해보자 SELECT name , STUFF(name, 2, 1, '*') AS 'Stuff1' , STUFF(name, 2, 2, '*') AS 'Stuff2' , STUFF(name, 2, 3, '*') AS 'Stuff3' , STUFF(name, 2, 4, '*') AS 'Stuff4' FROM table_ggmouse REPLACE REPLACE('문자열', '변경할문자열', '대체문자열') 문자열에서 특정 문자를 원하는 문자로 변경한다... 공감수 1 댓글수 0 2019. 11. 4.
  • [MSSQL] INSERT (데이터 삽입), SELECT INTO (테이블 복사), INSERT INTO SELECT (데이터 복사) INSERT 테이블에 데이터 삽입한다. INSERT INTO 테이블명(칼럼1,칼럼2,칼럼3,...) VALUES(데이터1,데이터2,데이터3,...) INSERT INTO table_ggmouse(name, age) VALUES('bella', 30) INSERT INTO table_ggmouse(name, age) VALUES('zzong', 25) INSERT INTO table_ggmouse(name, age) VALUES('sohee', 28) SELECT * FROM table_ggmouse INSERT INTO SELECT 테이블의 데이터를 대상 테이블에 복사한다. 위에서 설명한 단순 INSERT문은 데이터를 한줄씩 넣는 방식이다. 만일 다른 테이블의 있는 다량의 데이터를 가져와서 한 번에 삽입.. 공감수 4 댓글수 3 2019. 10. 26.
  • [MSSQL] SQL Server 2017 Developer 설치하기 (무료) SQL Server 2017 Developer 설치 비 프로덕션 환경에서 개발 및 테스트 데이터베이스로 사용할 수 있는 무료 버전의 SQL Server 2017 Developer를 설치해보자 1. SQL Server 다운로드 https://www.microsoft.com/ko-kr/sql-server/sql-server-downloads 사이트에 접속하여 파일을 다운로드한다. 2. 설치 유형을 선택한다. 기본을 선택하면 별다른 설정 없이 설치할 수 있다. 3. 사용 조건을 읽어본 후 수락을 클릭한다. 4. SQL Server 설치 위치를 지정한 후 설치 버튼을 클릭한다. 5. SQL Server 2017 Developer Edition이 설치됐다. 하지만 여기서 끝이 아니다. SQL Server 및 데이.. 공감수 4 댓글수 0 2019. 10. 26.
  • [MSSQL] DATEDIFF, DATEADD 날짜 비교, 날짜 계산 DATEDIFF 두 날짜의 차이를 계산하는 함수이다. 즉, 시작 날짜에서 종료 날짜까지의 일 수 차이를 반환한다. SELECT DATEDIFF(날짜형식, 시작날짜, 종료날짜) 1) 두 날짜의 차이 일 수 SELECT DATEDIFF(DAY, '2017-02-13', '2017-03-15') AS '차이 일 수' 2) 두 날짜 비교 DECLARE @Date DATETIME = '2017-02-15' IF DATEDIFF(d, @Date, '2017-02-13') > 0 SELECT '2017-02-13 미만 (미포함)' ELSE IF DATEDIFF(d, @Date, '2017-02-13') 공감수 5 댓글수 0 2019. 10. 25.
  • [MSSQL] date format 날짜 형식 (CONVERT DATETIME) date format 날짜 포맷 CONVERT([포맷(크기)], [날짜값], [변환형식]) 다양한 날짜 표현 SELECT GETDATE() -- 2016-08-29 13:34:42.030 SELECT CONVERT(VARCHAR, GETDATE(), 0) -- 08 29 2016 1:34PM SELECT CONVERT(VARCHAR, GETDATE(), 1) -- 08/29/16 SELECT CONVERT(VARCHAR, GETDATE(), 2) -- 16.08.29 SELECT CONVERT(VARCHAR, GETDATE(), 3) -- 29/08/16 SELECT CONVERT(VARCHAR, GETDATE(), 4) -- 29.08.16 SELECT CONVERT(VARCHAR, GETDATE(),.. 공감수 5 댓글수 0 2019. 10. 25.
  • [MSSQL] CONCAT 문자열 합치기 CONCAT 둘 이상의 문자열 값을 엔드투엔드 방식으로 연결하거나 조인한 결과 문자열을 반환합니다. CONCAT(값1, 값2, 값3, ... 값N) 인수는 2개 이상 254개 이하로 사용 가능하다. 같은 타입의 값 연결 SELECT CONCAT('초보개발자', '꽁쥐') DECLARE @string_value1 VARCHAR(10) = '초보개발자' DECLARE @string_value2 VARCHAR(10) = '꽁쥐' SELECT CONCAT(@string_value1, @string_value2) 다른 타입의 값 연결 DECLARE @string_value1 VARCHAR(50) = '꽁쥐 친구는? ' DECLARE @int_value1 INT = 10 DECLARE @string_value2 V.. 공감수 3 댓글수 0 2019. 10. 25.
  • [MSSQL] XML 데이터를 테이블 형태로 저장 (XML to DB) XML 데이터를 테이블에 입력해보자 70 T9KE211 2017-04-25 18:16:30 71 T9U0600 2017-04-25 18:16:30 위와 같은 XML 데이터를 테이블형태의 데이터로 만들어보자 /* 변수 선언 */ DECLARE @In_Xml VARCHAR(MAX) -- 데이터가 들어있는 XML 스트링 DECLARE @XML_OBJECT XML SET @In_Xml = N' 70 T9KE211 2017-04-25 18:16:30 71 T9U0600 2017-04-25 18:16:30 ' /* XML OBJECT로 컨버트 */ SET @XML_OBJECT = CONVERT(XML, @In_Xml) /* 파싱 */ SELECT x.XmlCol.value('(num/text())[1]', 'INT.. 공감수 5 댓글수 0 2019. 10. 6.
  • [MSSQL] JOIN CASE, JOIN OR 조건에 따라 조인테이블 및 조인조건 변경 조건에 따라 테이블 및 조인 조건을 변경해보자 TABLE1과 TABLE2를 조인하려고 한다. 이때 TABLE1의 COL1을 파라미터값 @Str 값에 따라 TABLE2의 COL1 혹은 COL2로 조인조건을 지정하려고 한다. 1) @Str의 값이 Y일 경우 TABLE1 COL1, TABLE2 COL1 2) @Str의 값이 N일 경우 TABLE1 COL1, TABLE2 COL2 첫번째 방법. JOIN CASE DECLARE @Str CHAR(1) = 'Y' -- 조건 구분값 (Y or N) SELECT * FROM TABLE1 A INNER JOIN TABLE2 B ON A.COL1 = CASE WHEN @Str = 'Y' THEN B.COL1 WHEN @Str = 'N' THEN B.COL2 END 두번째 .. 공감수 9 댓글수 0 2019. 10. 2.
  • [MSSQL] OUTPUT INSERTED, DELETED 데이터 수정 및 삭제 전 백업 OUTPUT INSERTED, OUTPUT DELETED OUTPUT SELECT문과 달리 INSERT, UPDATE, DELETE문은 결과가 리턴되지 않는다. OUTPUT은 INSERT, UPDATE, DELETE 또는 MERGE 문의 영향을 받는 각 행의 정보 또는 각 행을 기반으로 하는 식을 반환 예제. INSERT 결과 데이터 리턴 #TEMP_T 테이블에 데이터를 입력해보자 INSERT INTO #TEMP_T (NAME, SCORE) VALUES('A', 100) 위의 쿼리를 수행하면, (1개 행이 영향을 받음)과 같은 메시지를 출력한다. 하지만, 나는 내가 입력시킨 데이터의 값을 리턴시키고싶다. INSERT INTO #TEMP_T (NAME, SCORE) OUTPUT INSERTED.* VALU.. 공감수 5 댓글수 1 2019. 10. 2.
  • [MSSQL] COUNT(*) COUNT(1), COUNT(컬럼명) 행의 개수 집계함수 중 행의 개수를 세는 COUNT 함수에 대해 알아보자 COUNT(*), COUNT(1), COUNT(컬럼) COUNT(*), COUNT(1) COUNT(*)은 COUNT(1)와 동일하다고 볼 수 있다. 코딩 스타일이 다를뿐 두 개의 성능차이는 없다. COUNT(컬럼) COUNT(*), COUNT(1)은 NULL 값과 상관없이 모든 행 수를 카운트한다. 하지만 COUNT(컬럼)은 해당 컬럼의 값이 NULL인 행은 COUNT에 포함되지 않는다. 예제 COUNT(COL1)과 COUNT(*)의 결과를 비교해보자 WITH TABLE1 (COL1) AS ( SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT NULL UNION ALL SELECT 3 UNION ALL SELEC.. 공감수 11 댓글수 1 2019. 10. 1.
  • [MSSQL] 세로 데이터 가로로 출력 (데이터 한줄로 출력) STUFF, FOR XML PATH 여러 로우의 데이터를 한개의 로우 데이터로 출력해보자 (세로 데이터 가로 한줄로 출력) STUFF , FOR XML PATH SELECT STUFF((SELECT ',' + 컬럼명 FROM A FOR XML PATH ('')), 1, 1, '') AS '가로출력' FROM 테이블명 예제 NAME 손꽁쥐 윤선생 황박사 위의 데이터를 아래와 같이 한줄로 출력하고자 한다 NAME 손꽁쥐, 윤선생, 황박사 WITH TABLE_A (NAME) AS ( SELECT '손꽁쥐' UNION ALL SELECT '윤선생' UNION ALL SELECT '황박사' ) SELECT TOP 1 STUFF((SELECT ',' + NAME FROM TABLE_A FOR XML PATH('')), 1, 1, '') AS '결과'.. 공감수 11 댓글수 0 2019. 9. 29.
  • [MSSQL] COUNT CASE (조건 카운트) COUNT DISTINCT (중복제거 카운트) COUNT CASE, COUNT DISTINCT 조건에 따른 카운트 및 중복을 제거한 카운트를 세보자 COUNT CASE (조건 카운트) 특정 조건에 해당하는 행의 카운트를 세보자 SELECT COUNT(CASE WHEN 조건 THEN 1 END) FROM 테이블 조건에 일치할 경우 카운트하고, 일치하지 않을 경우 카운트하지 않는다. 예제. 반별 학생 수 카운트 반을 기준으로 반별로 학생의 수를 카운트해보자 WITH TABLE1 (반, 이름) AS ( SELECT 1, '꽁쥐' UNION ALL SELECT 1, '박사' UNION ALL SELECT 2, '찌우' UNION ALL SELECT 2, '소태' UNION ALL SELECT 2, '소희' UNION ALL SELECT 3, '현정' UNI.. 공감수 21 댓글수 2 2019. 9. 29.
  • [MSSQL] CONVERT, CAST 형변환 함수 형 변환 함수 CONVERT와 CAST에 대해 알아보자 CAST CAST(유효한식 AS 데이터형식(길이)) CAST( expression AS data_type( length ) ) SELECT 29.8 -- 결과 : 29.8 SELECT CAST(29.8 AS INT) -- 결과 : 29 29.8을 INT 형으로 변환하면 정수형인 29이 결과로 출력된다. SELECT 3 + 'age' -- Error 발생 SELECT CAST(3 AS VARCHAR) + 'age' -- 결과 : 3age 1. 첫 번째 INT 타입의 3과 VARCHAR 타입의 'age'를 합치려 하니 Conversion failed when converting the varchar value 'age' to data type int. .. 공감수 4 댓글수 0 2019. 9. 29.
  • [MSSQL] ROUND, CEILING, FLOOR (소수점 반올림, 올림, 버림) ROUND (반올림) ROUND(값, 반올림 자릿수, [반올림 여부]) 구하려는 소수점 자리수의 한 자리 아래의 숫자를 반올림 혹은 버림한다. 반올림 여부의 값을 0 또는 생략할 경우 반올림, 음수값일 경우 버림 먼저 반올림의 의미를 알아보자. 반올림이란 구하려는 자리의 한 자리 아래 숫자가 0, 1, 2, 3, 4 일 경우 버림 5, 6, 7, 8, 9 일 경우 올리는 방법을 뜻한다. 그럼 예제를 살펴보자 SELECT ROUND(10.349, 1) -- 10.300 SELECT ROUND(10.349, 2) -- 10.350 SELECT ROUND(10.349, 2, 0) -- 10.350 SELECT ROUND(10.349, 2, -1) -- 10.340 설명> 1) 반올림 자릿수가 1 즉, 구하려는.. 공감수 8 댓글수 0 2019. 9. 29.
  • [MSSQL] 재귀 쿼리, 트리 구조 (CTE 재귀) 재귀 쿼리 CTE를 이용하여 재귀 쿼리를 작성해보자 WITH TEMP AS ( SELECT 컬럼 FROM 테이블명 UNION ALL SELECT 컬럼 FROM 테이블명 INNER JOIN TEMP ON 테이블명.컬럼 = TEMP.컬럼 ) 예제 1 재귀 쿼리를 통해 1부터 2씩 증가된 숫자를 출력 (200 이하) ;WITH TA AS ( SELECT 1 NUM UNION ALL SELECT NUM + 2 FROM TA WHERE NUM + 2 공감수 8 댓글수 0 2019. 9. 29.
  • [MSSQL] REPLICATE (오라클 LPAD) : 000부터 1씩 증가하는 3자리 숫자 001, 002, 003... 숫자 앞을 0으로 채워서 3자리의 숫자를 표현해보자 3자리의 숫자 ('001, 0002, 003..')를 표현하기 위해 활용할 함수 REPLICATE에 대해 알아보자 REPLICATE 함수는 문자를 지정된 횟수만큼 반복하여 표현해주는 함수다. REPLICATE('0', 2)는 '0'을 2번 표현 -> '00' REPLCATE('A', 3)는 'A'를 3번 표현 -> 'AAA' 자 그럼 2라는 숫자 앞에 0을 2개 채워서 '002'를 표현해보자 DECLARE @cnt INT = 2 SELECT REPLICATE('0', 3-LEN(@cnt)) + CAST(@cnt AS CHAR) -- 결과 : 002 본격적으로 001부터 999까지 1씩 증가하는 3자리 숫자를 만들어보자. 반복문(WHILE)을 이용하도록 .. 공감수 2 댓글수 0 2019. 9. 26.
  • [MSSQL] GROUP BY 없이 HAVING이 단독으로 오는 경우 GROUP BY 없이 단독 HAVING이 오는 경우 GROUP BY와 HAVING은 짝꿍이다? HAVING이 주로 GROUP BY절 뒤에 오는 것은 맞지만, 그렇지 않은 경우도 반드시 존재한다. 테이블 전체가 한개의 그룹이 되는 경우가 그렇다. 예를 들면 아래와 같은 경우가 GROUP BY 없이 단독 HAVING이 존재하는 경우다. SELECT COUNT(*) FROM 테이블 HAVING COUNT(*) > 1 예제 다음과 같은 데이터가 있다. 아이템의 CNT값들 중 MAX 값이 100이 넘을 경우에만 CNT의 총 합을 반환하고, 아닐 경우 값이 반환하지 않도록 하고싶다. 쿼리문을 작성해보자 SELECT SUM(CNT) AS result FROM sql_test_a; HAVING MAX(CNT) > 10.. 공감수 2 댓글수 0 2019. 7. 12.
  • [MSSQL] 문자열에서 특정 문자 개수 조회 문자열에서 특정 문자의 개수를 조회 ('MSSQL' 문자열에서 'S' 문자는 몇개가 존재 하는가? -> 2개) SELECT LEN(문자열)-LEN(REPLACE(문자열,찾고자하는문자,'')) 문자열 전체 길이에서 찾고자하는 문자를 제외한 나머지 문자의 길이를 빼준다. 예제 SELECT LEN('MSSQL')-LEN(REPLACE('MSSQL','S','')) -- 결과:2 LEN('MSSQL') -> 5 LEN(REPLICATE('MSSQL','S','')) -> 3 : MSSQL에서 S를 공백으로 치환하면 MQL이 남고 그 길이는 3이 된다. [MSSQL] REPLICATE (오라클 LPAD) : 000부터 1씩 증가하는 3자리 숫자 001, 002, 003... 공감수 2 댓글수 0 2019. 7. 12.
  • [MSSQL] 동적 PIVOT, 동적 UNPIVOT (dynamic pivot/unpivot) [MSSQL] PIVOT, UNPIVOT (행렬 변환) PIVOT / UNPIVOT PIVOT 과 UNPIVOT -- PIVOT SELECT 컬럼명 FROM 테이블명 PIVOT([집계 함수]([집계 컬럼명]) FOR [대상 컬럼명] IN ([컬럼이 될 값])) AS 피벗테이블명 -- UNPIVOT SELECT 컬럼명 FROM 테이블명 UNPIVOT([집계될 데이터의 컬럼명] FOR [UNPIVOT할 컬럼 데이터의 컬럼명] IN ([UNPIVOT할 컬럼명])) AS 언피벗테이블명 일반적으로 PIVOT과 UNPIVOT의 대상 컬럼과 컬럼이 될 값을 지정해줘야 한다. 그런데 만약 컬럼명이나 행의 값들이 동적이라면? 이를 고려하여 동적 PIVOT / UNPIVOT 쿼리를 작성해보자 동적 PIVOT DECLARE.. 공감수 1 댓글수 1 2019. 6. 14.
  • [MSSQL] TOP / TOP WITH TIES (상위 N개의 데이터 출력) TOP TOP은 상위 N개의 데이터를 출력한다 SELECT TOP 1 item, cnt FROM sql_test_a ORDER BY item DESC, cnt DESC 이렇게 TOP 1은 상위 데이터 1개만 출력된다. TOP WITH TIES TOP 과 동일하게 상위 N개의 데이터를 조회한다. 하지만 동일한 데이터가 있을 경우 함께 출력된다. TOP WITH TIES를 사용하기 위해서는 ORDER BY 절이 반드시 함께 와야 한다. (TOP의 경우 없어도 가능) 동일한 데이터는 ORDER BY절 뒤의 오는 컬럼이 기준이 된다. SELECT TOP 1 WITH TIES item, cnt FROM sql_test_a ORDER BY item DESC, cnt DESC 위의 TOP 예제에서와 다르게 데이터가 .. 공감수 11 댓글수 0 2019. 5. 11.
  • [MSSQL] ROLLUP / CUBE / GROUPING SETS 소계 합계 ROLLUP - ROLLUP 함수는 소그룹 간의 소계를 계산한다. - ROLLUP은 GROUP BY의 확장 형태로 사용하기 쉬운데, GROUP BY에 있는 항목들을 오른쪽에서 왼쪽순으로 그룹으로 묶어 집계를 낸다. - GROUP BY a, b, c, d 로 묶은 뒤 ROLLUP 을 적용시켜 주면 -> (a, b, c, d) / (a, b, c) / (a, b) / (a) / () 이런식으로 그룹을 만들어가며 집계를 낸다. 예제 1단계. GROUP BY로 묶은 뒤 SUM SELECT item, SUM(cost) sum FROM sql_test_a GROUP BY item 3단계. ROLLUP 적용 -- 방법1. SELECT item, SUM(cost) sum FROM sql_test_a GROUP BY i.. 공감수 27 댓글수 5 2019. 5. 11.
  • [MSSQL] SQL Server APPLY 연산자 (테이블 반환 함수와 테이블의 조인) APPLY JOIN 및 서브쿼리, 커서를 대체할 수 있는 APPLY에 대해 알아보자 APPLY 연산자를 사용하면 쿼리의 외부 테이블 식에서 반환한 각 행에 대해 테이블 반환함수를 호출할 수 있다. APPLY 연산자에는 CROSS APPLY와 OUTER APPLY가 있다. CROSS APPLY 테이블 반환 함수로부터 결과 집합을 생성하는 외부 테이블의 행만 반환한다. OUTER APPLY 테이블 반환 함수로부터 결과 집합을 생성하는 행과 그렇지 않은 행을 모두 반환한다. 예제 다음의 값을 갖고 있는 테이블 TABLE_A가 있다. ID NAME YYMMDD 1 손꽁쥐 20001020 2 우바보 19550929 3 윤박사 19840303 그리고 FN_GET_INFO라는 테이블 반환함수가 있다. 해당 함수는 인.. 공감수 5 댓글수 0 2019. 4. 14.
  • [MSSQL] SQL Server FK (외래키) 설정 외래키 Foreign Key 외래키 생성 -- 테이블 생성 시 FK 설정 CREATE TABLE 테이블명 ( 컬럼 속성 , CONSTRAINT FK명 FOREIGN KEY (FK설정할컬럼) REFERENCES 참조할 테이블(참조할 테이블의 컬럼) 옵션 ) -- 기존 테이블 FK 설정 ALTER TABLE 테이블명 ADD CONSTRAINT FK명 FOREIGN KEY (FK설정할 컬럼) REFERENCES 참조할 테이블(참조할 테이블의 컬럼) 옵션 옵션 -- Master : 참조 대상 테이블 / Child : FK 생성 테이블 -- CASCADE : Master 삭제 시 Child 같이 삭제 CONSTRAINT FK_TEMP2_FID FOREIGN KEY (FID) REFERENCES TEMP(ID) O.. 공감수 1 댓글수 0 2019. 4. 4.
  • MSSQL 간단 정리 요약 사전 1. 데이타검색 - SELECT, ALIASES, TOP, DISTINCT, WHERE, ORDER BY2. 조건 연산자 - 부등호, AND/OR/NOT, NULL, BETWEEN, IN, LIKE, ALL/ANY/SOME3. 집합 연산자 - UNION, INTERSECT, EXCEPT4. 그룹- GROUP BY, HAVING, PARTITION BY, ROLLUP/CUBE, PIVOT/UNPIVOT5. 순위 함수 - ROW_NUMBER, RANK, DENSE_RANK6. NULL 함수 - NULLIF, ISNULL, COALESCE7. 집계 함수 - MAX/MIN, COUNT/AVG/SUM, COMPUTE8. 문자열 함수 - ASCII/CHAR, REPLACE/STUFF/UPPER/LOWER/REVER.. 공감수 13 댓글수 3 2019. 1. 7.
  • [MSSQL] 일별 누적 접속자 통계 구하기 (누적 합계) 일별 누적 접속자 통계 구하기 문제 사용자 접속기록을 관리하는 테이블이 있다. 사용자가 접속할 때 마다 기록이 되기 때문에 동일 사용자가 하루에 여러번 기록될 수 있다. 이 기록을 토대로 일별 접속 현황 통계자료를 작성해 보려고 한다. 접속일자를 기준으로 다음 4가지 통계를 한 화면에 보여주는 쿼리를 작성해보자 1. 접속건수 : 접속 기록을 일별로 카운트한다. 2. 접속자수 : 동일 사용자는 한 번만 카운트한다. 3. 누적접속건수 : 현재일까지의 누적 건수를 카운트한다. 4. 누적접속자수 : 현재일까지의 누적 접속자수를 카운트한다. 원본 데이터 CREATE TABLE t2 (dt VARCHAR(8), id INT) INSERT INTO t2 SELECT '20150801', 1 id UNION ALL S.. 공감수 3 댓글수 0 2018. 10. 31.
  • [MSSQL] WHERE CASE WHEN 조건절에 조건문 WHERE 절에서 CASE WHEN을 사용해보자 예제1. 과목이 Math일 경우에만 점수가 100점 그 외의 경우에는 0점인 ROW 조회 SELECT * FROM TBL_TEST WHERE Score = (CASE WHEN @in_Subject = 'Math' THEN 100 ELSE 0 END) 위의 쿼리는 아래와 같이 AND OR 조건으로 바꿔 사용할 수도 있다. SELECT * FROM TBL_TEST WHERE (@in_Subject = 'Math' AND Score = 100) OR (@in_Subject 'Math' AND Score = 0) 예제2. 과목이 Math일 경우에만 점수가 100점 그 외의 경우에는 전체 ROW 조회 SELECT * FROM TBL_TEST WHERE (CASE W.. 공감수 13 댓글수 0 2018. 7. 5.
  • [MSSQL] DISTINCT, GROUP BY 중복제거 DISTINCT 와 GROUP BY 를 비교해보자 DISTINCT 유니크한 데이터를 조회하는 경우 즉, 중복된 결과를 제거하고자 할 때 사용한다. GROUP BY 데이터를 그룹핑해서 조회하는 경우 비교 SELECT DISTINCT Col1 FROM Table_A SELECT Col1 FROM Table_A GROUP BY Col1 위의 쿼리는 중복을 제거하기 위해 작성된 쿼리다. 동일하게 처리하는 듯 하지만 두 쿼리는 차이가 있다. DISTINCT는 단순 그룹핑 작업한 수행하지만, GROUP BY 는 그룹핑 작업 + 정렬 작업을 동반한다. 따라서, 정렬 작업이 필요없을 경우 DISTINCT 를 사용하는 것이 성능상 좋다. [MSSQL] GROUP BY 없이 HAVING이 단독으로 오는 경우 [MSSQL].. 공감수 1 댓글수 0 2018. 5. 9.
  • [MSSQL] 0으로 나누기 오류가 발생했습니다. 0으로 나누기 오류가 발생했습니다. 해당 쿼리 상단에 SET 선언 SET ANSI_WARNINGS OFF SET ARITHIGNORE ON SET ARITHABORT OFF SET ANSI_WARNINGS ON/OFF 값을 ON으로 설정하면 0으로 나누기 및 산술 오버플로 오류로 인해 명령이 취소되고 오류 메세지가 발생한다. 값을 OFF로 설정하면 0으로 나누기 및 산술오버플로 오류로 인해 NULL값이 반환된다. SET ARITHIGNORE ON/OFF 오류 메세지가 리턴되는 상황을 제어한다. SET ARITHABORT ON/OFF 값을 ON으로 설정하면 0으로 나누기 및 산술 오버플로 오류로 인해 명령이 취소되고 트랜잭션에서 해당 오류가 발생하면 트랜잭션이 롤백된다. (하지만 INSERT, UPDATE.. 공감수 0 댓글수 0 2018. 5. 8.
  • [MSSQL] DB LOCK 확인 및 해제 DB가 갑자기 느려질 경우 LOCK을 확인해보자 LOCK 걸린 SPID 확인 EXEC sp_lock SPID : 잠금을 요청하는 프로세스의 세션 ID DBID : 데이터베이스의 식별번호 OBID : 개체의 식별번호 INDLD : 인덱스의 식별번호 TYPE : 잠금유형 RESOURCE : 리소스 식별값 MODE : 잠금 STATUS : 잠금요청상태 MODE S : 공유 잠금 U : 업데이트 잠금 X : 독점 잠금 IS : 의도 공유 IU : 의도 업데이트 IX : 독점 의도 BU : 대량 업데이트 수행된 쿼리 정보 확인 DBCC inputbuffer (spid값) SPID 관련 정보 확인 EXEC sp_who (spid값) 해당 프로세스 종료 kill (spid값) 공감수 2 댓글수 0 2018. 2. 10.
  • [MSSQL] SEQUENCE 시퀀스 시퀀스를 이용해서 별도의 유니크한 번호를 생성해보자 시퀀스 생성 CREATE SEQUENCE [schema_name . ] sequence_name [ AS [ built_in_integer_type | user-defined_integer_type ] ] [ START WITH ] [ INCREMENT BY ] [ { MINVALUE [ ] } | { NO MINVALUE } ] [ { MAXVALUE [ ] } | { NO MAXVALUE } ] [ CYCLE | { NO CYCLE } ] [ { CACHE [ ] } | { NO CACHE } ] [ ; ] 예제 다음과 같은 정수형 시퀀스를 생성해보자 CREATE SEQUENCE [dbo].[SEQ_TEST_NO] AS [int] -- 정수형 STA.. 공감수 1 댓글수 0 2017. 12. 7.
    반응형
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.