레이블이 MSSQL인 게시물을 표시합니다. 모든 게시물 표시
레이블이 MSSQL인 게시물을 표시합니다. 모든 게시물 표시

2022년 1월 17일 월요일

MS-SQL date-format

번호 쿼리 결과 코드 형식
0 CONVERT(CHAR(19),GETDATE(),0) Jun 7 2018 4:27PM mon dd yyyy hh:miAM 기본값
1 CONVERT(CHAR(8),GETDATE(),1) 2006-07-18 mm/dd/yy 미국
2 CONVERT(CHAR(8),GETDATE(),2) 18.06.07 yy/mm/dd ANSI
3 CONVERT(CHAR(8),GETDATE(),3) 2007-06-18 dd/mm/yy 영국/프랑스
4 CONVERT(CHAR(8),GETDATE(),4) 07.06.18 dd.mm.yy 독일
5 CONVERT(CHAR(8),GETDATE(),5) 2007-06-18 dd-mm-yy 이탈리아
6 CONVERT(CHAR(9),GETDATE(),6) 07-Jun-18 dd mom yy -
7 CONVERT(CHAR(10),GETDATE(),7) 07-Jun-18 mon dd, yy -
8 CONVERT(CHAR(8),GETDATE(),8) 09:10:50 hh:mi:ss -
9 CONVERT(CHAR(26),GETDATE(),9) Jun 7 2018 9:10:50:937AM mon dd yyyy hh:mi:ss:mmmAM 기본값
10 CONVERT(CHAR(8),GETDATE(),10) 2006-07-18 mm-dd-yy 미국
11 CONVERT(CHAR(8),GETDATE(),11) 2018-06-07 yy/mm/dd 일본
12 CONVERT(CHAR(6),GETDATE(),12) 180607 yymmdd ISO
13 CONVERT(CHAR(24),GETDATE(),13) 07 Jun 2018 09:10:50:937 dd mon yyyy hh:mi:ss:mmm 유럽기본값
14 CONVERT(CHAR(12),GETDATE(),14) 09:10:50:937 hh:mi:ss:mmm -
20 CONVERT(CHAR(19),GETDATE(),20) 2018-06-07 10:16 yyyy-mm-dd hh:mi:ss ODBC 표준
21 CONVERT(CHAR(23),GETDATE(),21) 16:27.4 yyyy-mm-dd hh:mi:ss.mmm ODBC 표준
22 CONVERT(CHAR(20),GETDATE(),22) 2018-06-07 10:16 yyyy-mm-dd hh:mi:ss AM -
23 CONVERT(CHAR(10),GETDATE(),23) 2018-06-07 yyyy-mm-dd -
24 CONVERT(CHAR(8),GETDATE(),24) 10:16:27 hh:mi:ss -
25 CONVERT(CHAR(23),GETDATE(),25) 16:27.4 yyyy-mm-dd hh:mi:ss.mmm -
100 CONVERT(CHAR(19),GETDATE(),100) Jun 7 2018 4:27PM mon dd yyyy hh:miAM 기본값
101 CONVERT(CHAR(10),GETDATE(),101) 06/07/2018 mm/dd/yyyy 미국
102 CONVERT(CHAR(10),GETDATE(),102) 2018.06.07 yyyy/mm/dd ANSI
103 CONVERT(CHAR(10),GETDATE(),103) 07/06/2018 dd/mm/yyyy 영국/프랑스
104 CONVERT(CHAR(10),GETDATE(),104) 07.06.2018 dd.mm.yyyy 독일
105 CONVERT(CHAR(10),GETDATE(),105) 07-06-2018 dd-mm-yyyy 이탈리아
106 CONVERT(CHAR(11),GETDATE(),106) 07-Jun-18 dd mom yyyy -
107 CONVERT(CHAR(12),GETDATE(),107) 07-Jun-18 mon dd, yyyy -
108 CONVERT(CHAR(8),GETDATE(),108) 09:10:50 hh:mi:ss -
109 CONVERT(CHAR(26),GETDATE(),109) Jun 7 2018 9:10:50:937AM mon dd yyyy hh:mi:ss:mmmAM 기본값
110 CONVERT(CHAR(10),GETDATE(),110) 06-07-2018 mm-dd-yyyy 미국
111 CONVERT(CHAR(10),GETDATE(),111) 2018-06-07 yyyy/mm/dd 일본
112 CONVERT(CHAR(8),GETDATE(),112) 20180607 yyyymmdd ISO
113 CONVERT(CHAR(24),GETDATE(),113) 07 Jun 2018 09:10:50:937 dd mon yyyy hh:mi:ss:mmm 유럽기본값
114 CONVERT(CHAR(12),GETDATE(),114) 09:10:50:937 hh:mi:ss:mmm -
120 CONVERT(CHAR(19),GETDATE(),120) 2018-06-07 10:16 yyyy-mm-dd hh:mi:ss ODBC표준
121 CONVERT(CHAR(23),GETDATE(),121) 16:27.4 yyyy-mm-dd hh:mi:ss.mmm ODBC표준
126 CONVERT(CHAR(23),GETDATE(),126) 2018-06-07T10:16:27.387 yyyy-mm-ddThh:mi:ss.mmm ISO8601
127 CONVERT(CHAR(23),GETDATE(),127) 2018-06-07T10:16:27.387 yyyy-mm-ddThh:mi:ss.mmmZ ISO8601
130 CONVERT(CHAR(28),GETDATE(),126) 24 ??? 1439 3:10:25:287PM dd mon yyyy hh:mi:ss:mmmAM 회교식
130 CONVERT(CHAR(26),GETDATE(),126) 24/09/1439 3:10:25:287PM dd/mm/yy hh:mi:ss:mmmAM 회교식

