본문 바로가기

DB/오라클

오라클 기초




# 오라클 기초

    
1. select * from tab;
     서버에있는 전체 table보기
    
2. select 절
select 선택목록,선택목록,.... from 테이블명
ex>  select id,name from emp;
    
3. 칼럼별칭 "as"
select 선택목록,선택목록....as abc from 테이블명.
 ex>  select id,name as abc from emp;-->name명칭이 abc로변경됨
    
4. 테이블명 테이블명별칭
    테이블명 AS T  아님!!( 테이블명뒤엔 AS 안됨. 바로별칭)

5. 결합연산자 ||
select A || B as fullName from s_emp;       -->fullName 값에 AB가 출력됨
     ex> select '철수' || emp_name || '이다' From Temp;
     ex> select '철수''   ' || emp_name || '이다' From Temp;
           =>  싱글쿼테이션을 문자로 표현시 ' 말고 ' 두개를 넣어야함
                    하지만 더블쿼테이션은 상관없음
6. NULL값
     "0"이 아님!!
     값이 정해져 있지 않음.적용 불가능한. 이용할수없는....!!
     ex>  0+100=100
             null+100=null
              null*100=null

7. NVL함수( null일경우의 다른값으로 대체 )
     ex>  select ename, nvl(mrg,7891) as mgr from emp;
             mrg와 7891은 형식이 같아야함 형식이 다르면 형 변환해야함...
             숫자를 문자로--->to_char(mgr)
     ex>  select ename,nvl(to_char(mgr),'abcd') as mgr from emp;
                                       " " 안됨 (싱글만...)
    
8. distinct ----->중복된 행 삭재. select절 바로뒤에 distinct 키워드...
     ex>  select distinct job from emp;
          --->job에있는 값중 중복된값은 한번만 출력됨
     ex>  select distinct job,deptno from emp;
          --->job과deptno에 둘다 중복되는 값이 한번만 출력됨
         
9. where절---> 테이블내의 특정 행만 선택할때....
select 선택목록 from 테이블명 where 조건식;
     ex>  select ename,sal from emp where empno=7788;
     -->empno값이 7788인 ename와sal값 출력
    
     예제>급여가 2500이 넘는 직원의 직종과 이름출력
     -->select job,ename from emp where sal>2500;
    
     예제>PRESIDENT를 제외한 사원의 이름과 급여출력
     -->select ename,sal from emp where job <> 'PRESIDENT';
     ***키워드,칼럼명,셀렉터,테이블명 등은 대소문자 구분 없으나
     데이터베이스 값은 구분되므로 똑같이 입력해야함(띄워쓰기도 구분함! )
     ------'PRESIDENT'!!!!!!
    
10. 다중조건 질의사용   비교연산자
and    :    둘다 true일때 출력
or     :    둘중 하나만 true라도 출력
between A and B    :    A와B 사이의 값 출력(포함)
in(A,B)    :    A또는B에 속한값 출력(  IN( A,B,C,D...)  )
         
     예제>직종이 CLERK중에서 급여 100만원이상인 사람의 이름과 직종?
     -->select ename,job from emp where job='CLERK' and sal>100;
    
     예제>급여가 1000에서2000사이 그리고 3000에서 4000사이 사원의
               이름과 급여출력?? 
     -->select ename,sal from emp where sal between 1000 and 2000
     or sal between 3000 and 4000;

     예제>deptno 값 중에 10또는 20에 속한 이름을출력하시오
     -->select ename from emp where deptno in(10,20);
     -->SELECT * FROM EMP WHERE deptno=10 OR deptno=20;    
        
