<Database>DDL

이제내손을java...·2024년 3월 21일

Database 개념정리

목록 보기
8/11

DDL(ALTER,DROP)

안녕하세요! 오늘은 Database의 DDL에 대해서 정리해보려고 합니다😊
DB는 암기영역이 많은만큼 정리할 것도 많네요 !!😲

ALTER

오라클에 정의되어있는 OBJECT 를 수정할 때 사용하는 명령어이다.

DROP

오라클에 정의되어있는 OBJECT 를 삭제할 때 사용하는 명령어이다.

ALTER

테이블에 설정한 내용을 수정

  • 표현법
ALTER OBJECT 명 명령(ADD MODIFY...)

👉 기본 테이블 생성하기

CREATE TABLE TBL_USERALTER(
    USER_NO NUMBER PRIMARY KEY,
    USER_ID VARCHAR2(20),
    USER_PWD VARCHAR2(20)
);

생성된 TBL_USERALTER테이블에 컬럼을 추가하기

  • 표현법
ALTER TABLE 테이블명 ADD(컬럼명 타입 [제약조건])

🖐️ 문제풀이

  • USER_NANE이라는 문자열 컬럼 추가하기
ALTER TABLE TBL_USERALTER ADD(USER_NAME VARCHAR2(20));
  • 제약조건과 같이 컬럼 추가하기
ALTER TABLE TBL_USERALTER ADD(GENDER VARCHAR(5) CHECK(GENDER IN('M','F')));

✔️ 컬럼추가시 주의사항 ! NOT NULLL제약조건을 설정할때

INSERT INTO TBL_USERALTER VALUES(1,'ADMIN','1234','관리자','F');
INSERT INTO TBL_USERALTER VALUES(2,'USER01','1111','유저일','M');

➡️ NOT NULL 제약조건을 설정할때는 일반적으로 DEFAULT 값을 설정한다.

➡️두개의 데이터를 삽입한 상태에서 컬럼을 넣으면 원래 있던 데이터의 새로운 컬럼값에는 NULL을 넣기 때문에 NOT NULL제약조건을 설정할 때 주의해야한다.
예를들어, 이메일은 무조건 받아야하는 값으로 NOT NULL컬럼으로 EMAIL을 생성한다면 원래의 컬럼데이터값에 NULL이 자동생성이 되기때문에 오류가나고 들어가지 않는다.

ALTER TABLE TBL_USERALTER ADD(EMAIL VARCHAR2(100) NOT NULL);

🔴 테이블은 필수 열을 추가하기 위해 (NOT NULL) 비어 있어야 한다. 오류 발생
해결방법 : DEFAULT 값을 설정해줘야함

ALTER TABLE TBL_USERALTER ADD(EMAIL VARCHAR2(100) DEFAULT '미설정' NOT NULL); 
-- 기본값을'미설정'으로 설정해줬기때문에 삽입이 가능하게됨

컬럼 수정하기 -> 자료형, 길이

  • 표현법
ALTER TABLE 테이블명 MODIFY 컬럼명 자료형
  • TBL_USERALTER에 있는 데이터를 CHAR로 바꾸기
    ✔️ 주의할 점 : 컬럼안에 있는 데이터의 타입이 바꾸려는 타입으로 바꾸는것이 가능한지 주의해야함 -> 이름값을 NUMBER로 바꿀 수 없음
  • 자료형 바꾸기
DESC TBL_USERALTER;
ALTER TABLE TBL_USERALTER MODIFY GENDER CHAR(5);
  • 길이 바꾸기
ALTER TABLE TBL_USERALTER MODIFY USER_NAME VARCHAR2(100);

DROP

컬럼 삭제하기

  • 표현법
ALTER TABLE 테이블명 DROP COLUMN 컬럼명; 
  • TBL_USERALTER 에 EMAIL컬럼, NAME컬럼 지우기
ALTER TABLE TBL_USERALTER DROP COLUMN EMAIL;
ALTER TABLE TBL_USERALTER DROP COLUMN USER_NAME;

제약조건 추가하기

ADD CONSTRAINT 사용

  • 표현법
ALTER TABLE테이블명 ADD CONSTRAINT 제약조건명 제약조건(컬럼명)
-> 테이블레벨에서 작성한 방식
  • TBL_USERALTER테이블의 USER_ID에 UNIQE,NOT NULL제약조건을 추가하기
    -- NOT NULL제약조건을 추가할때는 추가가 아니라 수정!
ALTER TABLE TBL_USERALTER ADD CONSTRAINT UQ_USERID UNIQUE(USER_ID);
ALTER TABLE TBL_USERALTER ADD CONSTRAINT UQ_USERID NOT NULL(USER_ID);

제약조건 수정하기

MODIFY

  • 표현법
MODIFY 컬럼명 CONSTRAINT
ALTER TABLE 테이블명 MODIFY 컬럼명 CONSTRAINT 제약조건명 제약조건;
  • EX)
    ALTER TABLE TBL_USERALTER MODIFY USER_ID CONSTRAINT NN_USERID NOT NULL;
    INSERT INTO TBL_USERALTER VALUES(4,NULL,'2222','F');

제약조건 삭제하기

DROP CONSTRAINT

  • 표현법
ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명;

EX)

  • TBL_USERALTER테이블의 USERID의 UNIQUE제약조건 삭제하기
ALTER TABLE TBL_USERALTER DROP CONSTRAINT UQ_USERID;

컬럼명, 제약조건명, 테이블명, 변경하기

컬럼명 변경
RENAME COLUMN 사용

  • 표현법
ALTER TABLE 테이블명 RENAME COLUMN 이전 컬럼명 TO 바꿀컬럼명;

EX)

  • TBL_USERALTER테이블의 USER_IDFMF USERID로 변경하기
ALTER TABLE TBL_USERALTER RENAME COLUMN USER_ID TO USERID;

제약조건 변경
RENAME CONSTRAINT 사용

  • 표현법
ALTER TABLE 테이블명 RENAME CONSTRAINT 이전 제약조건명 TO 바꿀제약조건명;

테이블명 변경하기

  • 표현법
ALTER TABLE  이전테이블명 RENAME TO 새로운 테이블명

DROP 테이블을 삭제

  • 표현법
DROP TABLE 테이블명
DROP TABLE USERALTER;

--> 참조되는 키가 없기때문에 삭제된다

DROP TABLE FK_BOARD;

--참조되는 키가 있기때문에 삭제 되지 않음(참조관계에서 부모테이블은 함부로 삭제할 수 없다

DROP TABLE FK_BOARD **CASCADE CONSTRAINTS**;

--> 관계 다 끊어버리고 지워라!

이상으로 오늘의 개념정리를 마치겠습니다 ! 문제를 많이 풀어봐야할것같아용 !!! 화이팅 ㅜㅜ

0개의 댓글