[230703] DDL, DML, DCL/데이터 모델 (DAY 4) 구디아카데미후기 IT 국비지원 민경태 강사님

MJ·2023년 7월 4일

수업 TIL🐣💚

목록 보기
4/68

🔸데이터 제어어

🔻DDL

  • 데이터 정의어 (Data Definition Language)
  • DB 객체를 다루는 언어
  • 트랜잭션 대상이 아님 (실행 후에는 작업 취소 불가)
    • 트랜잭션: 반드시 한번에 다 수행해줘야 하는 작업
  • 종류
    1. CREATE : 생성
    2. ALTER : 수정
    3. DROP : 삭제
    4. TRUNCATE : 내용만 삭제, 테이블로 따지면 열은 그대로 두고 행만 삭제

ALTER

  1. 칼럼 추가 : ALTER TABLE 테이블명 ADD 칼럼명 데이터타입 [제약조건]

  2. 칼럼 수정 : ALTER TABLE 테이블명 MODIFY 칼럼명 데이터타입 [제약조건]

  3. 칼럼 삭제 : ALTER TABLE 테이블명 DROP CULUMN 칼럼명

  4. 칼럼 이름 수정 : ALTER TABLE 테이블명 RENAME COLUMN 기존칼럼명 TO 신규칼럼명

  5. 테이블 이름 수정 : ALTER TABLE 테이블명 RENAME TO 신규테이블명

  6. PK/FK 제약조건
    1) PK

    • 추가
      ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 PRIMARY KEY(칼럼명)
    • 삭제
      ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명
      ALTER TABLE 테이블명 DROP PRIMARY KEY

    2) FK

    • 추가
      ALTER TABLE 자식테이블명 ADD CONSTRAINT 제약조건명 FOREIGN KEY(칼럼명) REFERENCES 부모테이블명(참조칼럼명)
    • 삭제
      ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명
    • 일시중지
      ALTER TABLE 테이블명 DISABLE CONSTRAINT 제약조건명
    • 활성화
      ALTER TABLE 테이블명 ENABLE CONSTRAINT 제약조건명

🔻DML

  • 데이터 조작어 (Data Manipulation Language)
  • 데이터(행, row)를 조작(삽입, 수정, 삭제)하는 언어
  • 트랜잭션 대상 (작업 완료 시 COMMIT, 취소 시 ROLLBACK)
    • COMMIT : 작업을 저장, COMMIT 완료되면 ROLLBACK으로 취소 불가
    • ROLLBACK : 작업을 취소, COMMIT 이후 작업을 취소하는 것
  • 종류
  1. 행 삽입 : INSERT INTO VALUES
  2. 행 수정 : UPDATE SET WHERE
  3. 행 삭제 : DELETE FROM WHERE

SEQUENCE

: 순차 증가하는 일련번호를 생성하는 DB 객체

  • CREATE문을 이용해 시퀀스 생성 가능
  • 시퀀스 이용해서 번호 생성한 뒤 INSERT문으로 삽입
CREATE SEQUENCE DEPT_SEQ -- (전부 디폴트값으로 적음)
    INCREMENT BY 1 -- 1식 증가하는 번호 생성
    START WITH 1 -- 1부터 번호를 만듦
    NOMAXVALUE -- 번호의 상한선 없음
    NOMINVALUE -- 번호의 하한선 없음
    NOCYCLE -- 상한선, 하한선 다음번호는 한바퀴 돌아서(번호 순환 없음), 상한 하한 정했을 때 함께 쓰는 옵션
    CACHE 20 -- 한번에 20개씩 번호를 미리 만들어 둠
    NOORDER; -- 번호를 순서없이 사용 
    -- 번호를 순서대로 사용하는 ORDER 옵션으로 바꿔서 시퀀스 생성함
; 

-- 부서번호 생성 시퀀스
DROP SEQUENCE DEPT_SEQ;
CREATE SEQUENCE DEPT_SEQ ORDER; -- 나머지는 생략해서 디폴트값으로 써도 시퀀스 작업 가능

-- 부서 데이터 입력
INSERT INTO DEPARTMENT_T(DEPT_NO, DEPT_NAME, LOCATION) VALUES(DEPT_SEQ.NEXTVAL, '영업부', '대구');
INSERT INTO DEPARTMENT_T(DEPT_NO, DEPT_NAME, LOCATION) VALUES(DEPT_SEQ.NEXTVAL, '인사부', '서울');
INSERT INTO DEPARTMENT_T(DEPT_NO, DEPT_NAME, LOCATION) VALUES(DEPT_SEQ.NEXTVAL, '총무부', '대구');
INSERT INTO DEPARTMENT_T(DEPT_NO, DEPT_NAME, LOCATION) VALUES(DEPT_SEQ.NEXTVAL, '기획부', '서울');
  • CACHE 설정 시 시퀀스 번호가 안 맞을 수 있으므로 NOCACHE 권장

UPDATE

UPDATE 테이블
SET 업데이트할내용(칼럼 = 값), 업데이트할 내용, ...
WHERE 조건식

  • WHERE 생략 시 전체 행 수정
-- 부서번호(DEPT_NO)가 3인 부서의 지역을 '인천'으로 변경하시오
UPDATE DEPARTMENT_T
   SET LOCATION = '인천' --SET절의 등호(=)는 대입연산자
 WHERE DEPT_NO = 3; -- WHERE절의 등호(=)는 동등비교연산자

DELETE

DELETE
FROM 테이블명
WHERE 조건식

  • WHERE 생략 시 전체 행 삭제

🔻DCL

  • GRANT, REVOKE

🔸데이터 모델


  • P : 기본키
  • F : 외래키
  • 빨간점 : NOT NULL
  • 실선 : 외래키 NOT NULL
  • 점선 : 외래키 NULL
  • 화살표에 : ON DELETE SET NULL
  • 화살표에 엑스 : ON DELETE CASCADE
  • : 1:M에서 M쪽, 화살표 가리키는 쪽이 1쪽
  • 마름모 : 관계, CONSTRAINT로 적어줬을 때 생김, 바로 PK, FK 지정하면 안 생김


🟢 구디아카데미후기 IT국비지원 민경태 강사님 수업 4일차! 🟢
이론적으로만 배웠다면 구현으로 넘어갔을 때 생각대로 적용하지 못해서 많이 고생했을 것 같은데 이렇게 실습을 통해 차근차근 배우니 비로소 제대로 알아가고 있는 듯한 기분이 들어 좋다.😄

0개의 댓글