1. 현재 데이터베이스의 테이블 목록 확인
(1) 시스템 뷰로 확인하기
SELECT TABLE_SCHEMA, TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
ORDER BY TABLE_NAME;

✅ 실행하면 현재 데이터베이스에 등록된 모든 테이블 목록이 출력됩니다.
2. 각 테이블의 구조(컬럼 정보) 확인
각 테이블의 컬럼 정보를 확인하려면 다음 SQL을 실행하세요.
(1) 특정 테이블의 컬럼 구조 확인
SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = '테이블명';
예를 들어 sales 테이블의 구조를 보려면:
SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'sales';
3. 테이블의 데이터 사용량 확인 (미사용 테이블 찾기)
테이블에 저장된 레코드 개수를 확인하면 사용하지 않는 테이블을 정리할 수 있습니다.
(1) 모든 테이블의 데이터 개수 확인
SELECT t.name AS TableName, i.rows AS RecordCount
FROM sys.tables t
JOIN sys.sysindexes i ON t.object_id = i.id
WHERE i.indid < 2
ORDER BY i.rows DESC;
✅ 출력 결과:
TableName | RecordCount |
orders | 15000 |
customers | 5000 |
logs | 0 |
4. 사용하지 않는 테이블 정리
(1) 테이블 삭제
사용하지 않는 테이블이 확인되었다면 삭제할 수 있습니다.
DROP TABLE 테이블명;
예제:
DROP TABLE logs;
⚠️ 주의: 삭제 전에 반드시 백업하세요!
(2) 특정 테이블의 데이터만 정리 (테이블 유지)
DELETE FROM 테이블명;
DBCC CHECKIDENT ('테이블명', RESEED, 0); -- ID 컬럼 초기화
예제:
DELETE FROM logs;
DBCC CHECKIDENT ('logs', RESEED, 0);
5. 테이블 관계(외래키) 확인
테이블을 삭제하기 전에 외래키(FK) 관계를 확인해야 합니다.
SELECT
f.name AS ForeignKeyName,
OBJECT_NAME(f.parent_object_id) AS TableName,
COL_NAME(fc.parent_object_id, fc.parent_column_id) AS ColumnName,
OBJECT_NAME(f.referenced_object_id) AS ReferencedTableName
FROM sys.foreign_keys AS f
INNER JOIN sys.foreign_key_columns AS fc ON f.object_id = fc.constraint_object_id
ORDER BY TableName;
✅ 출력 결과:
ForeignKeyName | TableName | ColumnName | ReferencedTableName |
FK_Order_Cust | orders | customer_id | customers |
👉 orders 테이블이 customers 테이블을 참조하고 있다면,
customers 테이블을 먼저 삭제하면 안 됩니다.
6. 테이블 백업 (중요!)
정리하기 전에 꼭 백업을 해두세요.
SELECT * INTO backup_sales FROM sales;
- 결론
INFORMATION_SCHEMA.TABLES를 사용해 현재 사용 중인 테이블 목록 확인
INFORMATION_SCHEMA.COLUMNS로 각 테이블의 컬럼 구조 분석
sys.tables과 sys.sysindexes를 사용해 데이터 개수 확인 (미사용 테이블 찾기)
DROP TABLE로 필요 없는 테이블 정리 (백업 필수!)
외래키(sys.foreign_keys)를 확인하여 연관된 데이터 삭제 순서 조정
정리 전 백업 필수 (SELECT * INTO backup_table FROM table)