<이공계전문기술연수> 4. DB (DDL / DML / DCL)

2019. 9. 3. 13:39· 이공계전문기술연수/Database

@@DDL
-> 데이터 정의 언어
-> 객체(OBJECT)를 만들고(CREATE), 수정하고(ALTER), 삭제(DROP)하는 구문

 


@ 오라클 객체 종류
-> 테이블, 뷰, 시퀀스, 인덱스, 패키지, 프로시져, 함수, 트리거, 동의어, 사용자 

@ CREATE - 테이블 만들기
CREATE TABLE 테이블명(컬럼명 자료형(크기), 컬러명 자료형(크기));

@ 제약조건(constraints)
-> 테이블 작성 시 각 칼럼에 대한 기록에 대해 제약조건을 설정 할 수 있음
-> 데이터 무결성을 지키기 위해 제한된 조건 

회원
ID - NOT NULL
PW
NAME
ADDRESS

NOT NULL : 데이터에 NULL을 허용 하지 않음(빈값 허용X)
UNIQUE : 중복된 값을 허용하지 않음
PRIMARY KEY(기본키) : NOT NULL + UNIQUE
고유식별자로 사용하기 위함
FOREIGN KEY(외래키) : 두 테이블의 데이터 간 연결을 설정하고 강제적용하여 외래 키 테이블 
저장 될 수 있는 데이터를 제어

-> 회원전용 게시판 -> 글을쓸수 있는사람은 홈페이지 회원가입이 되있는사람
-> 작성자 컬럼은 회원테이블에 있는 아이디만 들어 올 수 있게

CHECK : 저장 가능한 데이터 값의 범위나 조건을 지정하여 설정한 값만 허용함
-> 성별 : 남자, 여자, 남, 여, M, F

@primary key
-> 테이블에서 한 행의 정보를 구분하기 위한 고유식별자역할
-> not null, unique의 의미를 둘 다 가지고 있음
-> 한 테이블당 한개만 설정 가능

-회원테이블, 게시판, 회원탈퇴 -> 게시판 글 때문에 탈퇴가 정상적으로 수행되지 않는상황이 발생 할 수 있음!!!

 

@@외래키 삭제 옵션

ON DELETE RESTRICTED -> 부모테이블의 데이터 삭제 시 자식테이블에서 해당 값을
삭제하는 경우 삭제 불가(DEFAULT설정)

ON DELETE SET NULL -> 부모테이블의 데이터 삭제 시 자식 테이블에서 해당 값을 사용하는 경우
자식테이블의 값을 NULL변경

ON DELETE CASCADE -> 부모테이블의 데이터 삭제 시 자식 테이블에서 해당 값을 사용하는 경우
자식테이블의 해당 행을 같이 삭제

 

 

@@ DML


@ INSERT
-> 새로운 행을 테이블에 추가하는 구문
-> iNSERT 사용시마다 테이블의 행의 갯수가 증가

사용구문
1. INSERT INTO 테이블명 VALUES(컬럼1값, 컬럼2값,...)
2, INSERT INTO 테이블명 (컬럼1 이름, 컬럼2이름) VALUES(컬럼1값, 컬럼2값)

@UPDATE

->테이블에 기록된 컬럼의 값을 수정하는 구문
-> 업데이트 후 테이블의 행의 갯수 변화 없음

사용구문
UPDATE 테이블명 SET 컬럼명 = 변경값, 컬럼명 = 변경값 WHERE 조건

서브쿼리 사용가능!!!!

@DELETE
-> 테이블의 행을 삭제하는 구문
-> 테이블의 행의 수가 줄어듬
-> 조건절을 사용하지 않는 경우 테이블 전체데이터 삭제 될 수 있음

 

사용구문
DELETE FROM 테이블명 WHERE 조건

@ TRUNCATE 
-> TRUNCATE TABLE 테이블명;
-> 테이블 전체 행을 삭제
-> 테이블 초기화
-> DELETE FROM 테이블명; 과 무엇이 다를까????
------> ROLLBACK 을 통한 복구가 안됨
-> DELETE문보다 수행속도 빠름
-> 외래키 사용시에 삭제 되지 않음 (DELETE와 같음)

