(33일차) 12월 9일
문자 데이터 조회
- SQL문은 원래 대소문자를 구별하지 않지만 테이블 내에 저장된 데이터 값은 대소문자를 구분함
ex) WHERE ename='ford' => 'FORD'를 찾을 수 없음
NULL
- where 조건문에서 NULL이 있는 속성값을 찾을 때 IS NULL을 사용해야 함
- 정렬할 때 NULL값은 ASC(오름차순)일 때 가장 마지막에 나오고 DESC(내림차순)일 때 가장 먼저 나온다
ex) WHERE comm is NULL; 사용 O
WHERE comm = NULL; 사용 X => NULL이 어떤 값인지 결정되지 않아 연산자로 사용 불가
5장 SQL 주요함수
DUAL 테이블
- DUAL 테이블은 DUMMY라는 단 하나의 컬럼(열, 속성)으로 구성되어 있는 것
- 단 하나의 열에 단 하나의 행만을 저장
- 화면에서 단순 확인하기 위해서 사용하는 테이블
* DESC + table이름 => table의 상세 정보를 화면에 출력
* SYSDATE : 오늘 날짜를 구하는 키워드
숫자함수
* CEIL(실수값) : 소수점 자리의 최대값인 1과 정수를 더한 값을 리턴 ex) SELECT CEIL(1.0000001) => 2
* ROUND(실수값, 소숫점 자리수) : 소숫점 자리수가 양수인 경우는 소숫점 이하 반올림, 음수인 경우는 소숫점 이상(정수)의 자리수를 반올림
* ROUND(날짜, 'MONTH') : 16일 기준으로 반올림(16일 보다 적으면 이번 달, 16일 보다 크면 다음달로 반올림)
문자처리 함수
* INSTR(대상, '찾을글자', 검색시작위치, 몇 번째 검색결과) : 찾고자 하는 문자의 위치를 return
날짜함수
* NVL(대상, 설정값) : NULL VALUE의 약어, 속성값이 null일 때 값 설정
6장 그룹 함수
7장 조인
테이블에 별칭 부여하기
SELECT E.ename, D.dname, E.deptno, D.deptno
FROM emp E, dept D
WHERE E.deptno = D.deptno AND E.ename='SCOTT';
8장 서브 쿼리
2. SQL_Basic2.sql (Scott)
-- SCOTT과 동일한 근무지에서 근무하는 사원의 이름을 출력하시오
SELECT f.ename
FROM emp e, emp f
WHERE e.deptno=f.deptno AND e.ename='SCOTT' AND f.ename<>'SCOTT';
-- ANSI JOIN 예제
-- 1. CROSS JOIN (카디전 프로덕트)
SELECT *
FROM emp CROSS JOIN dept;
-- 2. Inner JOIN (동등조인)
-- ON 동등조인
SELECT ename, dname
FROM emp INNER JOIN dept
ON emp.deptno = dept.deptno;
-- USING 동등조인
SELECT ename, dname
FROM emp INNER JOIN DEPT
USING (deptno)
-- 3. Natural Join (자연조인) : equi-join의 결과에서 중복된 속성을 1개로 줄여줌
SELECT *
FROM emp NATURAL JOIN dept;