2018년 11월 6일 화요일

DATA-BASE 정보 (테이블,컬럼,인덱스)

-- ORACLE --
SELECT * FROM ALL_INDEXES;
SELECT * FROM ALL_IND_COLUMNS;
SELECT * FROM TABS;
SELECT * FROM ALL_ALL_TABLES;
SELECT * FROM ALL_TAB_COMMENTS;
SELECT * FROM COLS;
SELECT * FROM USER_COL_COMMENTS;
SELECT * FROM DICTIONARY WHERE TABLE_NAME IN ('TABS','ALL_ALL_TABLES','COLS','ALL_TAB_COMMENTS','USER_COL_COMMENTS','ALL_INDEXES','ALL_IND_COLUMNS');
/*
1 ALL_ALL_TABLES  Description of all object and relational tables accessible to the user
2 ALL_INDEXES     Descriptions of indexes on tables accessible to the user
3 ALL_IND_COLUMNS COLUMNs comprising INDEXes on accessible TABLES
4 ALL_TAB_COMMENTS  Comments on tables and views accessible to the user
5 USER_COL_COMMENTS Comments on columns of user's tables and views
6 COLS              Synonym for USER_TAB_COLUMNS
7 TABS              Synonym for USER_TABLES
*/
WITH AA AS (
SELECT TABLE_NAME
FROM TABS
WHERE SUBSTR(TABLE_NAME,1,4) = 'T_RM'
AND SUBSTR(TABLE_NAME,-4) NOT IN ('HIST','TEMP')
)
SELECT
    AA.TABLE_NAME, 'C' AS TYPE, TC.COMMENTS, C.COLUMN_NAME, C.DATA_TYPE, CC.COMMENTS
