프로그래밍

    파이썬 기본문법

    파이썬을 배우는데 강의나 책들이 대부분 비기너를 기준으로 작성되어 있다. 나처럼 이미 개발을 하다가 파이썬을 새로 배울때 필요한 기본 문법만 정리해봤다. 1. 파이썬은 대괄호({, })를 쓰지 않는다. import sys for i in range(1, 10): print(i) 대괄호 대신 탭(Tab)을 이용하여 문단을 구분한다. 그래서 파이썬에서는 탭 들여쓰기가 매우 중요하다. 2. 조건문이나 반복문을 쓸 때 콜론(:)을 사용한다. for i in range(1, 10): print(i) if i % 2 == 0: print('짝수') 괄호도 쓰지 않는다. 대신 끝에 콜론을 붙여준다. 3. 변수 선언 시 자료형을 명시하지 않는다. cnt = 0 #정수형 변수 cnt cntStr = '0' #문자열 변수..

    MS-SQL 올림, 반올림, 내림 쿼리

    간단하지만 자주 필요한 올림, 반올림, 내림하는 방법 --ROUND(실수, 반올림 자릿수) : 반올림 or 절삭 SELECT ROUND(1234.5678, 2)--결과 : 1234.57 SELECT ROUND(1234.5678, -2)--결과 : 1200 --CEILING(실수) : 올림 SELECT CEILING(123.1) --결과 : 124 SELECT CEILING(-123.1) --결과 : -123 --FLOOR(실수) : 내림 SELECT FLOOR(123.1) --결과 : 123 SELECT FLOOR(-123.1) --결과 : -124

    통계를 이용한 인덱스 추천

    통계를 이용한 인덱스 추천

    보통 메이저 데이터베이스들은 통계 기능을 지원한다. 새로운 프로그램만 개발하는 개발팀의 경우 필요성을 못느껴서 잘 모를수가 있는데 유지보수팀에서 일하다보면 표준에 맞지않는 테이블도 많고 (개발 당시 필요에 의해 만들었으나 문서나 인수인계가 안된 경우) 시스템 전체코드를 분석할 시간적 여유도 없는 경우가 많다. 그럴경우 데이터베이스에 기록된 통계 정보를 활용하여 많이 조회되는 테이블 및 컬럼을 찾아서 인덱스를 추천해 주는 쿼리를 만들어 봤다. 물론 이걸 걸어서 더 느려지는 경우....도 있는데(기존 인덱스를 타는게 빠른데 새로 만든 인덱스를 탄다거나) 그 경우는 뭐.. 인덱스 강제지정을 해주는 수 밖에 없다. 주의 사항. 내가 알기론 MS-SQL은 SQL-Server 서비스 재시작 시 초기화되는걸로 알고있..

    0 나누기 오류 안나게하기

    0 나누기 오류 안나게하기

    물론 0으로 나눌 상황을 안만드는게 제일 좋지만 내가 시스템 전체를 만드는 것도아니고, 데이터는 다른곳에서 넣었는데 내가 계산해야 하는경우도 많다. 데이터를 모두 검증할수도 없고. 그럴때 다음 명령어를 쓰면 0 나누기 발생 시 NULL을 반환한다. SET ANSI_WARNINGS OFF SET ARITHIGNORE ON SET ARITHABORT OFF 프로시저나 함수를 만들때 상단에 선언해두면 해당 세션 전체에 적용되서 편하다. 위 설정을 해주고 다음처럼 처리하면 된다. SELECT ISNULL(10 / 0, 0) --이렇게 하면 결과값이 0이 된다.

    데이터베이스 용량 확인 방법

    데이터베이스 용량 확인 방법

    서버에 원격이나 직접 접근할 수 있다면 그냥 mdf, ldf 파일을 보면 된다. 근데 쿼리밖에 쓸수 없을때 사용하면 된다. --DB 용량 확인 SP_HELPDB '데이터베이스이름' --테이블 별 용량 확인 SELECT CONVERT(NVARCHAR(30), MIN(O.NAME)) AS [테이블명] , CAST(LTRIM(STR(SUM(CAST(RESERVED AS BIGINT)) * 8192 / 1024, 15, 0)) AS BIGINT) AS [용량(kb)] FROM SYSINDEXES AS I INNER JOIN SYSOBJECTS AS O ON O.ID = I.ID WHERE I.INDID IN (0, 1, 255) AND O.XTYPE = 'U' GROUP BY I.ID ORDER BY [용량(k..

    SELECT만 하는데 자꾸 LOCK이 걸리는 경우

    SELECT만 하는데 자꾸 LOCK이 걸리는 경우

    나는 단순히 SELECT만 하는데 자꾸 다른데서 테이블을 잠그고 있어서 SELECT가 느린경우가 있다. 그래서 데이터 무결성이 크게 중요하지 않은 자료를 보여주는 거라면(금융이나 보안계열 아니면 괜찮지않을까?) WITH NOLOCK 키워드를 많이 사용한다. SELECT * FROM CUST AS A (NOLOCK) LEFT JOIN SELLING AS B (NOLOCK) ON A.CUSTID = B.CUSTID 그런데 이게 모든 테이블마다 NOLOCK을 써주는게 보통일이 아니다. 프로시저나 한 섹션 전체에서 NOLOCK을 걸어도 상관없다면 다음 명령을 상단에 써주자. SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 트랜잭션 레벨과 테이블 잠금에 대해서 더 자세히 알..