테이블 만들기
DDL (DATA DEFINITION Language) : CREATE(생성), DROP(삭제), ALTER(변경) 등
TABLES 생성 : CREATE
형식
CREATE TABLE 테이블명
(
컬럼1 데이터타입(크기),
컬럼2 데이터타입(크기),
.
.
.
)
CREATE TABLE BOARD.BOARD (
IDX NUMBER NOT NULL,
TITLE VARCHAR2(200 BYTE) NOT NULL,
WRITER VARCHAR2(50 BYTE) NOT NULL,
REGDATE VARCHAR2(20 BYTE) NOT NULL,
CONTENT CLOB NOT NULL,
CNT NUMBER DEFAULT 0 NULL
)
CLOB - > 무한정
CNT - > DEFAULT 0 (카운트가 0 부터 시작)
--테이블을 만들때의 형식
- 데이터 타입
문자
1) CHAR : 최대크기 2000 BYTE, 고정길이 문자형 테이터 타입니다.(가장 많이 사용됨)
예) CHAR(10) -> 문자 10자를 저장한다.
2) VACHAR2 : 최대길이 4000 BYTE, 가변길이 문자형 데이터 타입. (가장 많이 사용됨)
예) VARCHAR(10) -> 문자 10자를 저장한다.
--대부분 1,2번 사용
3) NCHAR : 유니코드, UTF 처리 -> 1문자 : 3BYTE 차지
4) NVACHAR2 : 유티코드, UTF처리 -> 1문자 : 3BYTE 차지
--한글이 깨지는 경우,입력이 오류남 3,4 (BYTE의 크기를 잘 안맞춰 놓으면 꺠짐)
숫자
NUMBER(N,M) : 가변 숫자 타입,N : 정수 자리수, M: 소수점 자리수 의미 (가장 많이 사용됨)
최대크기 21 BYTE
날짜
1) DATE : 고정길이 날짜와 시간까지 데이터를 저장할 수 있다.(가장 많이 사용됨)
2) TIMESTAMP : 밀리초까지 정밀한 날짜를 처리한다.
2. 테이블 생성
CREATE TABLE MEMBER (
MEM_NAME VARCHAR2(20),
AGE NUMBER(3),
BIRTH_DATE DATE
)
--회사마다의 네이밍 규칙이 정해져 있다. EX) MNAME, MEM_NAME
;
DROP TABLE MEMBER; :테이블 삭제
--DROP 테이블을 사용한후에는 꼭 주석처리! null(없다), 롤백
;;
테이블 제한사항 만들기 -> MEM_NAME은 반드시 입력해야 한다. (NOT NULL 처리한다.)
입력이 안되면 에러처리(입력(INSERT)이 안되게 만들기)
NOT NULL,CHECK, DEFAULT, UNIQUE
;
2) 유니크(UNIQUE) 처리 : 중복된 값에 입력 제한 (NULL 값 허용) 단일하고 유일한 제약사항
UNIQUE NOT NULL <-권장
;
CREATE TABLE MEMBER (
MEM_ID VARCHAR2(10),
MEM_NAME VARCHAR2(20) NOT NULL,
AGE NUMBER(3),
BIRTH_DATE DATE,
EMAIL VARCHAR2(50) UNIQUE,
CONSTRAINT "MEMBER_PK" PRIMARY KEY(MEM_ID)
)
;
3) 기본키(PRIMARY KEY-> PK) 설정 : UNIQUE 하다. / INDEX가 형성
테이블에서 데이터들을 유일하게 구분(식별)하기 위해 사용
4) CHECK: 입력되는 값을 체크하여 일정한 조건에 해당하는 값만 입력할 수 있도록 제한
CREATE TABLE MEMBER (
MEM_ID VARCHAR2(10),
MEM_NAME VARCHAR2(20) NOT NULL,
AGE NUMBER(3),
BIRTH_DATE DATE,
EMAIL VARCHAR2(50) UNIQUE,
GENDER VARCHAR2(10),
CONSTRAINT "CHECK_GENDER" CHECK(GENDER IN('남자','여자'))
)
-- 잘못 들어오는 데이터를 막을 수 있다.
5) DEFAULT : 기본값 처리 , 디플트로 선언된 컬럼에 값이 입력이 안되면,
디폴트 값이 입력된다.
CREATE TABLE MEMBER (
MEM_ID VARCHAR2(10),
MEM_NAME VARCHAR2(20) NOT NULL,
AGE NUMBER(3),
BIRTH_DATE DATE,
EMAIL VARCHAR2(50) UNIQUE,
GENDER VARCHAR2(10),
JOIN_DATE DATE DEFAULT SYSDATE
판무수량 NUMBER DEFAULT 0
CONSTRAINT "CHECK_GENDER" CHECK(GENDER IN('남자','여자'))
)
--오늘 날짜로 SYSDATE(현재날짜) 로 가입하라 따로 입력은 안하면 지금시각 가입처리
--DEFAULT 날짜는 날짜 숫자는 숫자 타입으로 /NUMBER = 0 / DATE - SYSDATE
6) 테이블 삭제
[형식]
DROP TABLE [스키마명].테이블명
예1) DROP TABLE HR.MEMBER
예2) DROP TABLE HR.MEMBER [CASCADE CONSTRAINTS]
-> 참조 제약조건(FK) 들까지 자동삭제할 때 사용한다.
-> 만약 참조제약조건이 존재하는데 삭제한다면, 오류 발생
테이블 수정
-> 컬럼과 관련된 부분
-- 현장에서는 어려운 작업(컨펌 및 다른 프로젝트팀과 협의)
- 추가
형식)
ALTER TABLE 테이블 이름
ADD 컬럼명 데이터타입 [NOT NULL, DEFAULT, CHECK]
예) MEMBER JOIN_DATE -> 가입일 추가
;
ALTER TABLE MEMBER
ADD JOIN_DATE DATE;
DESC MEMBER;
-- 구조 보는방법
- 수정
형식)
ALTER TABLE 테이블이름
MODIFY 존재하는 컬럼명 [데이터타입변경, 나머지추가]
예)MEMBER 테이블에 EMAIL 컬럼이 VARCHAR2(50) -> VARCHAR2(100) 변경
ALTER TABLE MEMBER
MODIFY EMAIL VARCHAR2(100);
DESC MEMBER;
변경전) EMAIL VARCHAR2(50)
변경후) EMAIL VARCHAR2(100)
- 삭제
형식)
ALTER TABLE 테이블이름
DROP COLUMN 컬럼명
예)MEMBER 테이블에서 JOIN_DATE 컬럼을 삭제하시오
ALTER TABLE MEMBER
DROP COLUMN JOIN_DATE;
삭제전)MEM_ID NOT NULL VARCHAR2(10)
MEM_NAME NOT NULL VARCHAR2(20)
AGE NUMBER(3)
BIRTH_DATE DATE
EMAIL VARCHAR2(100)
JOIN_DATE DATE
삭제후)MEM_ID NOT NULL VARCHAR2(10)
MEM_NAME NOT NULL VARCHAR2(20)
AGE NUMBER(3)
BIRTH_DATE DATE
EMAIL VARCHAR2(100)
제약조건 변경
- 추가
형식)
ALTER TABLE 테이블이름
ADD CONSTRAINT 제약조건의 이름, 제약조건의 형택, 컬럼명
예) MEMBER 테이블에서 BIRTH_DATE를 UNIQUE 추가
ALTER TABLE MEMBER
ADD CONSTRAINT BIRTH_DATE_UK UNIQUE(BIRTH_DATE)
- 삭제
형식) ALTER TABLE 테이블이름
DROP PRIMARY KEY|UNIQUE(컬럼명), CONSTRAINT 제약조건이름
예) MEMBER 테이블에서 BIRTH_DATE UNIQUE 제약조건을 삭제
ALTER TABLE MEMBER
DROP CONSTRAINT BIRTH_DATE_UK;
--MEMBER의 제약조건의 비활성화
-- ENABLED <-활성화 되어 있는 상태
제약조건의 비활성화/활성화
형식)
ALTER TABLE 테이블이름
DISABLE CONSTRAINT 제약조건 이름;
예) MEMBER 테이블에서 MEM_ID PRIMARY KEY 비활성화
현재상태)
MEMBER_PK Primary Key ENABLED
MEMBER_PK Primary Key DISABLED
비활성화
ALTER TABLE MEMBER
DISABLE CONSTRAINT MEMBER_PK;
활성화
ALTER TABLE MEMBER
ENABLE CONSTRAINT MEMBER_PK;
주석처리
형식)
COMMENT ON TABLE 테이블이름| 컬럼 TABLE.컬럼| IS '주석';
예) MEMBER 테이블에 주석 처리
COMMENT ON TABLE MEMBER IS 'MEMBER TABLE';
--한글 안될때 유니코드 /컬럼명에 대한 코멘트를 바꿀때 COLUMN
'IT > Oracle' 카테고리의 다른 글
오라클 9탄 (sequence,view) (0) | 2015.07.24 |
---|---|
오라클 8탄 [데이터 조작어 DML] (0) | 2015.07.23 |
오라클 6탄 (SCOOP) 서브쿼리 (0) | 2015.07.20 |
오라클 함수정리 6탄 1(hr테이블) (0) | 2015.07.19 |
오라클 함수정리 5탄 [JOIN] (0) | 2015.07.18 |