@ALTER
-> 테이블에 정의된 내용을 수정 할 때 사용하는 데이터 정의어
-> 컬럼의 추가/삭제, 제약조건 추가/삭제, 자료형 변경...

@DROP
-> 테이블 삭제시 사용하는 정의어


@@DCL
->데이터 제어어
->DB에 대한 보안, 무결성, 복구 등 DBMS를 제어하기 위한 언어
-> GRANT(권한할당), REVOKE(권한해제), COMMIT(실행), ROLLBACK(복구)
-> COMMIT, ROLLBACK은 트랜잭션 제어어로 TCL 로 따로 분류하기도 함

@GRANT
-> 사용자 또는 ROLE에 대하여 권한을 부여
ROLE -> 권한들 모아 놓은 OBJECT

@TCL(Transaction Control Language)
-> 트랜젝션 제어어
-> COMMIT , ROLLBACK

@트랜잭션
-> 한꺼번에 수행되어야 할 최소의 작업단위
-> 하나의 트랜잭션으로 이루어진 작업들은 반드시 한꺼번에 완료되어야 하며,
그렇지 않은 경우 한꺼번에 취소가 되어야 함!

ex) ATM
1. 카드 삽입
2. 인출메뉴 선택
3. 잔여금액확인, 비밀번호
4. 계좌에서 돈이 인출
================================================ATM 기기 전원고장
5. 실제 현금으로 인출
6. 완료

COMMIT : 트랜잭션 작업이 정상완료되면 변경 내용을 저장
ROLLBACK : 트랜잭션 작업을 모두 취소하고 최근 COMMIT 지점으로 이동
SAVEPOINT <SP이름> : 현재 트랜잭션 작업 시점에 이름을 지정
   : 하나의 트랜잭션 안에서 구역을 나눌 수 있음
ROLLBACK TO <SP이름> : 트랜잭션 작업을 취소하고 SAVEPOINT 시점으로 이동


@ROLE
-> SELECT , INSERT
-> GRANT CONNECT, RESOURCE TO KH;

CONNECT : 사용자가 데이터베이스에 접속 가능 하도록 하기위한 권한이 있는 ROLE
RESOURCE : 사용자가 객체를 생성하고 관리하기 위한 시스템 권한이 제공되는 ROLE
DBA : 시스템 자원을 무제한적으로 사용 가능하며 시스템 관리를 하기위한 모든 권한 ROLE


@데이터 딕셔너리(DATA DICTIONARY)
-> 자원을 효율적으로 관리하기 위한 다양한 정보를 저장하는 시스템 테이블
-> 사용자가 테이블을 생성하거나 사용자를 변경하는 등의 작업을 할 때 데이터베이스 서버에 의해 자동으로

갱신되는 테이블
-> 사용자는 데이터 딕셔너리의 내용을 직접 수정하거나 삭제 할 수 없음
-> 데이터 딕셔너리 안에는 중요정보가 많기 때문에 사용자는 이를 활용하기 위해 데이터 딕셔너리 뷰를 사용함!

VIEW : 원본테이블을 커스터마이징해서 보여주는 원본테이블의 가성의 TABLE 객체

1. DBA_XXXXX : 데이터베이스 관리자만 접근이 가능한 객체 등의 정보를 조회
 -> DBA는 모든 접근이 가능하므로 결국 DB에 있는 모든 객체에 대해 조회가 가능
2. ALL_XXXXX : 자신의 계정이 소유하거나 권한을 부여받은 객체 등에 관한 정보를 조회
3. USER_XXXX : 자신의 계정이 소유한 객체 등에 관한 정보를 조회

