안녕하세요! 오늘은 Database의 DDL에 대해서 정리해보려고 합니다😊
DB는 암기영역이 많은만큼 정리할 것도 많네요 !!😲
ALTER
오라클에 정의되어있는 OBJECT 를 수정할 때 사용하는 명령어이다.
DROP
오라클에 정의되어있는 OBJECT 를 삭제할 때 사용하는 명령어이다.
테이블에 설정한 내용을 수정
- 표현법
ALTER OBJECT 명 명령(ADD MODIFY...)
👉 기본 테이블 생성하기
CREATE TABLE TBL_USERALTER(
USER_NO NUMBER PRIMARY KEY,
USER_ID VARCHAR2(20),
USER_PWD VARCHAR2(20)
);
- 표현법
ALTER TABLE 테이블명 ADD(컬럼명 타입 [제약조건])
🖐️ 문제풀이
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);
컬럼 삭제하기
- 표현법
ALTER TABLE 테이블명 DROP COLUMN 컬럼명;
ALTER TABLE TBL_USERALTER DROP COLUMN EMAIL;
ALTER TABLE TBL_USERALTER DROP COLUMN USER_NAME;
ADD CONSTRAINT 사용
- 표현법
ALTER TABLE테이블명 ADD CONSTRAINT 제약조건명 제약조건(컬럼명) -> 테이블레벨에서 작성한 방식
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 컬럼명 CONSTRAINTALTER TABLE 테이블명 MODIFY 컬럼명 CONSTRAINT 제약조건명 제약조건;
DROP CONSTRAINT
- 표현법
ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명;
EX)
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**;
--> 관계 다 끊어버리고 지워라!
이상으로 오늘의 개념정리를 마치겠습니다 ! 문제를 많이 풀어봐야할것같아용 !!! 화이팅 ㅜㅜ