FROM AA
INNER JOIN ALL_TAB_COMMENTS TC ON AA.TABLE_NAME = TC.TABLE_NAME
INNER JOIN COLS C ON AA.TABLE_NAME = C.TABLE_NAME
INNER JOIN USER_COL_COMMENTS CC ON AA.TABLE_NAME = CC.TABLE_NAME AND C.COLUMN_NAME = CC.COLUMN_NAME
WHERE TC.OWNER = 'WCSUSER'
UNION ALL
SELECT AA.TABLE_NAME, 'I' AS TYPE, I.INDEX_NAME, LISTAGG(I.COLUMN_NAME,', ') WITHIN GROUP (ORDER BY I.COLUMN_NAME),'',''
FROM ALL_IND_COLUMNS I INNER JOIN AA ON AA.TABLE_NAME = I.TABLE_NAME
GROUP BY AA.TABLE_NAME, I.INDEX_NAME
ORDER BY 1,2
;
-- MS-SQL -- 
INFORMATION_SCHEMA.TABLES INFORMATION_SCHEMA.TABLE_CONSTRAINTS INFORMATION_SCHEMA.VIEW_TABLE_USAGE INFORMATION_SCHEMA.COLUMNS INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE INFORMATION_SCHEMA.KEY_COLUMN_USAGE INFORMATION_SCHEMA.VIEW_COLUMN_USAGE SYSOBJECTS
--테이블 코멘트 조회
SELECT OBJTYPE, OBJNAME, NAME, VALUE
FROM ::FN_LISTEXTENDEDPROPERTY (NULL, 'SCHEMA', 'DBO', 'TABLE', '테이블이름', DEFAULT, DEFAULT)
;
--컬럼 코멘트 조회
SELECT OBJTYPE, OBJNAME, NAME, VALUE FROM ::FN_LISTEXTENDEDPROPERTY(NULL, 'SCHEMA', 'DBO', 'TABLE', '테이블이름', 'COLUMN', DEFAULT)
;
SELECT * FROM INFORMATION_SCHEMA.TABLES;
SELECT * FROM INFORMATION_SCHEMA.COLUMNS;
SELECT * FROM SYS.EXTENDED_PROPERTIES;
SELECT * FROM SYSUSERS; SELECT * FROM SYSOBJECTS;
SELECT * FROM SYSCOLUMNS;
SELECT /* OBJECT LIST */
    COL.TABLE_CATALOG, COL.TABLE_SCHEMA
, CASE OBJ.ID
WHEN LAG(OBJ.ID) OVER (ORDER BY COL.TABLE_CATALOG, COL.TABLE_SCHEMA, COL.TABLE_NAME, COL.ORDINAL_POSITION)
THEN NULL
ELSE OBJ.ID
END AS ID
, CASE COL.TABLE_NAME
WHEN LAG(COL.TABLE_NAME) OVER (ORDER BY COL.TABLE_CATALOG, COL.TABLE_SCHEMA, COL.TABLE_NAME, COL.ORDINAL_POSITION)
THEN ''
ELSE COL.TABLE_NAME
END AS TABLE_NAME
, CASE PROP_T.value
WHEN LAG(PROP_T.value) OVER (ORDER BY COL.TABLE_CATALOG, COL.TABLE_SCHEMA, COL.TABLE_NAME, COL.ORDINAL_POSITION)
THEN ''
ELSE PROP_T.value
END AS TABLE_COMMENT
,OBJ.ID,COL.TABLE_NAME,PROP_T.value AS TABLE_COMMENT
, COL.COLUMN_NAME
, PROP.value AS COLUMN_COMMENT
, COL.ORDINAL_POSITION
, CONVERT(VARCHAR,COL.DATA_TYPE) +'('+ ISNULL(CONVERT(VARCHAR,COL.CHARACTER_MAXIMUM_LENGTH),'') +')' AS DATA_TYPE
, COL.IS_NULLABLE
, COL.COLUMN_DEFAULT
FROM SYSOBJECTS OBJ
INNER JOIN INFORMATION_SCHEMA.COLUMNS COL ON OBJ.NAME = COL.TABLE_NAME
LEFT OUTER JOIN SYS.EXTENDED_PROPERTIES PROP ON OBJ.ID = PROP.major_id
AND COL.ORDINAL_POSITION = PROP.minor_id
LEFT OUTER JOIN (
SELECT major_id,VALUE FROM SYS.EXTENDED_PROPERTIES WHERE minor_id=0
) PROP_T ON OBJ.ID = PROP_T.major_id
WHERE 0=0
ORDER BY COL.TABLE_CATALOG, COL.TABLE_SCHEMA, COL.TABLE_NAME, COL.ORDINAL_POSITION
;

