DDL : 생성(CREATE), 수정(ALTER),삭제(DROP)
* 자료형 문자 / 숫자 / 날짜
* 문자
- 데이터 크기도 지정해야 함
- CHAR 자료형은 고정 길이 이고, 최대 2000B까지 저장 가능
- VARCHAR2 자료형은 가변 길이 이고, 최대 4000B까지 저장 가능
SQL 컬럼에 설명을 추가하는 SQL 구문 :
COMMENT
COMMENT ON COLUMN 테이블명.컬럼명 IS '주석 내용'
NULL 값을 허용하지 않도록 설정하는 제약 조건 :
컬럼 레벨 방식만 가능하다.
데이터의 중복을 허용하지 않도록 설정하는 제약 조건 : UNIQUE
- > 컬럼 레벨 방식 / 테이블 방식 모두 가능하다
PRIMARU KEY :
테이블에 저장되는 각 행들을 구분하기 위한 컬럼을 식별자 역할을 함
NOT NULL, UNIQUE 두 제약조건의 특징을 모두 가지고 있음
* 복합키 설정 시 테이블 레벨 방식으로 설정!
다른 테이블에 존재하는 값을 사용하기 위한 제약 조건 :
FOREIGN KEY : (외래키 FK)
+ 다른 테이블에 존재하지 않는 값은 저장되지 않음! (오류 발생!)
+ 삭제 옵션 +
- 부모 테이블의 데이터 삭제 시 자식 테이블의 사용 중인 데이터가 있을 경우 삭제되지
않도록 하는 옵션 (기본값) (기본값) : ON DELETE RESTRICTED
부모 테이블의 데이터 삭제 시 자식 테이블의 해당 데이터를 NULL로 변경되도록 하는 옵션
: ON DELETE SET NULL
-> 부모 테이블의 데이터 삭제 시 자식 테이블의 해당 데이터를 NULL로 변경되도록 하는 옵션
: ON DELETE CASCADE
부모 테이블의 데이터 삭제 시 자식 테이블의 해당 데이터도 같이 삭제되도록 하는 옵션
ON DELETE CASCADE
제약 조건에 이름을 부여할 때 사용하는 키워드 : CONSTRAINT
컬럼명 자료형 || CONSTRAINT 제약조건명 제약조건
데이터 추가 시 기본 값을 설정하기 위해 사용하는 키워드 :
DEFAULT
+ 데이터 추가 시 값이 없는 경우 기본적으로 NULL값으로 저장됨
NULL 값이 아닌 다른 값을 기본값으로 사용하고자 할 때 적용된다.
컬럼명 자료형 DEFAULT 기본값
1. 실습 문제 :
-- 초기화 작업: 기존 테이블 제거
DROP TABLE TB_MEMBER;
DROP TABLE TB_BOOK;
DROP TABLE TB_PUBLISHER;
DROP TABLE TB_RENT;
문제 ) 1. 출판사들에 대한 데이터를 담기위한 출판사 테이블(TB_PUBLISHER)
컬럼 : PUB_NO(출판사 번호) - 기본키(PUBLISHER_PK) : 내가 할 부분
: PUB_NAME(출판사명) -- NOT NULL(PUBLISHER_NN)
: PHONE(출판사전화번호) -- 제약조건없음
풀이 ) CREATE TABLE TB_PUBLISHER(
1.PUB_NO 2.NUMMER 3.CONSTRAINT 4.PUBLISHER_PK 5.PRIMARY KEY
1. 컬럼명
2. 자료형
3.제약조건명 부여 : CONSTRAINT
4.제약 조건명
5. 기본키 설정
* 내가 헷갈리는 부분 3. CONSTRAINT : 위치
);
* 컬럼에 설명 추가하기 :
COMMENT ON COLUMN 테이블명.컬럼명 IS '컬럼이름';
1.COMMENT ON COLUMN 2.TB_PUBLISHER.컬럼명 3.IS '컬럼별칭'
1. COMMENT ON COLUMN
2. 테이블명.컬럼명
3. IS '컬럼별칭'
데이터 추가 :
- > INSERT
INSERT INTO 테이블명 VALUES (값,값,값);
2. 실습 문제 :
문제 :
2. 도서들에 대한 데이터를 담기위한 도서 테이블(TB_BOOK)
컬럼 :
BK_NO(도서번호)--기본키(BOOK_PK)
BK_TITLE(도서명)--NOT NULL(BOOK__NN_TITLE)
BK_AUTHOR(저자명)--NOT NULL(BOOK__NN_AUTHOR)
BK_PRICE(가격)-- 제약조건없음
BK_PUB_NO(출판사 번호)--외래키(BOOK_FK)(TB_PUBLISHER테이블을 참조)
이때 참조하고 있는 부모데이터 삭제시
자식데이터도 삭제 되도록 옵션지정 ( ON DELETE CASCADE ) : 내가 할 부분
풀이 :
CREATE TABLE TB_BOOK(
-- 컬럼 레벨 방식 :
1.BK_PUB_NO 2.NUMBER 3.CONSTRAINT 4.제약조건명 5.REFERRENCES 부모테이블명 6.ON DELETE CASCADE
1.컬럼명
2.자료형
3.CONSTRAINT
4.제약조건명
5.REFERRENCES 부모테이블명
6. ON DELETE CASCADE <=> 다른 조건 ON DELETE SET NULL
);
문제 :
3. 회원에 대한 데이터를 담기위한 회원 테이블(TB_MEMBER)
컬럼명 : MEMBER_NO(회원번호) -- 기본키(MEMBER_PK)
MEMBER_ID(아이디) -- 중복금지(MEMBER_UQ_ID)
MEMBER_PWD(비밀번호) -- NOT NULL(MEMBER_NN_PWD)
MEMBER_NAME(회원명) -- NOT NULL(MEMBER_NN_NAME)
GENDER(성별) -- M또는 F로 입력되도록 제한(MEMBER_CK_GEN)
ADDRESS(주소) -- 제약조건없음
PHONE(연락처)-- 제약조건없음
STATUS(탈퇴여부) -- 기본값을 N으로 지정, 그리고 N또는 Y만 입력되도록 제약조건 설정(MEMBER_CK_STA)
ENROLL_DATE(가입일) -- 기본값으로 SYSDATE, NOT NULL 제약조건(MEMBER_NN_EN)
풀이 :
GENDER(성별) -- M또는 F로 입력되도록 제한(MEMBER_CK_GEN) :
GENDER CHAR(1) CONSTRAINT MEMBER_CK_GEN CHECK(GENDER IN('M', 'F')),
STATUS(탈퇴여부) -- 기본값을 N으로 지정, 그리고 N또는 Y만 입력되도록 제약조건 설정(MEMBER_CK_STA)
STATUS CHAR(1) DEFALUT 'N' CONSTRAINT MEMBER_CK_STA CHECK(STATUS IN ('N','Y'))
ENROLL_DATE(가입일) -- 기본값으로 SYSDATE, // NOT NULL 제약조건(MEMBER_NN_EN)
1. ENROLL_DATE DATE DEFAULT SYSDATE
2. CONSTRAINT MEMBER_NN_EN NOT NULL
INSERT INTO TB_MEMBER VALUES
* 테이블 레벨 방식으로 외래키 설정하기 :
CONSTRAINT RENT_MEM FOREIGN KEY(RENT_MEM_NO) REFERRNCES TB_MEMBER ON DELETE SET NULL
'ORACLE SQL' 카테고리의 다른 글
ORACLE SQL DCL/TCL , view (0) | 2024.07.31 |
---|---|
ORACLE SQL JAVA 적용 시키기 (0) | 2024.07.30 |
ORACLE SQL_DML (0) | 2024.07.29 |
ORACLE SQL SEQUENCE (0) | 2024.07.29 |
ORACLE PL/SQL (0) | 2024.07.29 |