1.3 컬럼 별칭(Alias): as는 생략가능하나 보통 넣음

select empno as "사원 번호", -- 띄어쓰면 읽지 못하므로 쌍따옴표 넣어줌
       ename "사원이름!",    -- 특수기호를 읽지 못하므로 쌍따옴표 넣어줌
       sal "Salary"        -- 대문자 읽지 못하므로 쌍따옴표 넣어줌
  from emp;

1.4 연결연산자(||) : 서로 분리되어진 칼럼을 하나로 합침

select empno || '-' || ename
  from emp;

-- 연결연산자와 달리 함수 인자에 3개를 넣을 수 없음  
select concat(empno, ename) 
  from emp;

-- 함수는 2번 사용하지 않도록 한다  
select concat(concat(empno, '-'), ename) 
  from emp;

---

1.5 조건의 형태 : 대상(칼럼) 연산자 상수

-- 예제) emp 테이블에서 ALLEN의 이름, 부서번호, 연봉을 출력
select lower(ename), DEPTNO, sal
  from emp
 where lower(ename) = 'allen';
-- 문법에서는 대소문자 구문하지 않지만 데이터 내에는 대소문자 구분함
-- 'allen'쓰면 검색 안됨. lower 함수(<-> upper)로 소문자로 바꿔주면 검색 됨

select ename, DEPTNO, sal
  from emp
 where upper(ename) = 'ALLEN';

-- 예제) emp 테이블에서 sal이 2000이상인 직원의 이름, 부서번호, sal, comm 출력
select ename, deptno, sal, comm
  from emp
 where sal >= 2000;

1.6 update | delete | insert | merge 뒤에는 commit이 필요

1.7 between A and B: A와 B사이 반환

  • A와 B는 포함, A가 더 작은 값이어야 함
select *
  from EMP
 where sal between 1300 and 2000;

1.8 in: 포함연산자, 여러 값과 일치하는 행을 리턴

select *
   from student
  where GRADE in (1, 2);
 
select *
  from student
 where NAME in ('이윤나', '김진욱');

1.9 null 조건

select *
  from EMP
 where COMM is null;
 
select *
  from EMP
 where COMM is not null;

1.10 like 패턴연산자

-- like : 패턴 연산자
-- % : 자리수 제한 없는 모든
-- _ : 한 자리수 모든

-- 예제) emp 테이블에서 이름이 S로 시작하는 직원 출력
select *
  from EMP
 where ename like 'S%';
 
-- 예제) student 테이블에서 이름의 두번째 글자가 '진'인 학생 정보 출력
select *
  from student
 where name like '_진_';

1.11 부정연산자

select *
   from student
  where grade != 4;
  
-- 예제) student 테이블에서 3, 4학년이 아닌 학생
select *
  from student
 where grade != 3
   and grade != 4;
   
select *
  from student
 where grade not in (3, 4);

-- 예제) student에서 몸무게가 50 ~ 60이 아닌 학생 출력
select *
  from student
 where weight not between 50 and 60;

[ 기초 2. 날짜 상수의 전달 ]

-- 해당 세션 내 모든 날짜 포맷을 동일하게
alter session set nls_date_format = 'RR/MM/DD';
-- 저장된 날짜 포맷 : 'YY/DD/DD'
-- 출력 날짜 포맷 : 'YYYY/MM/DD HH24:MI:SS'

-- alter session set nls_date_format = 'RR/MM/DD'; 
-- '78/01/01' => '1978/01/01'로 인식
-- alter session set nls_date_format = 'YY/MM/DD'; 
-- '78/01/01' => '2078/01/01'로 인식
select *
  from emp
 where hiredate = '1980/12/17 00:00:00';    -- 해당 쿼리는 불가능

-- 아래 2개는 같은 결과
select *
  from emp
 where hiredate = '1980/12/17';

select *
  from emp
 where hiredate = '80/12/17';

-- 아래 2개는 같은 결과
-- 1980/12/17일 이후에 입사한 사원 출력
select *
  from emp
 where hiredate > '1980/12/17';

select *
  from emp
 where to_char(hiredate, 'YYYY/MM/DD HH24:MI:SS') > '1980/12/17 00:00:00';

0개의 댓글