코락 CoRock
코딩하는 락스타
코락 CoRock
  • 분류 전체보기 (394)
    • frameworks (19)
      • spring (19)
      • spring-boot (0)
      • testing (0)
    • languages (94)
      • java (39)
      • kotlin (0)
      • python (42)
      • r (13)
    • libraries (0)
    • programming (239)
      • android (13)
      • c (17)
      • cpp (22)
      • database (18)
      • design-pattern (4)
      • data-structures (11)
      • git (8)
      • hadoop (6)
      • html-css (7)
      • issue (4)
      • javascript (26)
      • jsp (34)
      • os (29)
      • php (6)
      • preferences (19)
      • etc (15)
    • discography (37)
      • k-pop (18)
      • pop (19)
    • blog (4)

블로그 메뉴

  • Programming
  • Java
  • JavaScript
  • Discography
  • K-Pop Songs
  • Pop Songs
  • Blog
  • Guestbook

공지사항

인기 글

태그

  • Java
  • python
  • CentOS
  • jsp
  • oracle
  • javascript
  • Android
  • 파이썬
  • r
  • 자바스크립트
  • linux
  • Spring

최근 댓글

최근 글

티스토리

반응형
hELLO · Designed By 정상우.
코락 CoRock

코딩하는 락스타

programming/database

[Oracle] 테이블과 제약조건

2018. 8. 20. 01:59
반응형


7. 테이블과 제약조건


7.1 테이블


7.1.1 테이블 생성


-- number 최대 38자리, number(전체자리수, 소수이하자리수)

CREATE TABLE T_Emp (

id                NUMBER(5) NOT NULL,

name           VARCHAR2(25),

salary           NUMBER(7, 2),

phone          VARCHAR2(15),

dept_name    VARCHAR2(25)

);


7.1.2 테이블명 수정하기: rename ~ to ~


RENAME T_Emp TO S_Emp;


7.1.3 테이블에 데이터 입력


INSERT INTO S_Emp VALUES (100, '이상헌', 2000, '010-2222-3333', '개발부');

INSERT INTO S_Emp VALUES (101, '최순철', 3000, '010-3333-4444', '총무부');

INSERT INTO S_Emp VALUES (102, '장혜숙', 4000, '010-4444-5555', '영업부');


7.1.4 테이블에 컬럼 추가 : hire_date, date형


ALTER TABLE S_Emp ADD (hire_date DATE);


7.1.5 컬럼 수정 : phone의 varchar2(15) → varchar2(20)


ALTER TABLE S_Emp MODIFY ( phone VARCHAR2(20) );


7.1.6 컬럼의 이름 수정


ALTER TABLE S_Emp RENAME COLUMN id TO t_id;


7.1.7 컬럼의 삭제 : dept_name 삭제


ALTER TABLE S_Emp DROP COLUMN dept_name;


7.1.8 테이블의 데이터 조작 : insert, update, delete


7.1.8.1 기존의 row에 있는 hire_date에 값 입력하기


UPDATE S_Emp SET hire_date = SYSDATE WHERE t_id = 100;

UPDATE S_Emp SET hire_date = SYSDATE WHERE t_id = 200;

UPDATE S_Emp SET hire_date = SYSDATE WHERE t_id = 300;


7.1.8.2 새로운 데이터를 새로운 row에 입력하기


INSERT INTO S_Emp (t_id, hire_date) VALUES (400, SYSDATE);


7.1.8.3 테이블의 row 삭제하기 : delete


DELETE FROM S_Emp WHERE t_id = 200;


7.1.9 (문제) S_Emp 테이블에 대하여


7.1.9.1 e-mail을 관리하기 위한 mailid 컬럼을 10byte로 추가하시오.

7.1.9.2 mailid 컬럼을 20byte로 수정하시오.

7.1.9.3 mailid 컬럼명을 e_mail로 수정하시오.

7.1.9.4 s_emp 테이블명을 t_emp로 변경하시오.


7.2 제약조건(constraint)


7.2.1 정의

테이블의 해당 컬럼에 원치않는 데이터가 입력/변경/삭제되는 것을 방지하기 위해 테이블 생성 시 또는 변경시 설정하는 조건


7.2.2 종류

primary key, foreign key, unique, check, not null


7.2.3 제약조건을 반영한 테이블 생성하기


create table c_emp(

id number(5) constraint c_emp_id_pk primary key,

name varchar2(25) constraint c_emp_name_nn not null,

salary number(7, 2),

phone varchar2(15) constraint c_emp_phone_ck

check(phone like '3429-%'),

dept_id number(7) constraint c_emp_dept_id_fk

references dept(deptno)

);


7.2.4 제약조건 이름 검색하기


SELECT constraint_name FROM User_Constraints;


7.2.5 제약조건은 수정할 수 없고 삭제만 가능함


ALTER TABLE C_Emp DROP CONSTRAINT c_emp_name_nn;


7.2.6 제약조건 추가하기


ALTER TABLE C_Emp ADD CONSTRAINT c_emp_name_un UNIQUE(name);


-- not null 제약조건은 add로 할 수 없고 modify로 가능

ALTER TABLE C_Emp MODIFY (name VARCHAR2(25) CONSTRAINT c_emp_name_nn NOT NULL);


7.2.7 제약조건 활성화/비활성화


ALTER TABLE C_Emp DISABLE CONSTRAINT c_emp_name_nn;

ALTER TABLE C_Emp ENABLE CONSTRAINT c_emp_name_nn;

비활성화했던 것을 다시 활성화시킬 때 기존에 입력된 중복자료를 삭제해야 함


7.2.8 제약조건의 삭제


ALTER TABLE C_Emp DROP CONSTRAINT c_emp_name_nn;


7.2.9 제약조건 실습소스



반응형
저작자표시 비영리 변경금지
    'programming/database' 카테고리의 다른 글
    • [Oracle] 고급함수
    • [Oracle] View, Index, Sequence
    • [Oracle] 서브쿼리
    • [Oracle] 트랜잭션과 그룹쿼리
    코락 CoRock
    코락 CoRock
    A COder dreaming of being a ROCKstar

    티스토리툴바