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값을 원하는 값으로 만드는 과정입니다.
'PlayData 백엔드 부트캠프 정리' 카테고리의 다른 글
PlayData 백엔드 부트캠프 Start 15일차 - 2 (2) | 2024.08.28 |
---|---|
PlayData 백엔드 부트캠프 Start 15일차 - 1 (0) | 2024.08.28 |
PlayData 백엔드 부트캠프 Start 13일차 (0) | 2024.08.26 |
PlayData 백엔드 부트캠프 Start 12일차 (0) | 2024.08.25 |
PlayData 백엔드 부트캠프 Start 11일차(JAVA 수업끝...ㅠ) (0) | 2024.08.23 |