programing

모든 테이블 및 해당 데이터 정렬을 표시하는 쿼리

shortcode 2022. 9. 6. 22:50
반응형

모든 테이블 및 해당 데이터 정렬을 표시하는 쿼리

mysql에서 실행할 수 있는 쿼리는 모든 테이블과 기본 대조 결과를 보여줍니까?이 항목이 있으면 모든 테이블의 모든 열에 모든 데이터 정렬을 표시할 수 있습니다.

SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, COLLATION_NAME
    FROM INFORMATION_SCHEMA.COLUMNS

대조는 테이블 및 열에도 정의할 수 있습니다.

열의 조합은 상위 테이블과 다를 수 있습니다.테이블(열 아님)에서 데이터 정렬을 가져오기 위한 쿼리입니다.

SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_COLLATION
FROM INFORMATION_SCHEMA.TABLES;

데이터베이스의 모든 테이블에 대한 정보(상태)를 "phpmyadmin"으로 출력합니다.

SHOW TABLE STATUS FROM your_db_name;

데이터베이스 조합과 일치하지 않는 열을 확인하려면 이 옵션을 실행합니다.쿼리 및 조건에 이러한 열을 사용하려면 일치시키는 COLATE 힌트를 사용해야 합니다.

SELECT 
     CLM.[TABLE_CATALOG]
    ,CLM.[TABLE_SCHEMA]
    ,CLM.[TABLE_NAME]
    ,CLM.[COLUMN_NAME]
    ,CASE
        WHEN CLM.[CHARACTER_MAXIMUM_LENGTH] IS NOT NULL THEN CLM.[DATA_TYPE] + '(' + CASE WHEN CLM.[CHARACTER_MAXIMUM_LENGTH] = '-1' THEN 'max' ELSE CAST(CLM.[CHARACTER_MAXIMUM_LENGTH] AS NVARCHAR(10)) END + ')'
        ELSE CLM.[DATA_TYPE]
     END AS [DATA_TYPE]
    ,CLM.[CHARACTER_SET_NAME]
    ,CLM.[COLLATION_NAME]
--  ,CLM.* 
FROM INFORMATION_SCHEMA.COLUMNS CLM (NOLOCK)
    LEFT JOIN sys.databases DBS (NOLOCK) ON CLM.[TABLE_CATALOG] = DBS.[name]
WHERE CLM.[COLLATION_NAME] IS NOT NULL AND CLM.[COLLATION_NAME] != DBS.[collation_name]

언급URL : https://stackoverflow.com/questions/4948356/query-to-show-all-tables-and-their-collation

반응형