프로젝트를 진행한 후 마무리 단계에서

 

산출물 관련 문서중 테이블 정의서나, 프로시저 정의서를 작성해야 할 때가 있다.

 

매번, 클릭해서 정보 확인하다가, 이번에 귀찮음의 귀찮음을 이기고 기록을 남겨본다.

 

필수정보(개인적으로)들만 조회 쿼리 만들어 보았다.

 

테이블 정보 및 컬럼정보다. (참고로 INFORMATION_SCHEMA.TABLES는 테이블 정보)

SELECT UPPER(TABLE_NAME), COLUMN_NAME
    ,  COLUMN_COMMENT
    ,  DATA_TYPE
    ,  CASE WHEN DATA_TYPE = 'datetime' THEN ''
            ELSE REPLACE(substring(COLUMN_TYPE, INSTR(COLUMN_TYPE, '(') + 1), ')', '') 
             END AS LENGTH
    ,  IS_NULLABLE
    ,  COLLATION_NAME
  FROM INFORMATION_SCHEMA.COLUMNS
 WHERE TABLE_SCHEMA='db_schema' AND TABLE_NAME='table_name';

db_schema는 DB명을 입력하면 되고 table_name은 테이블명을 입력하면 된다.

 

다음은, 프로시저와 파라미터 정보다

SELECT A.ROUTINE_NAME
    ,  A.ROUTINE_TYPE
    ,  B.PARAMETER_MODE
    ,  B.DATA_TYPE
    ,  B.PARAMETER_NAME
    ,  B.DTD_IDENTIFIER
    ,  A.ROUTINE_DEFINITION
  FROM INFORMATION_SCHEMA.ROUTINES   A
  JOIN INFORMATION_SCHEMA.PARAMETERS B ON B.SPECIFIC_CATALOG = A.ROUTINE_CATALOG
                                      AND B.SPECIFIC_NAME    = A.ROUTINE_NAME
 WHERE A.ROUTINE_SCHEMA 	= 'db_schema'
   AND A.ROUTINE_CATALOG 	= 'def'
   AND A.ROUTINE_TYPE 		= 'PROCEDURE'
;

db_schema는 DB명을 입력하면 된다

 

 

'Database > MYSQL' 카테고리의 다른 글

[MYSQL] 특정기간 일(목록) 구하기  (0) 2022.07.29
[MYSQL] Operand should contains 1 column(s)  (0) 2022.04.06
MYSQL 버전 확인하는 방법  (0) 2022.03.16

Mysql의 경우 RECURSIVE를 이용하여 특정기간의 일(목록)을 구할 수 있다.

 

예를들면 2022-01-10 ~ 2022-01-15의 목록의 결과는 다음과 같다.

2022-01-10, 2022-01-11, 2022-01-12, 2022-01-13, 2022-01-14, 2022-01-15

 

WITH RECURSIVE VIEW_DATE AS (
    SELECT STR_TO_DATE('20220110', '%Y%m%d') AS TODAY
     UNION ALL
    SELECT DATE_ADD(VIEW_DATE.TODAY, INTERVAL 1 DAY) 
      FROM VIEW_DATE 
     WHERE DATE_ADD(VIEW_DATE.TODAY, INTERVAL 1 DAY) <= '20220115'
)
SELECT TODAY
  FROM VIEW_DATE;

 

DB 조회 결과

 

쿼리를 수행하는 도중 서브쿼리(Subquery)가 존재할 때

 

단 1개의 컬럼만 도출되어야 하나, 2개 이상의 컬럼이 도출 되었을 때 발생하는 에러이다.

 

쿼리를 다시 확인하고, 서브쿼리(Subquery)를 올바르게 사용하자.

MYSQL의 버전을 확인하는 방법

 

SELECT VERSION();

 

 

 

MYSQL 버전 확인

+ Recent posts