Web develop/SQL 23

[SQL/ORACLE] VIEW 형식 및 사용법

VIEW : 물리적인 테이블을 근거한 논리적인 가상테이블 (가상: 실질적으로 데이터를 저장하고 있지 않는다.) ⇒ 독립적인 테이블은 아니다 기본테이블에 대한 하나의 쿼리문(text를 저장하는 객체) 자주 사용되는 복잡하고 긴 쿼리문을 저장하는 객체 특정컬럼만 보여지게끔 하여 보안을 목적으로 사용. 제한적인 데이터 조회 뷰는 기준테이블을 참조하는(바라보는) 논리적인 테이블이기에 기준테이블 수정시 같이 변동된다. 형식 CREATE VIEW 뷰이름; 옵션 CREATE \[OR REPLACE\] \[FORCE|NOFORCE\] VIEW 뷰이름 \[별명\] AS SELECT\_statement \[WITH CHECK OPTION \[CONSTRAINT 제약명\]\] \[WITH READ ONLY \[CONSTRA..

Web develop/SQL 2019.06.15

[SQL/ORACLE] CASCADE 사용법 및 예제

CREATE TABLE emp5( deptno NUMBER(2) REFERENCES 참조테이블명(참조컬럼명) ON DELETE CASCADE ALTER TABLE dept3 DROP CONSTRAINT dept3_uk CASCADE; DELETE CASCADE 사용시 자동으로 관련된 모든 FK를 먼저 삭제해줌 부모 (부서)테이블에서 특정 번호(예:10번 부서)를 삭제했을 때 자식 (사원)테이블에서 10번 부서에 근무하는 사원들을 삭제 CREATE TABLE emp5( deptno NUMBER(2) REFERENCES 참조테이블명(참조컬럼명) ON DELETE SET NULL ); DELETE SET NULL 사용시 부모 (부서)테이블에서 특정 번호(예:10번 부서)를 삭제했을 때 자식 (사원)테이블에서 ..

Web develop/SQL 2019.06.15

[SQL/ORACLE] 서브쿼리 , 다중행 서브쿼리 연산자

SUB QUERY : 특정 테이블에서 검색된 결과를 다른 테이블에 전달하여 새로운 결과를 검색할 때 사용 -- JAMES 사원이 근무하는 부서이름 출력 SELECT deptno FROM emp WHERE ename='JAMES'; --> 30번 부서 근무 SELECT dname FROM dept WHERE deptno = 30; --> 부서명 SALES 서브쿼리 사용 SELECT dname FROM dept WHERE deptno = --> 메인쿼리 (SELECT deptno FROM emp WHERE ename='JAMES'); -->서브쿼리 SELECT dname FROM (SELECT dname,loc FROM dept); -- 테이블명에도 객체로 사용가능. 인라인뷰라고 불림 다중행 서브쿼리 서브쿼..

Web develop/SQL 2019.06.15

[SQL/ORACLE] ORACLE JOIN & ANCI JOIN

ORACLE JOIN CROSS JOIN 특정한 조건(WHERE)을 주지 않는다면 조인시 각 테이블이 갖는 행의 수를 곱한 형태의 결과가 출력 SELECT ename, dname FROM emp,dept;--> 결과행 56행 EQUI JOIN 조인 대상이 되는 두 테이블에서 공통적으로 존재하는 컬럼의 값이 일치하는 행을 WHERE로 연결하여 결과를 생성하는 조인 SELECT ename, sal, loc FROM emp, dept WHERE emp.deptno = dept.deptno and loc ='NEW YORK'; SELECT ename, TO_CHAR(hiredate,'yyyy/mm/dd') hiredate, dname FROM emp, dept WHERE emp.deptno = dept.dept..

Web develop/SQL 2019.06.15

[SQL/ORACLE] CASE 함수 사용예제 (Simple / Searched)

CASE WHEN 조건식1 THEN 결과데이터1 WHEN 조건식2 THEN 결과데이터2 WHEN 조건식3 THEN 결과데이터3 ELSE 결과데이터 END SELECT empno, ename, deptno, CASE WHEN deptno=10 THEN 'ACCOUNTING' WHEN deptno=20 THEN 'RESEARCH' WHEN deptno=30 THEN 'SALES' ELSE 'OPERATIONS' END 부서명, CASE WHEN mod(empno,2)=0 THEN '짝수' WHEN mod(empno,2)=1 THEN '홀수' END 사원번호 FROM emp; Simple case expression SELECT t.id, CASE t.color WHEN 1 THEN 'RED' WHEN 2 T..

Web develop/SQL 2019.05.29

[SQL/ORACLE] 그룹함수, DECODE 함수

: 집계 함수 전체데이터를 그룹별로 구분하여 통계적인 결과를 구하기 위해 사용 결과값은 항상 단행 그룹함수와 단순컬럼은 함께 사용하는 것이 불가능 (만약 그룹함수와 함께 사용하고자 하는 컬럼이 그룹으로 묶여질 수 있다면 group by절과 함께 사용하는 것이 가능) NULL은 결과값에서 제외 GROUP BY / HAVING group by(그룹을 묶을 수 있는) 컬럼명 group by deptno--> (10번부서의 사원들) , (20번 부서의 사원들), (30번 부서의 사원들) having (그룹에 대한) 조건식--> group by와 반드시 함께 사용 having deptno = 10 --3개의 그룹중 10번부서의 사원들만 having avg(sal) >= 2000 -- 10번, 20번, 30번 부서..

Web develop/SQL 2019.05.29

[SQL/ORACLE] 날짜 함수 , 형변환 함수

날짜함수 SYSDATE : 현재 날짜 구하기 SELECT sysdate 현재날짜 from dual; SELECT sysdate+1 내일날짜, sysdate-1 어제날짜, sysdate+7 일주일후 FROM dual; MONTHS_BETWEEN : 날짜와 날짜 사이의 개월을 계산해 주는 함수 MONTHS_BETWEEN(최근DATE, 오래전DATE) ADD_MONTHS : 특정날짜에 개월을 더한 날짜 계산 ADD_MONTHS(특정날짜,개월수) LAST_DAY : 월의 마지막 날짜를 계산 SELECT last_day(sysdate) "이번 달 마지막날짜" from dual; NEXT_DAY : 특정날짜 후의 첫 요일의 날짜를 계산 SELECT NEXT_DAY(sysdate,'월') from dual; 형변환 ..

Web develop/SQL 2019.05.28

[SQL/ORACLE] 숫자 함수, 문자 함수

숫자함수 ROUND 함수 : 반올림 (4이하는 버리고 5이상은 올림) round(기준데이터); round(기준데이터,소수점이하 자릿수 표현); SELECT round(45.5) FROM dual; // 46 SELECT round(45.573,2) FROM dual; // 45.57 TRUNC 함수 : 버림함수 trunc(기준데이터); trunc(기준데이터,소수점이하 자릿수 표현); SELECT trunc(45.56) FROM dual; //45 SELECT trunc(45.577,2) FROM dual; //45.57 FLOOR 함수 : 소수점 이하 버림함수 (실수 -> 정수) floor(기준데이터); SELECT floor(45.56) FROM dual; // 45 SELECT floor(45.577..

Web develop/SQL 2019.05.28

[SQL/ORACLE] SELECT절 (실행순서, 연산자, WHERE, ORDER BY)

[실행순서] 2 FROM 3 WHERE 4 GROUP BY 5 HAVING 1 SELECT 6 ORDER BY SELECT 컬럼명 --> 전체 열 중 원하는 열만 선택: 열 제어 FROM 테이블명 WHERE 조건식; --> 전체 행 중 원하는 행만 선택: 행 제어 조건식에 사용되는 연산자의 종류 문자 비교 컬럼명 LIKE 'pattern' pattern 예약문자=> % (0~n개) , _(단 1개) IN 연산자 컬럼명 IN (value_list) SELECT empno, ename, comm FROM emp WHERE comm IN (300,500,400); BETWEEN AND 연산자 컬럼명 BETWEEN a AND b; --> a이상 b이하 IS NULL , IS NOT NULL 컬럼명 IS NULL..

Web develop/SQL 2019.05.27

[SQL/ORACLE] TCL

Transaction (트랜잭션) 데이터 처리의 한 단위 오라클에서 발생하는 여러 개의 SQL 명령문(DML)들을 하나의 논리적인 작업단위로 처리 하나의 트랜잭션은 ALL- Or- Nothing 방식으로 처리 목적: 데이터의 일관성을 유지하면서 안정적으로 데이터를 복구시키기 위해서 트랜잭션 제어 명령어 COMMIT; ROLLBACK; SAVEPOINT sp1; COMMIT 저장되지 않은 모든 데이터를 데이터베이스에 저장하고 현재의 트랜잭션을 종료하라는 명령어. 커밋하면 트랜잭션의 처리과정이 모두 반영되며 하나의 트랜잭션 과정이 끝남 트랜잭션이 발생하는 경우 새롭게 생성되거나 갱신된 데이터들이 물리적으로 영구히 저장됨 DDL (CREATE , DROP, ALTER, RENAME, TRUNCATE)은 Aut..

Web develop/SQL 2019.05.24