본문 바로가기

전체 글69

<35, 36> 다중 행, 열 [서브 쿼리 - 다중 행, 다중 열] SELECT 컬럼, ... FROM 테이블 WHERE 컬럼 (SELECT문 : Sub Query문); 1) 서브 쿼리에 여러 개의 행이 검색되는 쿼리를 다중 행 서브 쿼리라고 한다 2) 다중 행 서브 쿼리는 다중 행 연산자를 이용한다 3) 다중 행 연산자의 종류 IN : 검색된 값중에 하나만 일치하면 참이다 ANY : 검색된 값중에 조건에 맞는 것이 하나 이상 있으면 참이다 ALL : 모든 검색된 값과 조건에 맞아야 참이다 1) 20번 부서원들과 동일한 관리자로부터 관리받는 사원을 검색한다 --1) 20번 부서원들의 관리자가 여러 명일 수 있다 --2) 서브쿼리의 결과가 몇 개일지 예측할 수 없는 경우 -- 다중 행 연산자를 이용하여 다중 행 서브쿼리를 작성한다 SE.. 2020. 12. 2.
<33, 34> 단일행 서브쿼리 [서브 쿼리 - 단일 행 서브쿼리] ; 서브 쿼리는 두 개의 쿼리를 결합하여 하나의 문장으로 표현하는 것이다 1) 단일 행 서브쿼리 ; 서브쿼리가 하나의 컬럼에서 하나의 행을 검색한다 2) 다중 행 서브쿼리 ; 서브쿼리가 하나의 컬럼에서 여러 개의 행을 검색한다 3) 다중 열 서브쿼리 ; 서브쿼리가 여러 개의 컬럼을 검색한다 4) 서브 쿼리는 WHERE 절, HAVING 절과 같이 조건절에 주로 쓰인다. FROM 절에 쓰이는 경우도 있다. FROM 절에 서브쿼리를 쓰는 경우를 인라인뷰(Inline View) 라고 한다 SELECT 컬럼, ... FROM 테이블 WHERE 컬럼 (SELECT 문: Sub Query); 1) 단일 행 연산자가 사용됨으로 반드시 서브쿼리의 결과 값은 1개만 검색돼야 한다 2).. 2020. 12. 2.
<31, 32> HAVING 절 [그룹 함수와 Having 절] ; 그룹 함수를 포함한 조건은 일반 조건과 계산하는 시점이 다르다. 일반 조건의 경우 컬럼의 값을 단지 조건과 비교하면 되지만 그룹 함수의 결과를 조건으로 하는 경우 GROUP BY 절의 사용 유무에 따라 결과 값이 달라지므로 조건에 그룹 함수가 포함된 경우 이것은 일반 조건과 동일한 시점에 처리할 수 없다. SQL 은 이를 위해 HAVING 절을 제공한다. HAVING 절은 조건 중에 그룹 함수가 포함된 것만을 모아서 기술하는 구문이다. SELECT 컬럼 or 그룹함수... FROM 테이블 WHERE 일반 조건 GROUP BY 그룹대상 (일반 컬럼) HAVING 그룹함수포함조건 ORDER BY 정렬 대상; 1) HAVING : 조건 중에 그룹함수를 포함하는 조건 기술 2.. 2020. 12. 2.
<29, 30> GROUP [그룹 함수] ; 검색된 여러 행을 이용하여 통계정보를 계산하는 함수 MAX 값들 중에 최대값을 반환 MIN 값들 중에 최소값을 반환 AVG 평균값을 계산 COUNT 반환된 행의 수를 계산 SUM 총합을 계산 STDDEV 표준편차를 계산 VARIANCE 분산을 계산 1) null 값은 무시된다 - null : 알 수 없다.. 0값이 아님! 그래서 치환을 함 2) 반드시 1개의 값만을 반환한다 3) GROUP BY 없이 일반 컬럼과 기술될 수 없다 ---------------------------------------------------------------------------- 1) 사원의 평균 급여를 검색한다 SELECT AVG(sal) 평균급여, ROUND(AVG(sal)) 평균급여 FROM em.. 2020. 12. 2.
<27, 28> 단일행 함수 - 변환함수 단일 행 함수 - 변환 함수 날짜 출력 형식 년 : YYYY : 네자리로 표현된 년도(1999, 2020, 2011) YY : 두자리로 표현된 년도(99, 20) 앞에 두자리는 현재 년도를 사용한다 99년은 2099년을 의미한다 RR : 두자리로 표현된 년도(99, 20) 앞에 두자리는 현재 년도와 가까운 년도를 사용한다 99년은 1999년, 20년은 2020년 월 MM : 두자리 숫자로 표현된 월 (03, 04) MONTH : 영문이나 한글로 표현된 월(MARCH, APRIL, 3월) MON : 약자로 표현된 영문 및 한글 월(MAR, APR, 3월) 한글인 경우는 MONTH 와 동일하다 일 DD : 두자리 숫자로 표현된 일자(01, 02) DAY : 영문이나 한글요일(SUNDAY, MONDAY, 일요.. 2020. 12. 2.
<25, 26> 단일행 함수 - 숫자, 날짜형 함수 단일 행 함수 - 숫자, 날짜형 함수 ROUND : 그냥 쓰면 소수점을 반올림해서 정수로 ROUND(m, n) n자리까지 반올림한다 ROUND(123.4567, 3) => 123.457 TRUNC : TRUNC(m, n) n자리 미만을 절삭한다 TRUNC(123.4567, 3) => 123.456 MOD : MOD(m, n) m을 n으로 나눈 나머지 계산한다 MOD(10, 4) => 2 POWER : POWER(m, n) m의 n승 계산한다 POWER(2, 4) => 16 CEIL : CEIL(m) m보다 큰 가장 작은 정수를 찾는다 CEIL(2.34) => 3 FLOOR : FLOOR(m) m보다 작은 가장 큰 수를 찾는다 FLOOR(2.34) => 2 ABS : ABS(m) m의 절대값을 계산한다 A.. 2020. 12. 2.
<23, 24> 단일행 함수 - 문자함수 1) LOWER UPPER INITCAP 2) || ' ' || 3) LENGTH( ) 4) SUBSTR : 내용 검색 5) INSTR : 위치 출력 6) TRIM 7) RPAD LPAD 8) LENGTH ( ) -1 : 글자 제외 9) TRANSLATE REPLACE 단일 행 함수 - 문자함수 ; 프로그래머는 복잡한 SQL 문의 이해나 오라클이 제공하는 함수를 몰라도 사용에는 문제가 없다 But, SQL 문을 잘 이해해야 되는 이유가 있다 1) 데이터를 프로그램에서 가공처리하는 것보다 DBMS에서 처리해서 결과만 받아오는 것이 성능상 훨씬 낫다 2) 아키텍처 면에서 프로그램은 받아온 결과를 보여주는데 주력하고, DBMS는 데이터를 저장/처리 에 집중하면 둘 간에 적정한 역할의 분리가 이루어 지므로 유연.. 2020. 12. 2.
<21, 22> JOIN ~ON 절 / 좌우 외부 조인 (Left Right Outer Join) ON절은 가독성이 우수하다는 장점이 있다. 하지만, 사실 이거 뭐 어떻게 돌아가는지 잘 모르겠고 그냥 불편하다. Natural이 짱임.. [ON 절] : 가독성이 우수하다. 조인조건을 명시적으로 표현하기 때문에. ON 절의 특징 : 등가 조인과 비등가 조인을 모두 표현할 수 있다. -- 등가조인 1) 각 사원의 근무 부서를 검색하세요 SELECT eno 사번, ename 이름, dept.dno 부서번호, dname 부서명 FROM emp JOIN dept ON emp.dno=dept.dno; --비등가조인 2) 개발 업무를 담당하는 사원의 급여 등급을 검색하세요 SELECT eno 사번, ename 이름, job 업무, grade 급여등급 FROM emp JOIN salgrade ON sal BETWEE.. 2020. 12. 2.
<19, 20> Natural Join / Using Join 웬만하면 Natural로 때려박는게 편하더라 [Join을 표현하는 여러가지 방법] [Natuaral Join - 자연조인] : 컬럼이름과 자료형이 일치하는 것을 찾아서 조인 1) 자연 조인으로 각 사원의 근무 부서를 검색 SELECT eno 사번, ename 이름, dno 부서번호, dname 부서명 FROM emp NATURAL JOIN dept; 2) 광주에서 근무하는 직원 명단 (부서번호, 부서명) SELECT loc 근무처, dno 부서번호, dname 부서명, eno 사번, ename 이름 FROM dept NATURAL JOIN emp WHERE loc='광주'; SELECT loc 근무처, dno 부서번호, dname 부서명, eno 사번, ename 이름 FROM emp NATURAL JO.. 2020. 12. 2.
<17, 18> 자기 참조 조인(Self Join ) / 외부 조인(Outer Join) 외부 조인의 가장 중요한 의미는 출력 데이터의 신뢰성 제공 [Self Join] 자기 참조 조인 ; emp 사원을 관리하는 관리자 ex) 김연아 사원의 관리자(사수) -0301 이승철 1) 각 사원을 관리하는 관리자의 이름을 검색하세요 e1 : 사원테이블 e2 : 관리자 테이블 SELECT e1.eno 사번, e1.ename 사원명, e1.mgr 관리자사번, e2.eno 관리자사번, e2.ename 관리자명 FROM emp e1, emp e2 WHERE e1.mgr = e2.eno; --사원테이블의 관리자 = 관리자테이블의 누구 -- 사원의 관리자 = 관리자 사번 [Outer Join - 외부조인] 2) 각 부서별로 사원을 검색한다 일반 조인 SELECT d.dno 부서번호, dname 부서명, enam.. 2020. 12. 2.