본문 바로가기

데이터베이스(DB)
(45)
[Oracle] 뷰(VIEW) //뷰, VIEW - 개념적인(논리적인) 데이터 구조 - 쿼리 문장을 뷰로 정의해서 사용하면 간단하게 사용할 수 있다. - 데이터베이스 객체 중 하나 - 가상 테이블, 뷰 테이블 등.. - 테이블처럼 사용한다.★★★★ - SQL을 저장한 객체(select 결과셋 데이터를 저장한 객체X / select문을 저장한 객체 O) - 호출될 때마다 저장된 SQL이 실행된다.(실시간 가상 테이블) - 2개 이상의 테이블을 사용해서 생성 가능 > 복합뷰 - ★★★★★읽기 전용 테이블(insert, update, delete도 실행은 되지만 절대 사용 금지!!) - 역할(목적) 1. 쿼리 단순화 > 가독성 향상 2. 보안 관리 3. 쿼리를 다른 사용자(hr 등)과 공유 4. 재사용 create view 뷰명 as se..
[Oracle] 유니온(UNION) // 유니온, UNION - JOIN이 서로 관련 있는 것들을 합친 거라면, UNION은 관련이 없어도 된다. - 조건: 스키마가 동일해야 한다. - 중복은 제거한다. (합집합) ※ UNION ALL : 중복 포함 - UNION SELECT ID, NAME FROM MEMBER UNION SELECT WRITER_ID, TITLE FROM NOTICE; select * from tblUnionA union select * from tblUnionB; - UNION ALL SELECT ID, NAME FROM MEMBER UNION ALL SELECT WRITER_ID, TITLE FROM NOTICE; select * from tblUnionA union all select * from tblUnionB..
[Oracle] 조인(JOIN) // JOIN - (서로 관계를 맺은) 2개(1개) 이상의 테이블을 사용해서 1개의 결과셋을 만드는 연산 - 테이블A + 테이블B = 테이블C 1. CROSS JOIN 2. INNER JOIN 3. OUTER JOIN 4. SELF JOIN // CROSSJOIN - 카티션곱, 데카르트곱 - A 테이블 레코드 개수 X B 테이블 레코드 개수 = 결과셋 레코드 개수 - A 테이블 컬럼 개수 + B 테이블 컬럼 개수 = 결과셋 컬럼 개수 - 쓸모가 없다. > 가치 있는 행과 가치 없는 행이 섞여 있음. - 개발용, 테스트용으로 사용 > 유효성과 상관 없이 다량의 데이터를 만들 때 select 컬럼리스트 from 테이블A cross join 테이블B > ANSI-SQL(표준 SQL) > 권장 select 컬럼..
[Oracle] 서브 쿼리 // 서브쿼리 - 하나의 문장(select|insert|update|delete) 안에 또다른 문장(select)이 들어있는 쿼리 - 삽입 위치 > 거의 대다수의 절(select절, from절, where절 :: group by절, having절, order by절 - 장점 1. 2개의 SQl을 1개의 SQL로 줄일 수 있다. 2. 변화에 강하다.(변하는 값을 실시간으로 적용할 수 있음.) > 개발자 편의성 향상 - tblCountry. 인구수가 가장 많은 나라의 이름 select name from tblCountry where population = (select max(population) from tblCountry); - tblComedian. 체중이 가장 많이 나가는 사람 select * fro..
[Oracle] 순위 함수 //순위 함수 - ROWNUM의 사용을 여러 가지 용도로 구현해놓은 함수 - where절에 사용할 수 없다. > 사용하려면 서브쿼리를 사용해야 함. // RANK() OVER() : - 정렬 후 ROWNUM을 붙일 수 있게 해주는 함수 - 순위 부여 시, 중복값이 발생하면 동일한 순위를 부여하고, 중복값의 개수만큼 건너뛴다. rank() over(order by 컬럼명 [asc|desc]); SELECT RANK() OVER (ORDER BY AGE) , ID, NAME, BIRTHDAY, PHONE, REGDATE, AGE FROM MEMBER; select name, buseo, basicpay, rank() over(order by basicpay desc) from tblInsa; // DENSE..
[Oracle] 집계 함수, Group by절, Having절 //집계 함수, Aggregation Function - WHERE 절에서는 집계 함수를 사용할 수 없다. - MIN, MAX, SUM, COUNT, AVG // MIN, MAX - object max(컬럼명) / object min(컬럼명) select max(height), min(height) from tblComedian; --숫자형 select max(name), min(name) from tblInsa; --문자형 select max(ibsadate), min(ibsadate) from tblInsa; --날짜형 - 최솟값 / 최댓값반환 - 숫자형, 문자형, 날짜형 모두 적용 - min SELECT MIN(AGE) FROM MEMBER; - max SELECT MAX(AGE) FROM MEMB..
[Oracle] NULL 관련 함수, DECODE 함수 // NULL 함수 - 반환 값이 NULL일 경우 대체 값을 제공하는 함수: NVL(NULL, 대체값) SELECT NVL(AGE, 0) FROM MEMBER; - 회원들의 이메일 조회(이메일이 (null)인 경우 '없음'으로 대체) SELECT NVL(EMAIL, '없음') FROM MEMBER; - NVL에서 조건을 하나 더 확장: NVL2(입력값, NOTNULL대체값, NULL대체값) SELECT NVL2(AGE, 100/AGE, 0) FROM MEMBER; - 회원들의 이메일 입력 여부 조회(이메일이 (null)인 경우 '없음'으로 대체, NULL 이 아닐 경우 '있음'으로 대체) SELECT NVL2(EMAIL,'있음', '없음') FROM MEMBER; - 두 값이 같은 경우 NULL, 그렇지..
[Oracle] 변환 함수 // 변환 함수 - 숫자 문자열 날짜 // NUMBER 형식을 문자열(VARCHAR2)로 변환 : TO_CHAR(NUMBER) 포맷 문자 설명 9 숫자 1개를 문자 1개로 바꾸는 역할 > 빈자리를 스페이스로 치환 ≒ %5d > 부호 자리 한 자리를 비움 0 숫자 1개를 문자 1개로 바꾸는 역할 > 빈자리를 0으로 치환 ≒ %05d > 부호 자리 한 자리를 비움 $, L 통화 기호 표현 , 천 단위 구분자 표시 . 소수점 표시 SELECT TO_CHAR(123) || 'HELLO' FROM DUAL; -- 123HELLO SELECT TO_CHAR(12345678, '99,999,999') || 'HELLO' FROM DUAL; -- 12,345,678HELLO SELECT TO_CHAR(12345678,..