오라클 13

[Oracle] 오라클 뷰(VIEW) 사용법

뷰(VIEW) 란? 오라클에서 제공하는 뷰(VIEW)는 하나 이상의 테이블이나 다른 뷰의 데이터로 만든 가상 테이블이다. 자주 조회하는 데이터를 뷰에 구성함으로써 복잡한 쿼리문을 매번 작성할 필요가 없다. 또한, 조회하는 데이터의 원천 테이블을 알 수 없기 때문에 보안성도 좋다. CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW 뷰이름 [(칼럼명1, 칼럼명2, ...)] AS SELECT 문 [WITH READ ONLY] [WITH CHECK OPTION [CONSTRAINT 제약조건명]] OR REPLACE : 기존에 생성한 뷰가 없으면 생성하고 있다면 수정한다. FORCE : 생성 시 쿼리문의 테이블, 칼럼, 함수 등이 존재하지 않아도 생성한다.(INVALID 상태이므로 동..

[Oracle] 오라클 DCL 권한 부여 및 회수(GRANT, REVOKE)

DCL이란? DCL(Data Control Language)은 데이터 제어 언어로 데이터베이스에서 데이터에 대한 권한을 제어하는 데 사용된다. 권한 부여(GRANT) -- 사용자 생성 권한 부여 GRANT CREATE USER TO 사용자명; -- 로그인 권한 부여 GRANT CREATE SESSION TO 사용자명; -- 테이블 생성 권한 부여 GRANT CREATE TABLE TO 사용자명; -- 다른 사용자의 테이블 SELECT 권한 부여 GRANT SELECT ON 사용자.테이블명 TO 사용자명; 권한 회수(REVOKE) -- 사용자 생성 권한 회수 REVOKE CREATE USER FROM 사용자명; -- 로그인 권한 회수 REVOKE CREATE SESSION FROM 사용자명; -- 테이블 ..

카테고리 없음 2023.12.05

[Oracle] 오라클 서브쿼리(SubQuery) 사용법

오라클에서 자주 사용되는 서브쿼리(SubQuery)에 대해 배워보자. 여기서 말하는 서브쿼리는 쿼리 안에 쿼리가 들어가 있는 형태이다. 스칼라 서브쿼리, 인라인 뷰, 중첩 서브쿼리 3가지가 있다. 스칼라 서브쿼리(Scalar SubQuery) SELECT e.ENAME 이름, e.SAL 급여, ( SELECT DNAME FROM DEPT d WHERE d.DEPTNO = e.DEPTNO ) 부서명 FROM EMP e WHERE SAL >= 2500; EMP 테이블에서 SAL이 2500이상인 직원의 부서명을 출력하는 예제이다. 스칼라 서브쿼리는 SELECT 절에서 사용하므로 주의할 게 있다. 위의 경우 다중 행이 조회되는 경우 에러가 발생한다. 다중 행을 처리하고 싶다면 IN, NOT IN과 같은 연산자를..

[Oracle] 오라클 GROUP BY, HAVING 사용법

GROUP BY란? 오라클에서 제공하는 GROUP BY는 특정 칼럼을 기준으로 집계를 내는 데 사용된다. 예를 들어 PLAYER 테이블에서 포지션 별로 묶어 집계를 낸다고 가정해 보자. SELECT POSITION FROM PLAYER GROUP BY POSITION; POSITION 칼럼을 기준으로 그룹을 만들었다. 그 결과 GK, DF, FW, MF 4가지 포지션이 있는 걸 알 수 있다. SELECT POSITION, AVG(HEIGHT) FROM PLAYER GROUP BY POSITION; 집계함수를 이용하여 포지션별 평균키도 조회할 수 있다. SELECT TEAM_ID, POSITION FROM PLAYER GROUP BY TEAM_ID, POSITION ORDER BY TEAM_ID; GROU..

[Oracle] 오라클 CASE WHEN 사용법

코딩을 하다 보면 if문과 같은 조건식을 많이 사용하게 된다. 오라클에서는 CASE 표현식을 제공하고 있다. CASE WHEN 기본형식 CASE WHEN 조건1 THEN 출력값1 [WHEN 조건2 THEN 출력값2] [...] [ELSE 출력값N] END WHEN 조건은 하나 이상을 입력할 수 있다. ELSE 부분은 생략할 수 있으며 모든 조건을 만족하지 않으면 NULL을 출력한다. 사용 예제 SELECT CASE WHEN TEAM_ID = 'K02' THEN '울산 현대' WHEN TEAM_ID = 'K11' THEN '광주FC' ELSE '미정' END 팀이름 FROM PLAYER; PLAYER 테이블에서 TEAM_ID에 따라 팀이름을 부여해 봤다. TEAM_ID가 K02는 울산 현대, K11은 광주..

[Oracle] 오라클 집계함수(AVG, MAX, MIN, SUM, COUNT)

집계함수란? 여러 개의 값을 하나의 값으로 집계하여 반환해 주는 함수이다. WHERE 절에서는 사용할 수 없으며 NULL은 포함하지 않는다. 오라클에서 제공하는 집계함수 함수명 설명 AVG 평균값 MAX 최대값 MIN 최소값 SUM 총합 COUNT 개수 SELECT AVG(HEIGHT), MAX(HEIGHT), MIN(HEIGHT), SUM(HEIGHT), COUNT(HEIGHT) FROM PLAYER; NULL COUNT하는 방법 -- COUNT(HEIGHT)는 HEIGHT가 NULL인 경우 카운트가 안 됨. SELECT COUNT(HEIGHT), COUNT(NVL(HEIGHT, 0)), COUNT(*) FROM PLAYER; GROUP BY로 그룹별 집계하는 방법 -- TEAM별로 집계하기 SELEC..

[Oracle] 오라클 숫자 함수(ABS, SIGN, MOD, CEIL)

오라클 숫자 함수 오라클에서는 다양한 숫자 함수를 제공하고 있다. 이때 변환할 수 있는 값은 오직 NUMBER 데이터 타입이다. 하나하나 사용법을 알아가 보자. ABS 절댓값을 반환한다. SELECT ABS(-2), ABS(2) FROM DUAL; SIGN 입력한 값이 양수, 음수, 0인지 판단한다. -- 양수(1), 영(0), 음수(-1) 반환 SELECT SIGN(2), SIGN(0), SIGN(-2) FROM DUAL; MOD 나누기 한 나머지를 반환한다. SELECT MOD(10, 3) FROM DUAL; CEIL 입력한 값보다 큰 최근접 정수를 반환한다. SELECT CEIL(3.14), CEIL(-3.14) FROM DUAL; FLOOR 입력한 값보다 작은 최근접 정수를 반환한다. SELECT..

[Oracle] 오라클 NULL 관련 함수(NVL, NVL2, NULLIF, COALESCE)

NULL이란? 아직 정의되지 않은 값으로 0 또는 공백과 다르다. (0은 숫자, 공백은 문자) 빈 값 대신 미정 값을 부여할 때 사용한다. PK, NOT NULL 제약조건이 있는 칼럼에는 NULL을 넣을 수 없다. WHERE절에서는 IS NULL, IS NOT NULL을 통해 조건을 줄 수 있다. -- NICKNAME이 NULL인 데이터 조회 SELECT NICKNAME FROM PLAYER WHERE NICKNAME IS NULL; -- NICKNAME이 NULL이 아닌 데이터 조회 SELECT NICKNAME FROM PLAYER WHERE NICKNAME IS NOT NULL; NVL(표현식1, 표현식2) 표현식 1의 값이 NULL이면 표현식 2의 값을 출력하는 함수이다. SELECT NICKNAM..

[Oracle] 오라클 별칭(AS) 사용법

오라클에서는 AS를 이용해 별칭을 부여할 수 있다. AS 사용법 SELECT PLAYER_ID AS 선수번호, PLAYER_NAME 선수이름 FROM PLAYER; SELECT 절에서는 AS 뒤에 별칭을 작성할 수 있으며 생략가능하다. SELECT PLAYER_ID AS "선수 번호", PLAYER_NAME 선수이름 FROM PLAYER; 만약 별칭에 공백을 주고 싶으면 큰따옴표(")를 붙여주면 된다. SELECT P.PLAYER_NAME "플레이어 이름", T.TEAM_NAME "팀", P.TEAM_ID "팀아이디" FROM PLAYER P, TEAM T; FROM절에서는 한 칸 띄우고 작성하면 별칭을 사용할 수 있다. 여기서 알아야 하는 것은 SELECT절처럼 AS는 붙일 수 없다. 추후 배우게 될 ..

오라클 TCL(COMMIT, ROLLBACK, SAVEPOINT)

TCL이란? TCL(Transaction Control Language)은 트랜잭션 제어를 위해 사용한다. 여기서 말하는 트랜잭션은 데이터 처리의 한 단위이다. 즉, 다수의 SQL문을 하나의 논리적인 작업 단위로 보는것이다. 트랜잭션 특성 원자성(Automicity) : 트랜잭션에 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아 있어야 한다. (= All or Nothing) 일관성(Consistency) : 트랜잭션이 실행되기 전의 데이터베이스 내용이 잘못되어있지 않다면 실행된 이후에도 데이터베이스 내용에 잘못이 있으면 안 된다. 고립성(Isolation) : 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안 된다. 지속성(Durabi..