본문 바로가기

SQL

(31)
15. 조인(1)( cross join, inner join) [ 조인 ]  분리된 두 테이블의 데이터를 동시에 한 쿼리로 출력하거나, 다른 테이블 데이터를 참조하는 조건이 필요할 경우 사용  oracle 표준과 ansi 표준 존재  oracle 표준은 조인에 필요한 테이블을 from 절에 컴마로 나열         조인조건은 일반조건과 마찬가지로 where절에 나열  ansi 표준은 조인에 필요한 테이블을 조인 형태를 from절에 기술(컴마 전달 불가)         조인조건은 일반조건과 분리되어 on/using절에 나열  select *  from emp, dept ;         --cross join // 발생가능한 모든 경우가 출력됨. 나올 수 있는 모든 경우가 다 나타남. 실무에서 사용되지 않는다. select e.empno, e.ename, e.sal..
14. 집합 연산자 [ 집합 연산자 ]  합집합, 교집합, 차집합의 리턴을 도와주는 표현식  집합 : select문 결과 1. 합집합 : union / union all (모든 언어는 중복제거에 정렬을 동반한다) 1) union : 중복된 값을 한번만 출력(정렬 동반) 2) union all : 중복된 값 모두 출력    **union과 union all 결과가 같다면(교집합이 없을 경우) union all 을 쓰는 것이 성능상 유리 (불필요한 정렬을 피할 수 있으므로) create table emp_test1          --줄여서 CTAS : 테이블 복제/백업 as  select * from emp where deptno in (10,20); 예제) emp와 emp_test1 테이블 데이터의 합집합 출력 insert..
13. 외부 데이터 적재 [ 외부 데이터(csv,txt 등) 적재 ] 방법) 1. oracle sqlldr 툴(명령어) 사용 2. orange 개발툴 사용 절차) step1) table 생성 create table movie( 년         number, 월         number, 일         number, 지역시도    varchar2(20), 지역시군구   varchar2(20), 지역읍면동   varchar2(20), 성별       varchar2(20), 연령대      varchar2(20), 이용비율    number ); select* from movie; step2) orange 적재 Tools > Load Tool > Log on (테이블 소유자로 접속)       > target 탭의 table..
12. 그룹함수(집계함수) 1. count ** 사용법 : count(대상) - 대상에는 * 또는, 숫자, 문자, 날짜값을 갖는 컬럼명 - null은 무시 - null 집합의 count 결과는 0 - null 집합의 sum 결과는 null리턴.       예제) 직원 수 select * from emp; desc emp;  --> not null을 찾아서 카운트 하는것이 가장 빠르고 효과적이다.  select count(*), count(ename), count(empno), count(comm)   from emp; select *   from emp; --> count로 테이블 행의 수를 셀 경우 * 보다는 not null 선언된 컬럼 하나를 세는게 가장 효과적! 예) null 집합의 count 결과 *** select cou..
11.변환함수(2) 1. to_number : 문자 -> 숫자  문자 -> 숫자  문자를 숫자와 연산 또는 비교하기 위해 숫자 타입으로 변경할 때 주로 사용  묵시적 형변환에 의해 자주 발생 ex) where to_char(hiredate, 'mm') = 1 => where to_number(to_char(hiredate, 'mm')) = 1    ** 문자와 숫자 비교시 문자를 숫자로 변환하여 비교  2. to_date // 해석을 하기 위한 용도 // 인식시키는게 목적 1) 문자 -> 날짜 : 날짜처럼 생긴 문자를 날짜타입으로 인식시키기 위해 사용(날짜파싱) 2) 숫자 -> 날짜 : 날짜처럼 생긴 숫자를 날짜타입으로 인식시키기 위해 사용(날짜파싱) ** 사용법 to_date(문자 또는 숫자, 포맷) - 포맷은 날짜를 해..
10. 변환함수(1) - 데이터 타입(날짜,숫자,문자)을 변환하기 위해 사용  to_char ** 사용법 : to_char(대상[, 포맷]) - 대상 : 날짜, 숫자 1. 숫자 -> 문자 case1) 단순 문자 타입 변경    select nvl(to_char(comm),'보너스없음')   from emp;case2) 숫자 형태 변경 - 숫자 자리수 전달 시 9 또는 0 사용 - 9는 부족한 자리수를 공백으로, 0 사용 시 0으로 채움 ex) 1,000 $1000 1000.00 select sal,         to_char(sal,'99999'),  -- '  800'        to_char(sal,'00000'),  -- 00800        to_char(sal,'09999'),  -- 00800        t..
9. 날짜함수 1. sysdate : 오늘의 날짜와 시간 출력(인수 없음) ** 날짜 연산 - oracle에서는 날짜 + 숫자, 날짜 - 숫자 가능 - 날짜 - 날짜 : 두 날짜 사이 일(day) 수 리턴 select sysdate + 100 as "100일 이후",        sysdate - 100 as "100일 이전"   from dual;select ename, sysdate, hiredate,        trunc(sysdate - hiredate) as 근무일수,        trunc((sysdate - hiredate)/365) as 근속연수   from emp;  다음과 같은 식으로 trunc를 이용해서 시간을 다 날려버릴 수 있다.    2. add_months : 월 연산 ** 사용법 : ad..
8. 일반함수(2), 숫자함수 1. 조건문/함수- if문, case문과 같이 조건별 명령을 다르게 하는 구문 - SQL은 if문 사용 불가(PL/SQL문에서는 가능) - ORACLE에서는 case문과 decode를 사용한 조건처리 예) if문 형식(oracle 문법 아님) if comm is null    then 0    else comm*1.1 1) decode - 조건문 축약 함수 - 일치조건에 대한 처리만 가능(대소비교 불가) ** 사용법 : decode(대상,조건상수1,리턴1[,조건상수2,리턴2,.....,기타리턴]) - 기타리턴(else값) 생략 시 null 리턴 select deptno,         decode(deptno,10,'A'),         decode(deptno,10,'A','B'),        de..