SELECT /* COLUMN DETAILS */
CASE
OBJ.NAME WHEN LAG(OBJ.NAME) OVER(ORDER BY PROP.minor_id) THEN ''
ELSE OBJ.NAME
END AS TABLE_NAME
,OBJ.NAME
,ISNULL(COL.COLUMN_NAME,'[ '+OBJ.NAME+' ]') AS NAME
, COL.COLUMN_NAME
, PROP.VALUE AS COMMENT
, 'private String ' + LOWER(COL.COLUMN_NAME) + ';// ' + CONVERT(VARCHAR, PROP.VALUE) AS STR
, PROP.minor_id
FROM SYSOBJECTS OBJ
INNER JOIN SYS.EXTENDED_PROPERTIES PROP ON OBJ.ID = PROP.major_id
LEFT OUTER JOIN INFORMATION_SCHEMA.COLUMNS COL ON OBJ.NAME = COL.TABLE_NAME
AND COL.ORDINAL_POSITION = PROP.minor_id
WHERE OBJ.TYPE = 'U'
AND PROP.NAME = 'MS_Description'
AND PROP.CLASS_DESC = 'OBJECT_OR_COLUMN'
ORDER BY OBJ.NAME ASC, PROP.minor_id
;

2016년 2월 15일 월요일

Common Table Expression

Common Table Expression

기본 구조

WITH [CTE의 이름] ( [CTE에서 반환하는 열] )
AS (
 Table View
)
SELECT *FROM [CTE의 이름];

주의 사항

1. WITH 전에 GO 혹은 세미콜론(;)을 사용해야 함
2. [CTE에서 반환하는 열]은 AS 안의 Table View의 반환값과 같아야 함
3. AS 안에서는 내부 조인만 가능하다.

예제

이 예제에서는 CTE를 사용하여 반복+계층 질의문을 반환하도록 한다.

1. 예제 테이블 형식

[부서 ID], [부서 명] , [상위 부서 ID], [사용자 명]

2. 예제 테이블 기본 값

부서 ID 부서 명 상위 부서 ID 사용자 명
Dev 개발부 NULL 김개발
Ope 영업부 NULL 이영업
Dev1 개발1팀 Dev 김일팀
Dev2 개발2팀 Dev 김이팀
Dev1-1 개발1팀1조 Dev1 김일조
Ope1 영업1팀 Ope 이일팀
Ope2 영업2팀 Ope 이이팀

3. 질의문 작성

3-1. QUERY TEMPLATE

WITH CTE_DEPT ( [부서 ID], [부서 명] , [상위 부서 ID], [사용자 명] )
AS (
 Table View
)
SELECT *FROM CTE_DEPT

3-2. 기준이 되는 테이블 (상위부서가 없는 행)

WITH CTE_DEPT ( [부서 ID], [부서 명] , [상위 부서 ID], [사용자 명] )
AS (
 -- Table View
SELECT [부서 ID], [부서 명] , [상위 부서 ID], [사용자 명] 
FROM DEPT_TABLE 
WHERE [상위부서 ID] IS NULL 
)
SELECT *FROM CTE_DEPT


부서 ID부서 명상위 부서 ID사용자 명
Dev개발부NULL김개발
Ope영업부NULL이영업

3-3.  반복+계층을 위한 UNION ALL 작성

(기본 테이블의 [상위 부서 ID]와 CTE테이블의 [부서 ID]가 같은 것을 가져온다는 것은
"3-1"에서 가져온 기준이 되는 테이블 외의 것을 가져오는 것을 의미함)
WITH CTE_DEPT ( [부서 ID], [부서 명] , [상위 부서 ID], [사용자 명] )
AS (
 -- Table View
SELECT [부서 ID], [부서 명] , [상위 부서 ID], [사용자 명]
FROM DEPT_TABLE
WHERE [상위부서 ID] IS NULL
UNION ALL 
SELECT A.[부서 ID], A.[부서 명] , A.[상위 부서 ID], A.[사용자 명]
FROM DEPT_TABLE A 
    INNER JOIN CTE_DEPT B ON A.[상위부서 ID] = B.[부서 ID]
)
SELECT *FROM CTE_DEPT


부서 ID부서 명상위 부서 ID사용자 명
Dev개발부NULL김개발
Ope영업부NULL이영업
Dev1개발1팀Dev김일팀
Dev2개발2팀Dev김이팀
Dev1-1개발1팀1조Dev1김일조
Ope1영업1팀Ope이일팀
Ope2영업2팀Ope이이팀

3-4. 계층을 보여주는 LEVEL 함수 사용 및 반복 확인 열 추가

