[prog] SQL - MSSQL2020. 9. 17. 15:37
table comment  테이블 코멘트 설명 주석
SELECT OBJTYPE, OBJNAME, NAME, VALUE 
FROM   ::FN_LISTEXTENDEDPROPERTY(NULL, 'SCHEMA', 'DBO', 'TABLE', '테이블이름', DEFAULT, DEFAULT) ;

-- OR

SELECT OBJTYPE, OBJNAME, NAME, VALUE 
FROM   ::FN_LISTEXTENDEDPROPERTY(NULL, 'SCHEMA', 'DBO', 'TABLE', '테이블이름', 'column', DEFAULT) ;

 

 

프로시저 / 함수 내용 조회

1] sp_helptext 이용 (추천)

sp_helptext 프로시저 or 함수 이름

 

2] select 문 이용

SELECT B.text 
FROM       sys.sysobjects  AS A WITH (NOLOCK) 
INNER JOIN sys.syscomments AS B WITH (NOLOCK) ON A.id = B.id 
WHERE A.name = '프로시져 or 함수 이름' ;

 

 

칼럼명으로 테이블 찾기

 

SELECT T.name AS table_name, C.name AS column_name
FROM       sys.tables  as T
INNER JOIN sys.columns as C on T.object_id = C.object_id
WHERE  C.name = '칼럼명' ;

 

 

alternative to using COUNT(*)
 - indid : clustered index 의 개수

 

SELECT rows 
FROM   sysindexes 
WHERE  id=OBJECT_ID ('테이블명') AND indid < 2 ;

 

 

테이블의 칼럼명 추출

 

SELECT LOWER(A.COLUMN_NAME) + ','         -- 대문자로 받으려면 UPPER
FROM   INFORMATION_SCHEMA.COLUMNS A 
WHERE  A.TABLE_NAME = '테이블명' 

 

 

테이블별 데이터 건수 및 사이즈 확인

도움 : windtrap.tistory.com/7

 

SELECT Schema_name(tbl.schema_id)                                 AS [Schema],
       tbl.name,
       Coalesce((SELECT pr.name
                 FROM   sys.database_principals pr WITH (nolock)
                 WHERE  pr.principal_id = tbl.principal_id),
                 Schema_name(tbl.schema_id))                      AS [Owner],
       tbl.max_column_id_used                                     AS [Columns],
       CAST(CASE idx.index_id
              WHEN 1 THEN 1
              ELSE 0
            END AS BIT)                                           AS [HasClusIdx],
       Coalesce((SELECT SUM (spart.ROWS)
                 FROM   sys.partitions spart WITH (nolock)
                 WHERE  spart.object_id = tbl.object_id
                        AND spart.index_id < 2), 0)               AS [RowCount],
       Coalesce((SELECT CAST(v.low / 1024.0 AS FLOAT) * SUM(a.used_pages - CASE
                                         WHEN a.TYPE <> 1 THEN a.used_pages
                                         WHEN p.index_id < 2 THEN a.data_pages
                                         ELSE 0
                        END)
                 FROM   sys.indexes AS i WITH (nolock)
                        JOIN sys.partitions AS p WITH (nolock)
                          ON p.object_id = i.object_id
                             AND p.index_id = i.index_id
                        JOIN sys.allocation_units AS a WITH (nolock)
                          ON a.container_id = p.partition_id
                 WHERE  i.object_id = tbl.object_id), 0.0) / 1024 AS [IndexMB],
       Coalesce((SELECT CAST(v.low / 1024.0 AS FLOAT) * SUM(CASE
                        WHEN a.TYPE <> 1 THEN a.used_pages
                                 WHEN p.index_id < 2 THEN a.data_pages
                                 ELSE 0
                        END)
                 FROM   sys.indexes AS i WITH (nolock)
                        JOIN sys.partitions AS p WITH (nolock)
                          ON p.object_id = i.object_id
                             AND p.index_id = i.index_id
                        JOIN sys.allocation_units AS a WITH (nolock)
                          ON a.container_id = p.partition_id
                 WHERE  i.object_id = tbl.object_id), 0.0) / 1024 AS [DataMB],
       tbl.create_date,
       tbl.modify_date
FROM   sys.tables AS tbl WITH (nolock)
       INNER JOIN sys.indexes AS idx WITH (nolock)
         ON (     idx.object_id = tbl.object_id
              AND idx.index_id < 2 )
       INNER JOIN MASTER.dbo.spt_values v WITH (nolock)
         ON (     v.NUMBER = 1
              AND v.TYPE = 'E' )
--WHERE tbl.Name like '%tablename%' 
ORDER  BY 8, 2 DESC

 

 

 

