책 리뷰/초보자를 위한 SQL 200제
[Day2/30] 초보자를 위한 SQL 200제
조조링
2024. 10. 18. 17:34
728x90
반응형
이 카테고리는 정보문화사의 "초보자를 위한 SQL 200제" 30일 코스를 학습 하면서 실습한 내용입니다.
1. 연결 연산자 사용하기 (||)
- 연결 연산자 || 을 사용하면 컬럼과 컬럼을 서로 연결해서 출력할 수도 있고, 컬럼과 문자열을 연결해서 출력할 수도 있다.
SELECT ename || '의 월급은 ' || sal || '입니다.' as 월급정보
FROM emp;
2. 중복된 데이터를 제거해서 출력하기 (DISTINCT)
- 컬럼의 데이터를 출력할 때 중복된 데이터를 제거하고 출력하려면 DISTINCT 또는 UNIQUE 사용하면 된다.
SELECT DISTINCT job
FROM emp;
3. 데이터를 정렬해서 출력하기 (ORDER BY)
- 오름차순 ASC / 내림차순 DESC
- ORDER BY절은 SQL 작성 시에도 맨 마지막에 작성하고, 오라클이 실행할 때도 맨 마지막에 실행된다.
- 맨 마지막에 실행되기 때문에 SELECT절에 사용한 컬럼 별칭을 ORDER BY절에 사용해도 된다.
- ORDER BY절에 컬럼명 대신 숫자를 적어줄 수도 있다. 이때, 작성한 숫자는 SELECT절 컬럼의 순서이다.
SELECT ename, deptno, sal as 월급
FROM emp
ORDER BY deptno asc, 월급 desc;
SELECT ename, deptno, sal as 월급
FROM emp
ORDER BY 2 asc, 3 desc;
4. WHERE절 배우기 -1 (숫자 데이터 검색)
비교 연산자 | 기타 비교 연산자 | ||
연산자 | 의미 | 연산자 | 의미 |
> | 크다 | BETWEEN AND | ~ 사이에 있는 |
< | 작다 | LIKE | 일치하는 문자 패턴 검색 |
>= | 크거나 같다 | IS NULL | NULL 값인지 여부 |
>= | 작거나 같다 | IN | 값 리스트 중 일치하는 값 검색 |
= | 같다 | ||
!=, ^=, <> | 같지 않다 |
SELECT ename, sal as 월급
FROM emp
WHERE sal = 3000;
SELECT ename, sal as 월급
FROM emp
WHERE 월급 = 3000;
- 오라클은 FROM절을 실행하고 나서 WHERE절을 실행하기 때문에 별칭을 찾지 못해서 에러 발생
5. WHERE절 배우기 -2 (문자와 날짜 검색)
- 숫자 검색과 다르게 문자를 검색할 때는 문자 양쪽에 싱글 쿼테이션 ' ' 감싸주어야 함
SELECT ename, sal, job, hiredate, deptno
FROM emp
WHERE ename='SCOTT'
- 날짜를 검색할 때는 현재 접속한 세션의 날짜 형식에 맞춰주어야 한다.
- 현재 접속한 세션의 날짜 형식 조회 방법은 아래와 같다. (RR 연도, MM 월, DD 일)
SELECT *
FROM NLS_SESSION_PARAMETERS
WHERE PARAMETER = 'NLS_DATE_FORMAT';
6. 산술 연산자 배우기
SELECT ename, sal*12 as 연봉
FROM emp
WHERE sal*12 >= 36000;
SELECT ename, sal, comm, sal+comm
FROM emp
WHERE deptno = 10;
- comm가 NULL 상태이기 때문에, SAL+COMM도 NULL 값이 된다.
- 이런 경우는 NULL이 아닌 숫자로 변경해 주어야 SAL+COMM 값이 출력될 수 있다.
- NVL함수는 NULL데이터를 처리해주는 함수로, NVL(comm,0)은 comm을 출력할 때, comm이 NULL이면 0으로 출력해준다.
SELECT ename, sal, comm, sal+NVL(comm,0)
FROM emp
WHERE deptno = 10;
7. 비교 연산자 배우기
SELECT ename, sal, job, deptno
FROM emp
WHERE sal <= 1200;
8. 기타 비교 연산자 배우기
SELECT ename, sal
FROM emp
WHERE sal BETWEEN 1000 AND 3000;
SELECT ename, sal
FROM emp
WHERE sal NOT BETWEEN 1000 AND 3000;
SELECT ename, hiredate
FROM emp
WHERE hiredate BETWEEN '1982/01/01' AND '1982/12/31';
728x90
반응형