ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 11/29 오라클
    ORACLE 2021. 11. 29. 23:24
    --오토커밋 확인
    SHOW AUTOCOMMIT;
    --오토커밋 온
    SET AUTOCOMMIT ON;
    --오토커밋 오프
    SET AUTOCOMMIT OFF;
    SELECT * FROM emps;
    INSERT INTO emps
    (employee_id, last_name, email, hire_date, job_id)
    VALUES(300,'kim', 'abc@naver.com',sysdate, 1800);
    --보류 중인 모든 데이터 변경사항을 취소(폐기), 직전 커밋 단계로 회귀(돌아가기)
    ROLLBACK;
    COMMIT;
    DELETE FROM emps
    WHERE last_name = 'kim';
    SAVEPOINT delete_kim;
    --세이브포인트 생성
    --롤백할 포인트를 직접 이름을 붙여서 지정할 수 있습니다. (표준 문법이 아니기 때문에 권장은 하지 않습니다.)
    ROLLBACK TO SAVEPOINT delete_kim;
    INSERT INTO emps
    (employee_id, last_name, email, hire_date, job_id)
    VALUES(301,'park', 'park@gmail.com',sysdate, 1800);
    --보류 중인 모든 데이터 변경사항을 영구적으로 적용하면서 트랜잭션을 종료합니다.
    COMMIT;

     

    --NUMBER(2) -> 정수를 2자리까지 저장할 수 있는 숫자형 타입입니다.
    --NUMBER(5,2) -> 정수부, 실수부를 합친 총 자리수 5자리, 소수점 2자리
    --NUMBER -> 괄호를 생략할 시 (38,0)으로 자동 지정됩니다.
    --VARCHAR2(byte) -> 괄호 안에 들어올 문자열의 최대 길이를 지정합니다.
    CREATE TABLE dept2(
    dept_no NUMBER(2),
    dept_name VARCHAR2(14),
    loca VARCHAR2(15),
    dept_date DATE,
    dept_bonus NUMBER(10)
    );
     
    DESC dept2;
    SELECT * FROM dept2;
    --NUMBER타입에 들어가는 자리수를 확인합니다
    INSERT INTO dept3
    VALUES (99, '영업', '서울', sysdate, '200000');
    -- 컬럼 추가
    ALTER TABLE dept2
    ADD (dept_count NUMBER(3));
    --열 이름 변경
    ALTER TABLE dept2
    RENAME COLUMN dept_count TO emp_count;
    SELECT * FROM dept2;
    -- 열 속성 수정
    ALTER TABLE dept2
    MODIFY (emp_count NUMBER(4));
    DESC dept2;
    --열 삭제
    ALTER TABLE dept2
    MODIFY (emp_count NUMBER(4));
    DESC dept2;
    --테이블 이름 수정
    ALTER TABLE dept2
    RENAME TO dept3;
    --테이블 삭제(구조는 남겨두고 내부 데이터만 모두 삭제합니다.)
    TRUNCATE TABLE dept3;
    DROP TABLE dept3;
     
    --테이블 생성과 제약 조건
    --테이블 열레벨 제약조건(PRIMARY KEY, UNIQUE, NOT NULL, FOREIGN KEY)
    --PRIMARY KEY: 테이블 고유 식별 컬럼입니다. (주요 키)
    --UNIQUE: 유일한 값을 갖게 하는 컬럼입니다. (중복값을 방지합니다.)
    --NOT NULL: null을 허용하지 않습니다.
    --FOREIGN KEY: 참조하는 테이블의 PRIMARY KEY를 저장하는 컬럼입니다.
    --CHECK: 정의된 형식만 저장되도록 허용합니다.
     
    CREATE TABLE dept2(
    dept_no NUMBER(2) CONSTRAINT dept2_deptno_pk PRIMARY KEY,
    dept_name VARCHAR2(14) NOT NULL CONSTRAINT dept2_deptname_uk UNIQUE,
    loca NUMBER(4) CONSTRAINT dept2_loca_locid_fk REFERENCES locations(location_id),
    dept_bonus NUMBER(10),
    dept_gender VARCHAR2(1) CONSTRAINT dept2_gender_ck CHECK(dept_gender IN('M','F'))
    );
    --테이블레벨 제약조건 (모든 열 선언 후 제약조건을 추가하는 방식)
    CREATE TABLE dept2(
    dept_no NUMBER(2),
    dept_name VARCHAR2(14) NOT NULL,
    loca NUMBER(4),
    dept_date DATE,
    dept_bonus NUMBER(10),
    dept_gender VARCHAR2(1),
     
    CONSTRAINT dept2_deptno_pk PRIMARY KEY (dept_no),
    CONSTRAINT dept2_deptname_uk UNIQUE (dept_name),
    CONSTRAINT dept2_loca_locid_fk FOREIGN KEY(loca) REFERENCES locations(location_id),
    CONSTRAINT dept2_date
    CONSTRAINT dept2_gender_ck CHECK(dept_gender IN('M','F'))
    );
    SELECT * FROM dept2;
    INSERT INTO dept2
    VALUES(10, 'gg', 4000, sysdate, 100000, 'M');
    --외래키가 부모 테이블에 있다면 INSERT가 가능합니다.
    INSERT INTO dept2
    VALUES (30, 'aa', 1800, sysdate, 100000, 'X');
    SELECT * FROM dept2;
    SELECT * FROM locations
    WHERE location_id = 1800;
    --제약 조건 변경
    -- 제약 조건은 추가, 삭제가 가능합니다. 변경은 안됩니다.
    --변경하려면 삭제하고 새로운 내용으로 추가해야 합니다.
    DROP TABLE dept2;
    CREATE TABLE dept2 (
    dept_no NUMBER(2),
    dept_name VARCHAR2(14),
    loca NUMBER(4),
    dept_date DATE,
    dept_bonus NUMBER(10),
    dept_gender VARCHAR2(1)
    );
    --pk (기본키) 추가
    ALTER TABLE dept2 ADD CONSTRAINT dept_no_pk PRIMARY KEY(dept_no);
    --fk (외부키) 추가
    ALTER TABLE dept2 ADD CONSTRAINT dept_loca_fk FOREIGN KEY (loca)
    REFERENCES locations(location_id);
    --check 추가
    ALTER TABLE dept2 ADD CONSTRAINT dept2_gender_ck CHECK(dept_gender IN('M','F'));
    --UNIQUE 추가
    ALTER TABLE dept2 ADD CONSTRAINT dept2_deptname_uk UNIQUE (dept_name);
    --NOT NULL은 열 수정 형태로 변경합니다.
    ALTER TABLE dept2 MODIFY dept_name VARCHAR2(14) NOT NULL;
    --제약조건 삭제(제약조건 이름으로)
    ALTER TABLE dept2 DROP CONSTRAINT dept_no_pk;
    --제약 조건 확인
    SELECT * FROM user_constraints
    WHERE table_name = 'DEPT2';

     

    'ORACLE' 카테고리의 다른 글

    오라클 PL/SQL 제어문, 반복문, 탈출문  (0) 2021.12.04
    오라클 PL/SQL 진입!  (0) 2021.12.03
    11/26 복습복습 금토일..[3]  (0) 2021.11.28
    11/25 오라클 [2]  (0) 2021.11.25
    11/24 오라클 수업 1일차!  (0) 2021.11.24
Designed by Tistory.