본문 바로가기
CS/Database

[SQL] DML / TCL / DDL / 제약조건 / 시퀀스

by 별토끼. 2017. 6. 19.
반응형


[SQL] DML / TCL / DDL / 제약조건 / 시퀀스



  • DML
  - Data Multipulation Language

  - 테이블 내의 데이터를 입력, 수정, 삭제

  1) Insert : 테이블에 데이터를 저장할 때 사용

 > INSERT INTO EMP(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) VALUES (8000, '최수만', '방장', 7900, SYSDATE, 18, 100, 40 );

  2) UPDATE : 데이터를 수정할 때 사용하는 문장

 > UPDATE member SET addr = '인천' WHERE num = 3 ;

  3) DELETE : 데이터를 삭제할 때 사용하는 문장

 > DELETE FROM member WHERE addr = '강남' ;


  • TCL
  - Transaction Control Language

  - 트랜젝션 : 분리되어서는 안되는 논리적 작업단위

  - TCL의 종류 

* COMMIT : SQL문의 결과를 영구적으로 DB에 반영
* ROLLBACK : SQL문의 실행결과를 취소 할 때
* SAVEPOINT : 트랜젝션의 한지점에 표시하는 임시 저장점

  

 SQL> INSERT INTO member VALUES( 4, 'AAA','BBB');

 SQL>SAVEPOINT myPoint; SQL> INSERT INTO member VALUES( 5, 'bbb','BBB');

 SQL> INSERT INTO member VALUES( 6, 'ccc','BBB');

 SQL>ROLLBACK TO myPoint; SQL>COMMIT ;


  • DDL 
  - Data Definition Language

  - 데이터베이스 내의 객체 등을 생성하고 변경하고 삭제하기 위해 사용되는 sql문

  1) CREATE : 객체를 생성할 때

 >CREATE TABLE test(num NUMBER, name VARCHAR2(20));

  2) ALTER : 객체를 변경할 때


  3) DROP : 객체를 삭제할 때

 SQL>DROP TABLE dept2;

 SQL>DROP TABLE dept3;

 SQL>DROP TABLE dept4;

 SQL>DROP TABLE simple;


  • 제약 조건
  - 테이블의 해당 칼럼에 원하지 않는 데이터를 입력/수정/삭제 되는 것을 방지 하기 위해 테이블 생성 또는 변경시 설정하는 조건.
 
 (1)NOT NULL : NULL 로 입력이 되어서는 안되는 칼럼에 부여하는 조건으로 칼럼 레벨에서 만 부여할수 있는 제약조건이다.  

(2)UNIQUE KEY (유일키) : 저장된 값이 중복되지 않고 오직 유일하게 유지되어야 할때 사용하는 제약조건이다. (NULL 은 허용된다) 

(3)PRIMARY KEY (대표키) : NOT NULL 조건과 UNIQUE KEY 를 합친 조건이다. 

(4)CHECK : 조건에 맞는 데이터만 입력되도록 조건을 부여하는 제약 조건 

(5)FOREIGN KEY (외래키) : 부모 테이블의 PRIMARY KEY 를 참조하는 칼럼에 붙이는 제약조건 이다(예: emp 테이블의 deptno 칼럼) 
  
  • 무결성 제약조건 (PRIMARY KEY)


  • CHECK제약조건 ( CHECK )


  • 부모키가 없는 무결성 제약조건 (REFERENCE)

 - DEPT2에 존재하는 DEPTNO만 EMP2테이블에 넣을 수 있다.


  • SEQUENCE
  : 연속적인 숫자 값을 자동으로 증감 시켜서 값을 리턴하는 객체

  - NEXTVAL : 다음값을 얻어온다.

 >SELECT MY_SEQ.NEXTVAL FROM DUAL;


  - CURRVAL : 현재값을 얻어온다.

 >SELECT MY_SEQ.CURRVAL FROM DUAL;

  - 시퀀스 삭제

 >DROP SEQUENCE 시퀀스명;

  - 사용하고 있는 시퀀스명 조회하기

 >SELECT SEQUENCE_NAME FROM USER_SEQUENCES; 



반응형

댓글