WITH CTE_DEPT ( [부서 ID], [부서 명] , [상위 부서 ID], [사용자 명], LEVEL )
AS (
 -- Table View
SELECT [부서 ID], [부서 명] , [상위 부서 ID], [사용자 명], 0
FROM DEPT_TABLE
WHERE [상위부서 ID] IS NULL
UNION ALL
SELECT A.[부서 ID], A.[부서 명] , A.[상위 부서 ID], A.[사용자 명], B.LEVEL+1
FROM DEPT_TABLE A 
    INNER JOIN CTE_DEPT B ON A.[상위부서 ID] = B.[부서 ID]
)
SELECT [부서 ID], REPLICATE('ㄴ',LEVEL)+ [부서 명] , [상위 부서 ID], [사용자 명], LEVEL
FROM CTE_DEPT


부서 ID 부서 명 상위 부서 ID 사용자 명 LEVEL
Dev 개발부 NULL 김개발 0
Ope 영업부 NULL 이영업 0
Dev1 개발1팀 Dev 김일팀 1
Dev2 개발2팀 Dev 김이팀 1
Dev1-1 ㄴㄴ개발1팀1조 Dev1 김일조 2
Ope1 영업1팀 Ope 이일팀 1
Ope2 영업2팀 Ope 이이팀 1

3-5. 정렬 

WITH CTE_DEPT ( [부서 ID], [부서 명] , [상위 부서 ID], [사용자 명], LEVEL )
AS (
 -- Table View
SELECT [부서 ID], [부서 명] , [상위 부서 ID], [사용자 명], 0
FROM DEPT_TABLE
WHERE [상위부서 ID] IS NULL
UNION ALL
SELECT A.[부서 ID], A.[부서 명] , A.[상위 부서 ID], A.[사용자 명], B.LEVEL+1
FROM DEPT_TABLE A 
    INNER JOIN CTE_DEPT B ON A.[상위부서 ID] = B.[부서 ID]
)
SELECT [부서 ID], REPLICATE('ㄴ',LEVEL)+ [부서 명] , [상위 부서 ID], [사용자 명], LEVEL
FROM CTE_DEPT
ORDER BY [부서 ID] , LEVEL
/* 부서 ID가 숫자일 경우 */
-- ORDER BY ISNULL([상위부서 ID], [부서 ID]), LEVEL


부서 ID부서 명상위 부서 ID사용자 명LEVEL
Dev개발부NULL김개발0
Dev1ㄴ개발1팀Dev김일팀1
Dev2ㄴ개발2팀Dev김이팀1
Dev1-1ㄴㄴ개발1팀1조Dev1김일조2
Ope영업부NULL이영업0
Ope1ㄴ영업1팀Ope이일팀1
Ope2ㄴ영업2팀Ope이이팀1

3-6. 최상위 부모 가져오기

WITH CTE_DEPT ( [부서 ID], [부서 명] , [상위 부서 ID], [사용자 명], LEVEL, TOPID)
AS (
 -- Table View
SELECT [부서 ID], [부서 명] , [상위 부서 ID], [사용자 명], 0, [부서 ID] AS TOPID
FROM DEPT_TABLE
WHERE [상위부서 ID] IS NULL
UNION ALL
SELECT A.[부서 ID], A.[부서 명] , A.[상위 부서 ID], A.[사용자 명], B.LEVEL+1, B.TOPID
FROM DEPT_TABLE A 
    INNER JOIN CTE_DEPT B ON A.[상위부서 ID] = B.[부서 ID]
)
SELECT [부서 ID], REPLICATE('ㄴ',LEVEL)+ [부서 명] , [상위 부서 ID], [사용자 명], LEVEL, TOPID
FROM CTE_DEPT
ORDER BY [부서 ID], LEVEL

부서 ID 부서 명 상위 부서 ID 사용자 명 TOPID
Dev 개발부 NULL 김개발 Dev
Dev1 개발1팀 Dev 김일팀 Dev
Dev2 개발2팀 Dev 김이팀 Dev
Dev1-1 개발1팀1조 Dev1 김일조 Dev
Ope 영업부 NULL 이영업 Ope
Ope1 영업1팀 Ope 이일팀 Ope
Ope2 영업2팀 Ope 이이팀 Ope

2014년 12월 14일 일요일

mavan install for MSSQL case.