일련번호 작업
-- 실행 1 : Base Query

DECLARE @P_SNUMBER varchar(11)
DECLARE @P_STRING  varchar(11) = 'myTest_'

	SET @P_SNUMBER = @P_STRING + '0001';

select @P_SNUMBER as P_SNUMBER

---------------------------------------

-- 실행 2 : 시리얼번호 증가 테스트

DECLARE @P_SNUMBER1 varchar(11)
DECLARE @P_SNUMBER2 varchar(11)
DECLARE @P_STRING   varchar(7) = 'myTest_'

-- 전체 11 자리 / 숫자 4 자리
SET @P_SNUMBER1 = 'myTest_0011';
SET @P_SNUMBER2 = 'myTest_2222';

-- 숫자부분만 끊어서 1 증가
SET @P_SNUMBER1 = SUBSTRING(@P_SNUMBER1, 8, 11) + 1;
SET @P_SNUMBER2 = SUBSTRING(@P_SNUMBER2, 8, 11) + 1;

select @P_SNUMBER1 as P_SNUMBER1,
       @P_SNUMBER2 as P_SNUMBER2;

-- (숫자 전체 자리수 - 숫자수) 만큼 앞에 0 을 붙여서
-- 앞에 @P_STRING 문자열(myTest_) 을 붙여준다
-- REPLICATE(문자(열), 숫자) : 문자(열) 을 숫자 개수 만큼 복제하여 붙여넣기
SET @P_SNUMBER1 = @P_STRING
                + (REPLICATE(0, 4 - LEN(@P_SNUMBER1))
                +  CONVERT(VARCHAR, @P_SNUMBER1));

SET @P_SNUMBER2 = @P_STRING
                + (REPLICATE(0, 4 - LEN(@P_SNUMBER2))
                +  CONVERT(VARCHAR, @P_SNUMBER2));

select @P_SNUMBER1 as P_SNUMBER1,
       @P_SNUMBER2 as P_SNUMBER2;

---------------------------------------

-- 실행 3 : 시리얼번호가 없으면 문자열_0001
--               이미 존재하면 문자열 + 1

DECLARE @P_SNUMBER1 varchar(11)
DECLARE @P_SNUMBER2 varchar(11)
DECLARE @P_STRING   varchar(7) = 'myTest_'


-- 전체 11 자리 / 숫자 4 자리
SET @P_SNUMBER2 = 'myTest_0011';


-- @P_SNUMBER1 처리  (= 시리얼번호가 NULL 인 경우)
IF @P_SNUMBER1 IS NULL
BEGIN
  SET @P_SNUMBER1 = @P_STRING + '0001';
END
ELSE
BEGIN
  SET @P_SNUMBER1 = SUBSTRING(@P_SNUMBER1, 8, 11) + 1;
  SET @P_SNUMBER1 = @P_STRING
                + (REPLICATE(0, 4 - LEN(@P_SNUMBER1))
                +  CONVERT(VARCHAR, @P_SNUMBER1));
END


-- @P_SNUMBER2 처리  (= 시리얼번호가 NULL 이 아닌 경우)
IF @P_SNUMBER2 IS NULL
BEGIN
  SET @P_SNUMBER2 = @P_STRING + '0001';
END
ELSE
BEGIN
  SET @P_SNUMBER2 = SUBSTRING(@P_SNUMBER2, 8, 11) + 1;
  SET @P_SNUMBER2 = @P_STRING
                + (REPLICATE(0, 4 - LEN(@P_SNUMBER2))
                +  CONVERT(VARCHAR, @P_SNUMBER2));
END


select @P_SNUMBER1 as P_SNUMBER1,
       @P_SNUMBER2 as P_SNUMBER2;

 

결과 1

   P_SNUMBER
-----------------
1  myTest_0001

결과 2

    P_SNUMBER1        P_SNUMBER1
-----------------------------------------
    12                      2223


    P_SNUMBER1        P_SNUMBER1
-----------------------------------------
    myTest_0012        myTest_2223
결과 3

    P_SNUMBER1        P_SNUMBER1
-----------------------------------------
    myTest_0001         myTest_0012

 

int 순번 칼럼 insert 할때

 

INSERT 테이블명 (
       칼럼1
     , 칼럼2
)
values (
       칼럼1값
     , (SELECT ISNULL(MAX(EXPE_SEQNO), 0)  + 1
        FROM   TEV_EVENT_EXPENS (NOLOCK)
        WHERE  EVENT_MANAGE_SN = @EVENT_MANAGE_SN)
)

 

 

 

------------------------------------------ 

Posted by dawnawaker
[prog] SQL - MSSQL2020. 9. 9. 15:03

