*오라클 oracle 기준
트랜젝션 Transaction
데이터 처리의 한 단위
데이터의 일관성을 보증
- COMMIT : 변경사항 저장
- ROLLBACK : 변경사항 취소
- SAVEPOINT 백업
서브쿼리
쿼리문 안에 다시 쿼리문을 작성하는 형태
* 주의 사항
**반드시 괄호로 묶고, WHERE 절 에서는 연산자 오른쪽에 위치해야 한다
SELECT 컬럼명 FROM (서브쿼리문);
SELECT 컬럼명 FROM (서브쿼리문) WHERE 조건;
SELECT 컬럼명 FROM 테이블명 WHERE 조건컬럼 (서브쿼리문);
⌨ FROM절에 서브쿼리문이 오는 경우
∙ EMP 테이블에서 EMPNO, ENAME, JOB, SAL 컬럼중 SAL이 3000이상일 경우 전부 출력하기
▸EMPNO, ENAME, JOB, SAL만 EMP에서 가져와서 조건을 걸고 출력하고 싶은 것
SELECT * FROM (SELECT EMPNO, ENAME, JOB, SAL FROM EMP) WHERE SAL > 3000;
∙ 사원번호 7900의 직무를 꺼내 같은 직무인 사람의 이름과 직업을 찾는 명령
SELECT ENAME, JOB FROM EMP WHERE JOB = (SELECT JOB FROM EMP WHERE EMPNO = 7900);
시퀀스 SEQUENCE
유일(UNIQUE)한 값을 생성해주는 오라클 객체
시퀀스를 생성하면 기본키(PK)와 같이 순차적으로 증가하는 컬럼을 자동적으로 생성할 수 있다.
시퀀스 생성
이름 지을때 일반적으로 '테이블명_seq'
CREATE SEQUENCE 시퀀스이름;
옵션 (생략가능)
- START WHITH n : 시퀀스 시작값 지정
- INCREAMENT BY n : 시퀀스 증가값 지정
- MAXVALUE n or NOMAXVALUE : 최대값 지정
- MINVALUE n or NOMINVALUE : 최소값 지정
- CYCLE or NOCYCLE : 최대값 도달시 순환여부
- CACHE or NOCACHE : 메모리에 시퀀스 값을 미리 할당할지 여부
시퀀스 조회
일반조회는 DUAL 테이블 사용
시퀀스 삭제
DROP SEQUENCE 시퀀스명;
⌨ 시퀀스 생성하여 사용해보기
생략한 옵션은 기본값으로 설정 된다.
-- 전체 시퀀스 조회
SELECT * FROM USER_SEQUENCES;
-- 시퀀스 생성
CREATE SEQUENCE TEST_SEQ NOCACHE;
-- 시퀀스의 다음값
SELECT TEST_SEQ.NEXTVAL FROM DUAL;
-- 현재 시퀀스가 가지고 있는 값
SELECT TEST_SEQ.CURRVAL FROM DUAL;
-- 시퀀스 사용
INSERT INTO TEST VALUeS('java11','0000', TEST_SEQ.NEXTVAL, sysdate);
집합
• 합집합 : UNION / UNINO ALL
• 교집합 : INTERSECT
• 차집합 : MINUS
⌨ 합집합
∙ 선택한 테이블의 데이터 전부 합하여 조회
SELECT DEPTNO FROM EMP
UNION ALL
SELECT DEPTNO FROM DEPT;
⌨ 교집합
∙ 선택한 테이블 데이터들의 공통값만 조회
SELECT DEPTNO FROM EMP
INTERSECT
SELECT DEPTNO FROM DEPT;
⌨ 차집합
∙ 선택한 테이블 데이터들의 공통값을 제외하고 조회
SELECT DEPTNO FROM DEPT
MINUS
SELECT DEPTNO FROM EMP;
'basic > sql' 카테고리의 다른 글
MySql download (0) | 2023.10.31 |
---|---|
SQL[08] - 테이블/컬럼/레코드, 생성/추가/삭제/수정 ⋯ (0) | 2021.05.31 |
SQL[07] - JOIN절 (0) | 2021.05.31 |
SQL[06] - 일반함수, 그룹함수, GROUP BY, HAVING절 (0) | 2021.05.31 |
SQL[05] - 형변환 함수(숫자,문자,날짜 서로 형변환 하기), 오라클의 데이터 타입, 오라클 숫자 표현식 (0) | 2021.05.31 |