1. maven install at MAC
1-1 download maven
    http://maven.apache.org/download.cgi > apache-maven-3.x.x-bin.tar.gz
1-2 압축풀기
    압축을 /usr/local 에 푼다.
1-3 링크만들기
ln -s apache-maven-3.2.3 maven
-----------------------------------------------------------------------------
ls -l

lrwxr-xr-x   1 root       owner   18 12  8 18:05 maven -> apache-maven-3.2.3
-----------------------------------------------------------------------------
1-4 프로파일 수정
/User 안의 .profile 을 편집하여 아래 내용을 넣기
* 참고 : 자바의 경로는 다를 수 있음.
vi .profile
-----------------------------------------------------------------------------
export M3_HOME=/usr/local/maven
export M3=$M3_HOME/bin
export PATH=$PATH:$M3
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home

alias ls="ls -v"
alias ll="ls -lv"
-----------------------------------------------------------------------------

1-5 프로파일 적용
source .profile
1-6 메이븐 설치 확인
mvn -version

2. maven install at Windows
2-1  download maven
    http://maven.apache.org/download.cgi > apache-maven-3.x.x-bin.zip
2-2 압축풀기
    압축을 특정 폴더에 푼다. (예 D:\maven\)
2-3 환경변수 등록
    2-3-1 컴퓨터 아이콘에 오른클릭 후 속성 (혹은 윈도우 로고 + pause키)
    2-3-2 고급 시스템 설정 > 고급 탭 > 환경변수 버튼
    2-3-3 시스템 변수 부분에서 새로 만들기 버튼
    2-3-3-1 변수이름: MAVEN_HOME // 변수 값 : MAVEN을 압축 해제한 폴더
    2-3-4 기존 시스템 변수에 추가
    2-3-4-1 기존 변수이름 : Path // 추가 할 변수 값 : %MAVEN_HOME%\bin;
         ** 변수 값 추가 전 끝 부분이 세미콜론(;)으로 되어 있는지 확인하고
             추가 후 마지막 부분을 세미콜론(;)으로 해 주어야 함.
    2-3-5 java가 설치되어 있어야 하며 JAVA_HOME이 설정되어 있어야 함
              설정방법은 메이븐과 동일 단 이름과 변수의 폴더 위치만 바뀜
              예) 변수이름: JAVA_HOME // 변수 값 : JAVA를 압축 해제한 폴더
2-4 설치 확인
    2-4-1 [윈도우 로고 + R] 로 실행창을 열고 cmd 입력 후 확인
    2-4-2 자바 버젼 확인 : java -version
    2-4-3 메이븐 버젼 확인 : mvn -version

-- !끝! --

2. MSSQL
Microsoft SQL은 메이븐이 자동으로 배포를 안해준다 ㅡㅡ
해당 jar를 수동으로 설치해 주고 pom.xml에 등록 후 확인해 보면 된다....
각 PC에서 죄다 해줘야 한다 ㅠㅠ
일단 다운로드~
2-1 다운로드 (참고로 3.0 이랑 4.0 이랑 지원하는 자바 버젼이 다르다.)
http://www.microsoft.com/en-us/download/details.aspx?id=11774
2-2 터미널로 다운받고 압축을 푼 jar 위치로 가서
mvn install:install-file -Dfile=sqljdbc4.jar 
 -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0 
 -Dpackaging=jar

-- !끝!--



2014년 12월 4일 목요일

Microsoft SQL Server IP로 접속 설정

* management studio 에서 IP로 접속을 하기 위해서는
[구성관리자]에서 설정이 필요하다.
1. TCP/IP 를 사용으로 설정
2. TCP/IP 속성의 IP 주소 탭에서 해당하는 IP주소에 대하여 속성변경
3. 서비스 재 시작

1. 네트워크 구성 > SERVER에 대한 프로토콜 > TCP/IP를 사용으로 설정
















2. TCP/IP를 마우스 오른클릭 > 속성 선택 >사용하고자 하는 IP 주소를 찾아서
    * TCP 동적 포트 : 0
    * TCP 포트 : 1443
    * 사용 : 예
    * 활성 : 예

3. 서비스 탭의 SQL SERVICE 항목 오른클릭 > 다시 시작 선택