728x90
반응형

1.  NULL

   1) 정의 : 알 수 없는 값

   2) 스페이스바, 0 ---> not null 

 

 

2. 연산자로 비교할 수 없다.

   1) 추가로 조건을 주어야 한다.

   2) is null, is not null

   

 is null

   select *

     from emp

   where salary is null ;

 is not null

   select *

     from emp

   where salary is not null ;

 

 

 

3. PK 

 1) not null + 중복제거 (O) 

  2) pk컬럼은 자동으로 인덱스 생성 (O)

  3) 한 개 테이블에 pk는 존재한다.(O)

      ex) 없을 수도 있다.

  4) 한 개 테이블에 한 개만 만들 수 있다 (X)

  5) 한 개의 테이블에 한 개 또는 여러개의 컬럼으로  pk는 1개만 만  들 수 있다. (O) 

      ex) 컬럼에 null이 없을 경우에만 가능하다. 

 

 

4. select 문장 (테이블의 데이터를 조회) 

     select 컬럼몇 또는 *

       from 테이블명

      where 조건문

          and 조건문

           or 조건문

  group by 단일컬럼명 (~~별)

     having 그룹함수조건

   order by 정렬대상컬럼

   오름차순(asc), 내림차순(desc)   

  ※ Default 는 오름차순 이다. 

 

문제 1) 부서번호별, 성별별, 나이별로 급여의 합계를 구하는데, 부서명은 ‘인사부’, ‘총무부’, ‘회계부’ 

          이고 급여의 합계가  200 넘는것만 찾아라.   (단, 정렬은 부서번호별로 오름차순)

 

      select 부서번호, 성별, 나이, sum(급여)

         from emp

      where 1=1

         and 부서명 in ('인사부‘, ’총무부‘, ’회계부‘)

  group by 부서번호, 성별, 나이

      having sum(급여) > 200

   order by 1 ;

 ==========================================================================================

문제 2)

 

     select dept_id, avg(salary)

       from tab_emp1

 group by dept_id

      having avg(salary) > 300

    order by dept_id;  

 

 

 

5. between 

  1) between 하한값(포함) and 상한값(포함) 

  2) not between 하한값 (포함) and 상한값(포함)  

 잘 못 사용 하는 경우

  

     select *

      from emp

    where salary between 200 and 100 ; 

 바르게 사용 하는 경우

    

    select * 

     form emp

   where salary  between 100 and 200 ; 

 

 between과 같은 조건

 

   select *  

    from emp

  where salary >= 100

     and salary <= 200 ; 

 

 

 

 

6. like 

   _ : 한문자

   select *

    from emp

   where emp_nm like '__ ;

  % : 여러문자

   select *

     from emp

   where emp_nm like '%%' ;

 

 

 

7. escap 함수 

  escap 뒤에 지정한 문자 '\'의 의미는 \뒤에 나오는 와일드카드 ( _ , % )를 문자로 인식한다. 

  ※ escap 뒤에 지정할 수 있는 문자는 거의 모든 문자가 다 된다.   

 1. 첫 글자    F    시작

    두 번째    _    들어감

    세 번째  아무거나 와도 상관 없음. 

select *

from emp

where emp_nm like 'F\_\_%' escape '\' ;

==========================================

F_AAAAA

F_BBBBB

F__???

 2. 첫 글자    F    시작

    두 번째    %   들어간 전체 데이터,

    세번째  아무거나 와도 상관 없음. 

 select *

from emp

where emp_nm like 'F\%\%% escape '\' ;

===========================================

F%AAAAAAAA

F%BBBBB

F%%CCCCC

ff%cccc

FF%AAAA

 

 

 

 

8. || 

 

       select emp_id, emp_nm, emp_id || emp_nm

       from emp ;

emp_id

emp_nm

emp_id || emp_nm

100

홍길동

100홍길동

 

 

 

 

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,