boyeon

5강 - UPDATE / DELETE / KEY / 에러 / 트랜잭션 / DDL vs OBJECT / 데이터 타입 / CREATE / 정규형 본문

...

5강 - UPDATE / DELETE / KEY / 에러 / 트랜잭션 / DDL vs OBJECT / 데이터 타입 / CREATE / 정규형

bo_yeon 2019. 1. 23. 15:50
 
  1. UPDATE

a.데이터 값 수정

b.UPDATE 테이블명 SET 컬럼명=값, 컬럼명=값... WHERE 조건절;

c.’WHERE 조건절’을 안주면 컬럼의 모든 값이 바뀐다.

 

  1. DELETE

a.데이터 값 삭제

b.DELETE FROM 테이블명 WHERE 조건절;

c.’WHERE 조건절’ 안주면 모든 데이터 값 삭제

 

  1. KEY

a. PRIMARY KEY = NULL도 안되고 겹치면 안됨

b. UNIQUE KEY = NULL은 되고 겹치면 안됨

c. CHECK KEY = 조건을 정하기(EX,나이>=20)

d. NOT NULL KEY

e. FOREIGN KEY

f.  DEFAULT KEY

 

  1. 에러가 발생하는 경우(CONSTRAINTS / 제약)

** SELECT *FROM USER_CONSTRAINTS WHERE TABLE_NAME=’테이블명’;

    => 제약조건 검색

a. INSERT에러 = PRIMARY의 값이 겹침

                        = ‘무결성 제약조건(제약조건명)에 위배됩니다’

b. UPDATE에러 = 외래키를 바꿀때 부모키가 존재하지 않은 값으로 바꿀때

                         = ‘부모키가 없습니다’

c. DELETE에러 = 외래키에 의해 참조되고 있는 키를 삭제할때

                         = ‘자식 레코드가 발견되었습니다’

 

  1. TRANSACTION = 논리적인 '작업'의 단위

a.DML문장 시작시 '자동'으로 시작

b.INSERT,UPDATE,DELETE

   => COMMIT,ROLLBACK 둥 중 하나를 정의해야 한다.

c.CREATE,ALTER,DROP,EXIT

   => 오토커밋

 

  1. DDL

a.CREATE

b.ALTER

c.DROP

 

  1. OBJECT

a.TABLE

b.INDEX

c.SYNONYM

d.SEQUENCE

e.VIEW

 

  1. TABLE의 DATA TYPE

a.CHAR = 문자(고정길이)

  = 더빠르기 때문에 'WHERE절에 쓸 컬럼은 대부분 CHAR로

b.VARCHAR2 = 문자(가변길이)

= 체이닝(단편화) 현상 나타남

** 체이닝 현상 = 하나의 문자열이 포인터로 이어지는데 멀리 떨어져 있는 공간에 저장

c.NUMBER(P,S) = 숫자(가변길이)

   = EX)NUMBER(6.2) -> XXXX.XX

d.DATA = 날짜(고정길이, 7BYTE)

e.LONG = 문자(가변길이, 2GB)

 

  1. DDL - CREATE

a.CREATE TABLE 테이블명(

컬럼명1 TYPE PRIMARY KEY,

컬럼명2 TYPE

   );

b.테이블 복사 - CREATE TABLE 새로운테이블명(새로운 컬럼명)

                        AS

SELECT 복사할 컬럼명 FROM 복사할 테이블명 WHERE 조건절;

** 제약조건은 복사되지 않는다

c.테이블 구조만 변경 - CREATE TABLE  테이블명

 AS

 SELECT문

 WHERE 0=1;  => 거짓으로 조건주기

d.테이블명 이름 제약조건 - 영문자로 시작

      - 영문자,숫자 사용가능

      - 특수문자는 _,$,#만 가능

      - 이름은 중복 허용안함

      - 컬럼명은 테이블명과 틀려야 한다

      - 예약어 사용불가(파란색의 오라클 문법)

 

  1. 정규형

a.제3정규형(쪼갤수 있을때까지 쪼깨기) + 제약조건 = 좋은 테이블

b.오로지 외래키만 가지면 안된다(자기자신만의 데이터도 있어야 한다)

  => 쪼갰다가 합치기(역정규화)

 

  1. 제약조건 이름

 

a.’테이블이름_컬럼이름_제약조건이름’ 으로 직접 설정