본문 바로가기
DataBase

[SQL]테이블 제거

by 바까 2021. 9. 25.
반응형
--테이블제거
존재하는 테이블을 제거할 수 있다.

--실습 준비
DROP TABLE AUTHOR;
DROP TABLE PAGE;

CREATE TABLE AUTHOR 
(
  AUTHOR_ID INT NOT NULL PRIMARY KEY
, FIRSTNAME VARCHAR (50)
, LASTNAME VARCHAR (50)
);
 
CREATE TABLE PAGE (
  PAGE_ID SERIAL PRIMARY KEY
, TITLE VARCHAR (255) NOT NULL
, CONTENT TEXT
, AUTHOR_ID INT NOT NULL
, FOREIGN KEY (AUTHOR_ID) REFERENCES AUTHOR (AUTHOR_ID) 
);

INSERT INTO AUTHOR 
VALUES (1, 'kyounhoh', 'Lee');

INSERT INTO PAGE 
VALUES (1, 'SQL과 데이터베이스', 'drop table', 1);

COMMIT; 

DROP TABLE AUTHOR; --부모테이블이기 때문에 삭제 불가

SQL Error [2BP01]: 오류: 기타 다른 개체들이 이 개체에 의존하고 있어, author 테이블 삭제할 수 없음
  Detail: page_author_id_fkey 제약 조건(해당 개체: page 테이블) 의존대상: author 테이블
  Hint: 이 개체와 관계된 모든 개체들을 함께 삭제하려면 DROP ... CASCADE 명령을 사용하십시오
 ;


DROP TABLE PAGE; --자식테이블이기 때문에 제거가능

SELECT * FROM AUTHOR; 
SELECT * FROM page; --없어짐확인



--그냥 삭제하고싶으면 cascade 사용
DROP TABLE AUTHOR CASCADE;

SELECT * FROM AUTHOR; --삭제됨을 확인
SQL Error [42P01]: 오류: "author" 이름의 릴레이션(relation)이 없습니다
  Position: 15
  ;

 
 --자식 테이블의 행은 존재하지만 fk 제약조건은 자동 삭제됨
 SELECT * FROM PAGE;

-- public.page definition
CREATE TABLE public.page (
	page_id serial4 NOT NULL,
	title varchar(255) NOT NULL,
	"content" text NULL,
	author_id int4 NOT NULL,
	CONSTRAINT page_pkey PRIMARY KEY (page_id)
);
반응형

'DataBase' 카테고리의 다른 글

[SQL]TRUNCATE  (0) 2021.09.25
[SQL]임시 테이블  (0) 2021.09.25
[SQL]컬럼 이름 변경  (0) 2021.09.25
[SQL]컬럼 데이터 타입 변경  (0) 2021.09.25
[SQL]칼럼 제거  (0) 2021.09.25

댓글