@@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 |