11. like
%    :    0개 이상의 문자를 대표함
_    :    임의의 한글자를 모를때(자바에서 한글은 2byte라서 __ 두개해야함)
    
     ex>  select ename from emp where ename like 'A%';
          --->A로시작하는 이름을 출력함 (A는 데이터값이므로 똑같이 대문자)
     ex>  select ename from emp where ename like '%A';
          --->A로 끝나는 이름을 출력함
     ex>  select ename from emp where ename like '%A%';
          --->이름에 A가 들어있는 이름출력
     ex> SELECT ENAME FROM EMP WHERE ENAME LIKE 'A_';
          --->이름이 A로시작하고 다음 한글자만 있는거 찾을때(한글은 두개__)
          ---> A1 , AB 찾아주고 A11, A재 , A 1 못찾음    

12. is null--->칼럼 또는 수식의 null   ""여부검사""
    예제>커미션을 받지않는 사원의 이름과 급여를 출력하시오
     --->select ename,sal from emp where comm is null;
            comm=null;을 사용하면 값이 출력안됨!
    반대로 IS NOT NULL도 존재함!!
    
13. 부정연산식
     *not A = 1  --->A가 1이 아닌값( 동일 A<>1 )    
     *not between A and B--->A,B사이의 값이 아닌값.
     *not in(A,B)--->A또는B 에 속한 값이 아닌값.
     *not like---->비교문자열과 같지않은값.
     *is not null---->null이 아닌 값의 여부검사.혹은 not (comm is null) 해도됨.


14. ORDER BY--->  select문장의 마지막에 위치하여 select되는 데이터를 정렬함
               디폴트값은 오름차순(asc)  , (desc) 내림차순

          *복수칼럼 정렬--->한개이상의칼럼을(,)콤마를 사용하여 구분
               각 칼럼명 뒤에 asc,desc를 명시
     예제>급여가 적은 사원부터 이름,급여를 출력하시오
     --->select ename,sal from emp
               order by sal asc;
              
     예제2>급여가 많은사원부터
     --->order by sal desc;
    
     에제3>급여가 많은 사원부터 출력하되 급여가 같은사원은 이름순서대로(알파벳순서대로)
     --->order by sal desc,ename;    
            ( 급여먼저, 그다음 이름 순서대로(이건 디폴트값이 asc 즉 오름차순)  )
    
     예제4>급여가 많은 사원부터 출력하되 급여가같은 사원은 comm순서대로
     --->order by sal desc,comm desc;
  



# 정리 쿼리

--     테이블 전체보기
SELECT * FROM TAB;
-- 기본 조회
SELECT
       SEQ || CONTENT       AS WOWN
       ,SEQ || '123' ||CONTENT    AS WOWN
       , SEQ || ' ''  ' AS WOWN
       , SEQ || ' "  ' AS WOWN
       ,  NVL(PARENT_SEQ , 0 )    -- NULL일경우 처리
       ,      DISTINCT CREA_ID     -- 중복행 삭제
FROM BOARD
WHERE DEPTID = 10
              AND JOB <> 'PM'  -- 대소문자,띄어쓰기 구분함
              AND SAL > 2500;
              OR AGE = 25 -- OR앞에꺼 전부랑 OR뒤에꺼 전부 출력
              AND GRADE IN ('A','B','C') --     다중조건
              AND SAL BETWEEN 3000 AND 4000 -- 사이값(포함)
              AND NAME LIKE 'A%'
              AND NAME LIKE 'A_'   -- 한단어만 모를때 (한글은 두개 __ )
              AND COMM IS NULL     -- COMM = NULL (X)
              AND COMM IS NOT NULL
              AND NOT LIKE '%ABC%' --     NOT 부정을 위에다 쓸수 있다.
ORDER BY SEQ DESC -- 내림차순( 디폴트 :  ASC 오름차순 )









추가적으로 정리 잘되어있는 사이트 : https://wikidocs.net/book/550









        


 



















'DB > 오라클' 카테고리의 다른 글

오라클 함수  (0) 2019.04.03
계층형 쿼리  (0) 2019.04.03
오라클 DDL, DML, DCL, TCL (제약조건 포함)  (0) 2019.04.03
SQL시스템과 오라클 SQL PLUS  (0) 2019.04.03
컬럼값에 따라 다른 테이블을 조인  (0) 2019.04.03