ODBC 연결에 문제가 있어 주는 쪽, 받는 쪽 모두 SQL Server Native Client 로 설정.

 

1. SSMS 에서 해당 DB 선택 ➔ 마우스 오른쪽 버튼 ➔ 속성 ➔ 연결속성보기

 

   서버이름(서버 IP) 을 복사해둔다.

 

 

2. SSMS 에서 해당 DB 선택 ➔ 마우스 오른쪽 버튼 ➔ 태스크 ➔ 데이터 내보내기

 

3. 데이터 원본 선택

    1) 데이터 원본 : SQL Server Native Client 11.0

    2) 서버이름     : 복사해둔 서버이름

    3) 사용자 ID, 패스워드 입력

    4) 해당 데이터베이스 선택  (제대로 연결되었다면, 콤보버튼 클릭하면 해당 서버내의 모든 DB 가 보인다)

 

 

4. 대상선택

   1) 대상 : SQL Server Native Client 11.0

   2) 서버 : localhost  ← 직접입력

   3) 인증 : windows 인증 사용

   4) 데이터베이스 : [새로만들기] 클릭한 후 새로 만들자

 * 새로만들기 버튼이 보이지 않는다면, 윈도우창을 아래로 쭉 당기면 버튼이 보인다.

  진행과정 중, 아래 둘 중 하나를 고르는 화면에서는 Run Immediately 를 선택한다

  • Run Immediately
  • save  SSIS Package

 

5) 이렇게 해서 모든 작업이 끝나면, 해당 DB 는 SQL server 가 설치된 폴더에 들어간다.

   예) C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\dev_app01_Data.mdf

    C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\dev_app01_Log.ldf

 

 

6) 내려받은 DB 를 다른 컴퓨터로 복사하기

   로컬에서 sql server 가 돌아가고 있다면, 복사가 불가능하니,

   일단 sql server 부터 중지시킨다.

 

  6-1) 실행중인 SQL server 중지

       프로그램 ▶ windows 관리 도구 ▶ 서비스  or

       제어판   ▶ 관리 도구           ▶ 서비스  선택

  6-2) SQL server(MSSQLSERVER) 중지

  6-3) 이제 복사가 가능하니, 다른 곳에 복사한 후

         중지시킨 SQL Server 를 다시 실행

 

 

Posted by dawnawaker

--------------

 

/*********************************************************************
                                  오늘 날짜
*********************************************************************/
var today = new Date();                         // today 또는 now
var dd     = today.getDate();
var mm    = today.getMonth() + 1;          // January is 0!
var yyyy   = today.getFullYear();


/* -------------------
if(dd<10) {
dd='0'+dd


if(mm<10) {
mm='0'+mm

------------------- */

 

today = yyyy + '-' + mm + '-' + dd + ' || ' + today;
this.edt00.set_value(today);


/*********************************************************************
                                오늘 - 3 일
*********************************************************************/
var dateMinus = new Date();
dateMinus.setDate(dateMinus.getDate() - 3);
var mm1 = dateMinus.getMonth() + 1;

this.edt01.set_value(dateMinus.getFullYear() + '-' + mm1 + '-' + dateMinus.getDate() + ' || ' + dateMinus);

/*********************************************************************
                                 오늘 + 7 일
*********************************************************************/
var datePlus = new Date();
datePlus.setDate(datePlus.getDate() + 7);
var mm2 = datePlus.getMonth() + 1;

this.edt02.set_value(datePlus.getFullYear() + '-' + mm2 + '-' + datePlus.getDate() + ' || ' + datePlus);

/*********************************************************************
                                현재월의 1 일
*********************************************************************/
var firstDay = new Date(yyyy, mm, 1);

this.edt03.set_value(firstDay.getYear() + '-' + firstDay.getMonth() + '-' + firstDay.getDate() );

/*********************************************************************
                            현재월의 마지막 날  -  아직 문제 있음
*********************************************************************/
// var lastDay = new Date(yyyy, mm + 1 , 0);                // 5월에 테스트하면 5월 30 일로 나옴
var lastDay = new Date(yyyy, today.getMonth() , 0);        // 5월에 테스트하면 5월 30 일로 나옴
// var lastDay = new Date(yyyy, mm + 1, 1);
// var lastDay = ( new Date( 2020, mm, 0) ).getDate();

this.edt10.set_value(lastDay.getYear() + '-' + lastDay.getMonth() + '-' + lastDay.getDate());

// 다음달의 1일
// this.edt10.set_value("다음달의 1일 : " + lastDay.getYear() + '-' + lastDay.getMonth() + '-' + lastDay.getDate());
lastDay.setDate(lastDay.getDate() - 1);