@VIEW
-> 하나 이상의 테이블에서 원하는 데이터를 선택하여 새로운 가상테이블을 만들어 주는것
-> 다른 테이블에 있는 데이터를 보여줄 뿐이며, 데이터 자체를 포함하고 있지 않음
- 저장장치 내에 물리적으로 존재하지 않으며 가상테이블로 만들어짐
- 물리적인 실제 테이블과의 링크개념
-> 특정 사용자가 원본 테이블에 접근하여 모든 데이터를 보게 하는것을 방지 할 수 있음
-> 원본테이블의 데이터를 수정하면 VIEW의 데이터도 같이 수정(가장 큰 장점)
(원본데이터까지 수정 됨 (COPY)와 차이 (링크개념))


-DML(INSERT, UPDATE, DELETE) 명령어로 조작이 불가능 한 경우
1. 뷰 정의에 포함되지 않은 컬럼을 조작하는 경우
2. 산술계산이 적용 된 경우
3. JOIN을 이용해 여러테이블을 연결한 경우
4. DINSTINT 포함한 경우
5. 그룹함수나 GROUP BY 절을 포함한 경우


CREATE OR REPLACE
-> 생성하는 뷰가 존재하지 않으면 새로 생성, 이미 존재하면 뷰를 갱신


@ SEQUENCE
-> 순차적으로 정수 값을 자동으로 생성하는 객체
-> 자동 번호 발생기 역할

-> CREATE SEQUENCE 시퀀스이름
1. START WITH 숫자
   ->시작번호 지정(기본1)


2. INCREMENT BY 숫자
->다음 값에 대한 증가치(기본1)


3. MAXVALUE 숫자
->발생시킬 최대값 지정(10^27 -1 까지 가능)   


4. MINVALUE 숫자
->발생시킬 최소값 지정(-10^26 까지)


5. CYCLE / NOCYCLE
-> SEQUENCE 가 최댓값 까지 증가하고 난 뒤
CYCLE은 START WITH 설정값부터 다시 발생
NOCYCLE 에러발생


6. CACHE / NOCACHE
-> 메모리 상에서 시퀀스 값을 관리, NOCACHE 사용   
회원번호
글번호
.
.
.

'이공계전문기술연수 > Database' 카테고리의 다른 글

<이공계전문기술연수> 6. DB (INDEX , DECLARE)  (0) 2019.09.05
<이공계전문기술연수> 5. DB 실습  (0) 2019.09.04
<이공계전문기술연수> 3. DB 그룹 함수  (0) 2019.09.02
<이공계전문기술연수> 2. DB 단일 행 함수  (0) 2019.09.01
<이공계전문기술연수> 1. DataBase / SQL  (0) 2019.09.01
'이공계전문기술연수/Database' 카테고리의 다른 글
  • <이공계전문기술연수> 6. DB (INDEX , DECLARE)
  • <이공계전문기술연수> 5. DB 실습
  • <이공계전문기술연수> 3. DB 그룹 함수
  • <이공계전문기술연수> 2. DB 단일 행 함수
임쟌
임쟌
임쟌
Jian's Blog
임쟌
전체
오늘
어제

공지사항

  • [자기소개]
  • 쟌's Blog (227)
    • Language (32)
      • Python (8)
      • Go (24)
      • Java (0)
    • Framework (10)
      • Django (9)
      • Gin (1)
      • Spring boot (0)
      • Fiber (0)
    • Database (10)
      • PostgreSQL (8)
      • MySQL (0)
      • Redis (2)
    • Server (51)
      • Linux (16)
      • Git (12)
      • Oracle Cloud Infrastructure (13)
      • Mac (4)
      • Docker (4)
      • RabbitMQ (0)
      • ETC (2)
    • Operating System (0)
      • OS (0)
    • Algorithm (22)
      • Go (22)
      • Python (0)
    • Exam Certification (4)
    • Daily Life (27)
      • Review (21)
      • Diary (6)
    • 이공계전문기술연수 (71)
      • Java (17)
      • Database (8)
      • HTML | CSS (13)
      • JavaScript | jQuery (6)
      • Servlet | JSP (16)
      • Spring Framework (11)

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
임쟌
<이공계전문기술연수> 4. DB (DDL / DML / DCL)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.