ORA-12983: 테이블에 모든 열들을 삭제할 수 없습니다 해결하기 (ORA-12983: cannot drop all columns in a table)

테스트 차원에서 컬럼을 삭제하다 보니, ORA-12983 테이블에 모든 열들을 삭제할 수 없습니다(cannot drop all columns in a table) 오류가 발생합니다.

ORA-12983 테이블에 모든 열들을 삭제할 수 없습니다

실제로 테이블에 컬럼이 하나도 없는 경우는 생각해본 적이 없는데, 오라클은 이렇게 표현을 하는 것을 확인할 수 있습니다. 당연히 테이블은 하나 이상의 컬럼을 포함해야 합니다. 그 이유를 알아보도록 합시다.

ALTER TABLE USERNAME.TABLENAME DROP COLUMN COLUMNNAME;

SELECT * FROM USERNAME.TABLENAME;

테이블, 로우, 컬럼 표현 (정보처리)

테이블의 정의는 행(row)과 열(column)로 이루어진 데이터 집합입니다.

특히 로우와 컬럼이라는 표현은 오라클과 같은 관계형 데이터베이스 관리 시스템(RDBMS : relational database management system)에서 자주 사용하는 표현입니다.

아래 표는 행과 열을 나타내는 여러 가지 방법을 모아보았습니다.

특히 정보처리와 관련하여 릴레이션에 대한 내용은 상세히 추가합니다.

구분
데이터 베이스 관리 시스템(DBMS)로우(row)컬럼(column)
파일 구조(File)레코드(record)필드(field)
릴레이션(Relation)튜플(tuple)어트리뷰트(attribute)

릴레이션

  • 튜플의 수 : 카디널리티(cardinality) => 기수, 집합의 크기
  • 어트리뷰트의 수 : 디그리(drgree) => 차수
  • 도메인(domain) : 각 어트리뷰트의 원자 집합 (아래에 설명을 추가합니다)

직원 릴레이션

직원 릴레이션을 예시로 확인해 봅시다.

  • 카디널리티는 튜플의 수 14개입니다. (행의 개수)
  • 디그리는 어트리뷰트의 수 8개입니다. (열의 개수)
  • 부서번호(DEPTNO)의 도메인은 (10, 20, 30)입니다.
  • 직업(JOB)의 도메인은 (ANALYST, CLERK, MANAGER, PRESIDENT, SALESMAN)입니다.

댓글