this.edt04.set_value(lastDay.getYear() + '-' + lastDay.getMonth() + '-' + lastDay.getDate());
   
/*********************************************************************
                                숫자를 문자로
*********************************************************************/
var aa = 10;
var bb = 20;

aa = String(aa);
bb = String(bb);

cc = aa + bb;

this.edt05.set_value('aa = 10, bb = 20, aa + bb = ' + cc);

/*********************************************************************
                                문자를 숫자로
*********************************************************************/
aa = Number(aa);
bb = Number(bb);

dd = aa + bb;

this.edt06.set_value('aa = 10, bb = 20, aa + bb = ' + dd);

/*********************************************************************
문자열 자르기 - split
*********************************************************************/
var tString  = '2020-03-05';

tString.split('-');

 

Posted by dawnawaker
[prog] SQL - ORACLE2020. 5. 5. 19:28

SELECT 문장 실행 순서 및 주의 사항

 

  • SELECT 문장 실행 순서 및 주의 사항

    5 - SELECT
    1 - FROM
    2 - WHERE
    3 - GROUP BY
    4 - HAVING
    6 - ORDER BY

 

Posted by dawnawaker

신나는 무대

  • Nicholas is just one man and his piano… or is he? | Week 1 Auditions - 조회수 2200만
    Britain’s Got Talent 2016 (from 1:17)
    혼자서 조용하게 피아노를 치려던 것 처럼 보인던 무대가 ...
    https://www.youtube.com/watch?v=oin0djnH0OM

 

감동의 무대

 

  • Edison & Leon 54 & 84 years old Balancing Duo UNBELIEVABLE - 조회수 180만
    America's Got Talent 2019 Audition
    이 분들을 보면 더이상 '나는 나이들어서' 라는 말이 나오지 않는다.
    https://www.youtube.com/watch?v=NYMMk3xWyaU

 

 

아름다운 무대

  • Britain's Got Talent 2019 The Champions Connie Talbot 1st Round Audition
    앞니없는 귀여운 꼬마때 도전했다가 소녀가 되어 다시 도전하는 Connie Talbot
    https://www.youtube.com/watch?v=CairSSXli-M

 

 

 

 

____________________________________
포스팅은 이어집니다, 음악이 있는한 계속...

'YouTube - [음악] Music & Song' 카테고리의 다른 글

MUSIC - Simply Three  (0) 2019.10.09
Flash Mob / POP / 경음악 / Dance  (0) 2019.09.02
Flash Mob / Classical / SemiClassical  (0) 2019.09.02
Posted by dawnawaker

Flash Mob - Dnace

 

 

 

 

 

 

 

Flash Mob - Music

 

 

 

 

 

 

 

 

____________________________________
포스팅은 이어집니다, 음악이 있는한 계속...

'YouTube - [음악] Music & Song' 카테고리의 다른 글

MUSIC - Simply Three  (0) 2019.10.09
Got Talent  (0) 2019.09.03
Flash Mob / Classical / SemiClassical  (0) 2019.09.02
Posted by dawnawaker

Flash Mob

  • Beethoven Symponie No.9 Nürnberg 2014 - Ode an die Freude (Ode To Joy) - 조회수 2100만
    https://www.youtube.com/watch?v=a23945btJYw&t=5s
    베토벤 교향곡 9번 (합창)
    - 사람이 만들어낼 수 있는 최고의 음악
    - 오케스트라에 합창이 들어간 최초의 곡 
      귀가 멀고서 작고하여 지휘하고도 사람들의 박수를 듣지못해 실망한채 서 있다가 
      다른 이들이 관객의 박수치는 모습을 볼 수 있게 해 준 후에야 기뻐했다는 에피소드

 

 

 

  • Antonín Dvořák Symphony No. 9 "From the New World" - 조회수 27만
    안토닌 드보르잨 교향곡 9번 "신세계로부터" - 헝가리 부다페스트에서
    https://www.youtube.com/watch?v=6EmZM8Erra0

 

  • Gustav Holst - The Planets Jupiter (Berklee Contemporary Symphony Orchestra) - 조회수 170만 
    구스타브 홀스트 - 행성모음곡 중 목성, 기쁨을 가져오는 자
    https://www.youtube.com/watch?v=q3cpOrB1GW8

 

 

 

 

 

 

 

 

 

Dance

 

 

 

 

 

 

____________________________________
포스팅은 이어집니다, 음악이 있는한 계속...

'YouTube - [음악] Music & Song' 카테고리의 다른 글

MUSIC - Simply Three  (0) 2019.10.09
Got Talent  (0) 2019.09.03
Flash Mob / POP / 경음악 / Dance  (0) 2019.09.02
Posted by dawnawaker