PlayData 백엔드 부트캠프 정리

PlayData 백엔드 부트캠프 Start 14일차

효건 2024. 8. 28. 00:01

1. 트랜젝션

  • 오토커밋
SHOW AUTOCOMMIT  // 오토 커밋 활성화 여부를 확인

SET AUTOCOMMIT  // 오토 커밋 활성화

SET AUTOCOMMIT  // 오토 커밋 비활성화
  • 롤백
    • 롤백은 데이터에 수정 변경 을 취소 하는 것으로 변경사항을 취소하는 것입니다.
    • 사실 우리가 명령어로 INSERT, DELETE 등을 하는것은 데이터를 바로 삽입 삭제하는 것이 아니라 그냥 보여주는 것이라 실제로 삭제 삽입된것이 아닙니다. 따라서 git 처럼 COMMIT을 해줘야 합니다.
ROLLBACK;
  • 커밋
    • 롤백할수없는 상태로 만드는 것을 말합니다.
      다시말해 상급자 결재완료 상태 --> 이거 사실상 말못하죠...ㅠㅠ
    • 커밋후 되돌리기 불가능
COMMIT;
  • 세이브 포인트 (오라클에서만 지원)
    • 롤백할 포인트를 직접 이름을 붙여서 지정합니다, 
    • 이는 ANSI 표준이 아닙니다. 따라서 권장하지 는 않습니다.
SAVEPOINT 0000;


2. 테이블 생성 

  • 명령어 정리
    • NUMBER(n): n 번쨰 자리까지 저장 가능
    • NUMBER(a,b) : 실수부 a자리까지 , 소수부 b까지 저장가능( 단, 가로가 없다면 (38,0)으로 기입)
    • VARCHAR2(byte) 괄호안은 문장려의 최대길이 
    • CLOB : 대용량 텍스트 데이터 타입
    • BLOB : 이진형 대용량 객체  but 이미지와 같이 용량이 큰 것은 따로 컴퓨터에 저장한다고 합니다.
                                                        사유: 데이터베이스 비쌈 ㅠㅠ
    • DATE : 연,월,일,시,분,초 저장 가능
  • 칼럼명 추가, 삭제, 속성변경 
--컬럼 추가
ALTER TABLE 0000
ADD 0000 NUMBER(3);
---------------------------------------------------
--칼럼명 변경
ALTER TABLE 0000
RENAME COLUMN 0000 TO OOOO;
---------------------------------------------------
칼럼의 속성 변경 --> 칼럼 데이터가 이이 존재한다면, 
그에 맞는 타입으로 변경해야 합니다.
ALTER TABLE 0000
MODIFY 0000 VARCHAR2(10);
---------------------------------------------------
--칼럼 삭제
ALTER TABLE dept2
DROP COLUMN dept_bonus;
SELECT *FROM dept3;
  • 테이블 이름 변경 삭제 
--테이블 이름 변경
ALTER TABLE dept2
RENAME TO dept3;
---------------------------------------------------
-- 테이블 삭제 (구조는 남겨두고 내부 데이터만 모두 삭제)
TRUNCATE TABLE dept3;
---------------------------------------------------
--테이블 완전 삭제
DROP TABLE dept3;



3.테이블 생성의 제약조건 

  • 칼럼 열 레벨 제약조건의 종류 
    • PRIMARY KEY : 테이블  고유 식별 칼럼 -> 떄에 따라 2개가 될수도 있습니다
    • UNIQUE : 유일한 값을 가지도록 합니다 -> 중복방지
    • NOT NULL : NULL 허용방지 -> 필수로 포함되어야 한다고 합니다.
      • 저번에 실습간 INSERT하려고 하는데 안되는 경우가 이 경우 입니다.
    • FOREIGN KEY : 참조하는 테이블의 PRIMARY KEY
    • CHECK : 정의된 형식만 저장되도록 허용하빈다.
  • 칼럼 레벨 제약조건 사용법
    • 제약조건 식별자는 생략이 가능합니다  사유: 오라클에서 자동으로 만들어 줘요 ㅎㅎ
CREATE TABLE 0000(
    0000 NUMBER(2),
    0000 VARCHAR2(14) NOT NULL,
    0000 NUMBER(4),
    0000 NUMBER(10),
    0000 VARCHAR2(1),
 ------------------------------------------------   
    CONSTRAINT 0000(생략가능) PRIMARY KEY(dept_no), 
    CONSTRAINT 0000(생략가능) UNIQUE(dept_name),
    CONSTRAINT 0000(생략가능) FOREIGN KEY(loca) REFERENCES 0000(정확한 명시 PRIMARY KEY가져올것),
    CONSTRAINT 0000(생략가능) CHECK(dept_bonus > 10000),
    CONSTRAINT 0000(생략가능) CHECK(dept_gender IN('M', 'F'))
);

 

  • 테이블 레벨 제약조건 사용법
    • 열을 다 선언한 후에 조건을 달아주는것 사실상 칼럼레벨 제약조건이랑 다른것이 별로 없음.....
