영보의 SystemOut.log

[Oracle] DML / 데이터형 / Oralce 제약조건 본문

Database/Oracle

[Oracle] DML / 데이터형 / Oralce 제약조건

영보로그 2020. 8. 18. 17:25
반응형

# DML 종류와 특징


DML 이름

의미 형식 / 예제
SELECT 데이터 조회
  SELECT * | column1, column2..
  FROM table_name [view_name(view)]
  WHERE 조건문
  GROUP BY 그룹컬럼
  HAVING 그룹 조건
  ORDER BY 컬럼명 ASC|DESC

INSERT 데이터 추가
 1) INSERT INTO table_name VALUES (전체 데이터가 첨부)
 2) INSERT INTO table_name (컬럼명, 컬럼명...)
     VALUES(값, 값 ...)
     => 필요한 데이터만 추가

UPDATE 데이터 수정  
 UPDATE table_name SET WHERE 조건문

DELETE 데이터 삭제   
 DELETE FROM table_name WHERE 조건문


반드시 COMMIT을 사용!! 
자바에서 DML은 AutoCommit

 

 

 

#테이블 생성

속성
형식


기존의 테이블 복사
(CATS)

 CREATE TABLE table_name AS SELECT~~
새롭게 생성

 CREATE TABLE table_name(

   컬럼명 데이터형 [제약조건(여러개 사용이 가능)],

   컬럼명 데이터형 [제약조건(여러개 사용이 가능)],

   컬럼명 데이터형 [제약조건(여러개 사용이 가능)]

   [제약조건 ...] ,

   );

  - 컬럼명 뒤에 첨부 (컬럼 레벨)  NOT NULL, DEFAULT

    → 테이블과 동시에 생성

  -  나중에 첨부 (테이블 레벨) (권장)

     테이블 생성 후에 나중에 생성

 

 

  

 

# 테이블 생성 반드시 필요한 요소

    = 데이터형

    = 제약조건의 종류

    = 같은 데이터베이스(XE)에서는 테이블은 유일값이다   

    = 시작은 문자(영문,한글)로 시작

    = 숫자를 사용이 가능(앞에 사용금지)

    = 테이블 명은 30byte (한글 15자)

       ***영문으로 사용 시 테이블명은 대문자로 저장

    = 특수문자 단어가 두개 이상일 경우에 주로 (_)

    = 키워드는 사용할 수 없다 (SELECT, FROM..)

 

 

 

# 데이터형

 문자저장
> 자바(String으로 매칭)

    CHAR(1~2000byte) : 고정 바이트

      => 글자 수가 동일할 때 주로 설정

           성별 (남자, 여자)

        sex CHAR(4) : 한글 2byte 사용

    VARCHAR2(1~4000byte) : 가변 바이트

      => 일반적으로 사용하는 문자 저장

      name VARCHAR2(34)

    CLOB (4G) : 가변 바이트 

      => 줄거리, 내용..

          story CLOB

숫자 저장


 NUMBER (정수값) : 실제 정수 ==> NUMBER(4)
 NUMBER (정수값, 정수값) : 정수, 실수
 NUMBER => 자리수 14자리

날짜 저장
 DATE : 시스템의 시간
 TIMESTAMP ; DATE 확장 (기록 경주

기타 저장 : 4G  
  BLOB : 동영상, 그림, 사진 => 바이너리로 저장
  BFILE : 동영상, 그림, 사진 => 파일 형태로 저장

 

 

 

- 오라클 ( 데이터베이스) → 정형화된 데이터

 = 사이트에 필요한 데이터만 저장 (제약 조건)

# 제약 조건


조건 이름

의미 형식 / 예제

NOT NULL

  - 데이터와 NULL값을 허용하지 않는다
     반드시 입력값을 추가

 - 컬렴명 데이터형 NOT NULL
 - 컬럼명 데이터형 CONSTRAINT 제약조건명 NOT NULL
     (권장 => 제악조건 수정,삭제가 용이)
 - ADD TABLE 테이블명 MODIFY 컬럼명 CONSTRAINT 제약조건명 NOT NULL
 
  name VARCHAR2(34) NOT NULL

UNIQUE
  - 유일값
  - 중복 없는 데이터 첨부 → NULL값 허
    → 후보키(이메일, 전화번호, 주민번호x)

 
- 컬럼명 데이터형 UNIQUE
 - 컬럼명 데이터형 CONSTRAINT 제약조건명 UNIQUE(컬럼명)
                                            테이블명_컬럼명_uk
 - 컬럼명 데이터형, 
   CONSTRAINT 제약조건명 UNIQUE(컬럼명)
 - 테이블 제작 후에 제약조건 설정
   ALTER TABLE 테이블명 ADD 컬럼명 CONSTRAINT 제약조건명 UNIQUE
   
  email VARCHAR2(200) UNIQUE  

PRIMARY KEY
  UNIQUE + NOT NULL
모든 테이블에 반드시 한 개 이상의 PRIMARY KEY가 존재
  이상현상 방지 (무결성)
  → 수정/삭제 -> 원하지 않는 데이터 적용
- ID, 게시물 번호, 영화 번호


 - 컬럼명 데이터형 PRIMARY KEY
 - 컬럼명 데이터형 CONSTRAINT 제약조건명 PRIMARY KEY(컬럼명)
 - ALTER TABLE 테이블명 ADD 컬럼명 CONSTRAINT 제약조건명 PRIMARY KEY
*** 컬럼 뒤에 생성(컬럼과 동시에 제약조건을 생성)
    → NOT NULL, DEFAULT
*** 컬럼을 다 생성후에 테이블 마지막에 첨부
    → PRIMARY, FOREIGN, CHECK, UNIQUE
***일반적 → 숫자(MAX+1, SEQUENCE(자동증가번호))
    특별한 경우 (ID)
 
  id VARCHAR2(20) PRIMARY KEY 

FOREIGN KEY


외래키
 - 참조 (다른 테이블의 컬럼 값을 참조)
 - 참조하는 테이블의 값을 벗어나면 안된다
 - 게시판, 댓글
 - 정규화 => 테이블을 여러개 만들기 때문에 
 - emp : deptno, dept : deptno : JOIN

 
 - 컬럼명 데이터형 CONSTRAINT 제약조건명
    FOREIGN KEY ( 컬럼명) REFERENCES 참조항 테이블명(
  deptno NUMBER(2) FOREIGN KEY
  REFERENCES dept(deptno)
CHECK
 - 지정된 데이터만 첨부
 - 설정된 값만 입력을 허용하고 나머지는 거부됨
 - 입력시 : 라디오버튼, 콤보박스 사용
 - 장르, 성별, 부서명, 메뉴

 
 - 컬럼명 데이터형 CHECK (컬럼명 IN(10, 20, 30))
 - 컬럼명 데이터형 CONSTRAINT 제약조건명 CHECK(컬렴명 IN(10, 20, 30))
 -  권장사항 (이름부여 => 찾아서 수정, 삭제 가능)


  sex VARCHAR2(4) CHECK(sex IN ('남자', '여자'));
   => 부서명, 직위
DEFAULT
 - 추가가 없는 경우에 자동을 추과되는 값 
 - 저장 값이 없는 경우에 자동으로 설정된 값을 첨부

regada

  regdate DATE DEFAULT SYSDATE
  hit NUMBER DEFAULT 0;

 

 

반응형