CREATE TABLE 0000(
    0000 NUMBER(2),
    0000 VARCHAR2(14) NOT NULL,
    0000 NUMBER(4),
    0000 NUMBER(10),
    0000 VARCHAR2(1)
    );
-- pk 추가 
ALTER TABLE 0000
ADD CONSTRAINT 0000 PRIMARY KEY0000, 
-- UNIQUE 추가 
ALTER TABLE 0000
ADD CONSTRAINT 0000 UNIQUE0000,
-- FK 추가 
ALTER TABLE 0000
ADD CONSTRAINT 0000 REFERENCES 0000,
-- CHECK 추가 
ALTER TABLE 0000
ADD CONSTRAINT 0000 CHECK(dept_bonus > 10000),
ADD CONSTRAINT 0000 CHECK(dept_gender IN('M', 'F'))

--NOT NULL은 열 수정 형태로 변경합니다. 특이케이스임.
ALTER TABLE 0000
MODIFY 0000 NUMBER(10) NOT NULL;

--제약 조건 확인
SELECT *FROM user_constraints
WHERE table_name = '0000';

--제약조건 삭제(제약조건의 이름으로 -> 이름을 직접 짓지 않았다면 오라클이 부여한 이름제시)
ALTER TABLE 0000 DROP CONSTRAINT (제약조건명);

 

3. VIEW

  • 뷰는 제한적인 자료만 보기위해 사용하는 가상 테이블 개념입니다. 따라서 테이블의 명령어를 따라갑니다.
  • 가상의 테이블을 잠깐 불러온다의 개념 떄문에 JAVA의 객체와 비슷해보이나 다른 개념입니다. 
  • 웬만하면 조회용도로만 사용합시다.--> INSERT와 같은 키워드로 원본파일을 훼손할 수 있습니다.  
  • 단순뷰
CREATE VIEW 뷰이름 AS (
SELECT

	표시하는 것이 필요한 ROW 열 (칼럼)
    
FROM 원본테이블 
WHERE 조건문
);
  • 복합뷰 : 위의 단순뷰를 표현 함에 있어서 여러가지 테이블에서 가저오고 싶을떄 조인을 통해서 뷰를 다시 만드는 것을 복합뷰라고 합니다. 
  • CREATE OR REPLACE VIEW 구문을 이용하게되면 제시한 칼럼이 없다면 새로 만들고 있다면 수정하는 조회어 입니다.
  • 뷰도 테이블이므로DROP 명령어를 사용하어 삭제할수있습니다.
  • WITH CHECK OPTION CONSTRAINT 조건 칼럼을 통해 뷰를 통해 수정할수 없도록제한합니다.--> 사고방지
  •   WITH READ ONLY; 읽기 전용 뷰를 만듭니다.

 

4. 시퀀스

-> 오라클에서만 가용가능하다. 따라서 이런게 있구나 인지만할것

CREATE SEQUENCE test_seq
    START WITH 1  -- 시작값 (기본값은 증가할떄 최솟값, 감소할때 최댓값)
    INCREMENT BY 1 -- 증가값(양수면 증가, 음수면 감소, 기본값 1)
    MAXVALUE 10 -- 최댓값 (기본값은 증가일떄 1027, 감소일때는 -1)
    MINVALUE 1 -- 최솟값 ( 기본값은 증가일떄 1감소일때 -1028)
    NOCACHE -- 캐시 메모리 사용 여부 (CACHE) 
    NOCYCLE;  -- 순환 여부 (NOCYCLE이 기본, 순환시킬거면 CYCLE ) --> primary key를 만들기 위해서 사용함.

5. 계정 권한

개인 프로젝트를 할떄는 사실상 필요없는 방법이나 개발자에게 팀 프로젝트는 필수입니다. 이때 많이 사용될것으로 보입니다.

  • GRANT(권한 부여), REVOKE(권한 회수)
  • CREATE USER -> 데이터베이스 유저 생성 권한
  • CREATE SESSION -> 데이터베이스 접속 권한
  • CREATE TABLE -> 테이블 생성 권한
  • CREATE VIEW -> 뷰 생성 권한
  • CREATE SEQUENCE -> 시퀀스 생성 권한
  • ALTER ANY TABLE -> 어떠한 테이블도 수정할 수 있는 권한
  • INSERT ANY TABLE -> 어떠한 테이블에도 데이터를 삽입하는 권한.
  • SELECT ANY TABLE...
  • SELECT ON [테이블 이름] TO [유저 이름] -> 특정 테이블만 조회할 수 있는 권한.
  • INSERT ON....
  • UPDATE ON....
  • 관리자에 준하는 권한을 부여하는 구문.
    RESOURCE, CONNECT, DBA TO [유저 이름]

 

 

6. CUBE, ROLLUP, GROUPING

  • CUBE() : 모든 가능한 조합을 고려하여 합계를 테이블로 보여줍니다.
  • ROLLUP(arg1,arg2) : arg1을 기준으로 가능한 모든 합계를 테이블로 보여줍니다 
  • GROUPING SETS(arg1,arg2) : 주어진 그룹집합에 대해서만 합계를 테이블로 보여줍니다.
  • GROUPING() : NULL값을 원하는 값으로 만드는 과정입니다.