PART 1 입문 | SQL 첫발 내딛기
001 테이블에서 특정 열(COLUMN) 선택하기
002 테이블에서 모든 열(COLUMN) 출력하기
003 칼럼 별칭을 사용하여 출력되는 컬럼명 변경하기
004 연결 연산자 사용하기(||)
005 중복된 데이터를 제거해서 출력하기(DISTINCT)
006 데이터를 정렬해서 출력하기(ORDER BY)
007 WHERE절 배우기 1 숫자데이터 검색
008 WHERE절 배우기 2 문자와 날짜 검색
009 산술 연산자 배우기(*, /, +, -)
010 비교 연산자 배우기 1
011 비교 연산자 배우기 2
012 비교 연산자 배우기 3
013 비교 연산자 배우기 4
014 비교 연산자 배우기 5
015 논리 연산자 배우기(AND, OR, NOT)
교재 예제 파일 다운로드
http://infopub.co.kr/index.asp
정보문화사
IT도서의 표준,정보문화사가 쉽고,가깝게 IT세상으로 여러분을 안내해드리겠습니다
infopub.co.kr
001 테이블에서 특정 열(COLUMN) 선택하기
002 테이블에서 모든 열(COLUMN) 출력하기
1) 사원 테이블의 모든 열 출력
SELECT *
FROM emp;
2) 테이블의 모든 컬럼을 출력하고 맨 끝에 다시 한번 특정 컬럼을 한번 더 출력해야 하는 경우.
- 이 경우 *(별표) 앞에 '테이블명.'을 붙여서 작성하고
- 그 다음 한번 더 출력하고자 하는 컬러명을 작성합니다
SELECT dept.*, deptno FROM dept;
003 칼럼 별칭을 사용하여 출력되는 컬럼명 변경하기
사원테이블의 사원 번호와 이름, 월급을 출력하는데 컬럼명을 한글로 '사원번호', '사원 이름'으로 출력
SELECT empno as 사원번호, ename as 사원이름, sal as "Salary"
FROM emp;
💡 컬럼별칭(column alias)
출력되는 컬럼명을 변경하고자 할 때는 컬럼명 다음에 as를 작성하고 출력하고자 하는 컬럼명을 기술하면 됩니다.
▶ 컬럼별칭에 더블 쿼테이션 마크를 감싸줘야 하는 경우
1. 대소문자를 구분하여 출력할 때
2. 공백문자를 출력할 때
3. 특수문자를 출력할 때($, _, #만 가능)
▶ 컬럼 별칭을 사용하는 것이 유용할 때
SELECT ename, sal *(12+3000)
FROM emp;
수식을 사용하는 경우, 출력되는 컬럼명도 수식으로 출력됩니다. 컬럼별칭을 사용하여 칼럼명을 수식명이 아닌 한글 '월급'으로 출력하고 싶을 때는 수식 뒤에 as를 작성하고 사용하면 됩니다.
SELECT ename, sal *(12+3000) as 월급
FROM emp;
▶ 컬럼 별칭 & ORDER BY
수식에 컬럼별칭을 사용하면 ORDER BY절을 사용할 때 유용합니다.
ORDR BY절에 수식명을 작성하지 않고 컬럼별칭만 사용하면 되기 때문에 SQL 작성이 간편해집니다.
SELECT ename, sal *(12+3000) as 월급
FROM emp
ORDER BY 월급 desc;
004 연결 연산자 사용하기(||)
1) 사원 테이블의 이름과 월급을 서로 붙여서 출력합니다.
SELECT ename || sal
FROM emp;
2) 연결 연산자를 이용하면 컬럼과 컬럼을 서로 연결해서 출력할 수 있습니다.
또한 컬럼과 문자열을 연결하여 출력이 가능합니다. 연결 연산자를 이용하여 컬럼들을 연결하였다면 컬럼 병칭은 맨 마지막에 사용해야 합니다.
SELECT ename || '의 월급은 ' || sal || '입니다 ' as 월급정보
FROM emp;
005 중복된 데이터를 제거해서 출력하기(DISTINCT)
사원 테이블 중복된 데이터를 제외하고 직업을 출력합니다.
SELECT DISTINCT job
FROM emp;
컬럼명 앞에 DISTINCT를 작성하고 실행하면 중복행이 제거되고 UNIQUE한 값만 출력됩니다
✨ DISTINCT 대신 UNIQUE를 사용해도 됩니다
006 데이터를 정렬해서 출력하기(ORDER BY)
월급이 낮은 사원부터 이름과 월급을 출력합니다.
SELECT ename, sal
FROM emp
ORDER BY sal asc;
정렬 방식 | 정렬 옵션 | 축약 |
오름차순 | ASCENDING | ASC |
내림차순 | DESCENDING | DESC |
007 WHERE절 배우기 1 숫자데이터 검색
월급이 3000인 사원들의 이름, 월급, 직업을 출력해보겠습니다.
where절의 검색 조건으로 사용하는 비교 연산자
비교 연산자 | 기타 비교 연산자 | ||
연산자 | 의미 | 연산자 | 의미 |
> | 크다 | BETWEEN AND | ~ 사이에 있는 |
< | 작다 | LIKE | 일치하는 문자 패턴 검색 |
>= | 크거나 같다 | IS NULL | NULL 값인지 여부 |
<= | 작거나 같다 | IN | 값 리스트 중 일치하는 값 검색 |
= | 같다 | ||
!= | 같지 않다 | ||
^= | 같지 않다 | ||
<> | 같지 않다 |
위의 연산자를 사용하여 월급이 3000 이상인 사원들의 이름과 월급을 출력
- 별칭 사용
SELECT ename as 이름, sal as 월급
FROM emp
where sal >= 3000;
WHERE 절에 별칭 사용하면 에러 나는 이유
WHERE 절에 '월급'이라는 별칭을 사용하면 에러가 발생합니다. 이유는 오라클이 SQL을 실행하는 순서 때문입니다.
실행 순서
1. FROM emp
2. WHERE 절
3. SELECT 절
008 WHERE절 배우기 2 문자와 날짜 검색
1이름이 SCOTT인 사원의 이름, 월급, 직업, 입사일, 부서 번호를 출력
✔️ 문자를 검색할 때는 문자 양쪽에 싱클 쿼테이션 마크를 감싸줘야 합니다.
81년 11월 17에 입사한 사원의 이름과 입사일을 출력
✔️ 문자뿐 아니라 날짜도 양쪽에 싱클 쿼테이션 마크를 감싸줘야 합니다.
✔️ 날짜 데이터 검색의 경우 현재 접속한 세션(session)의 날짜 형식에 맞춰 작성해야 합니다.
81 / 11/17은 '연도/월/일'로 된 날짜 형식입니다. 나라마다 날짜 형식이 다르기 때문에
✔️ 날짜 검색을 하기 전에 현재 접속한 세션(session)의 날짜 형식을 확인하는 것이 필요합니다
SELECT *
FROM nls_session_parameters
where parameter = 'NLS_DATE_FORMAT';
날짜 형식에 대한 정의
형식 | 정의 | 형식 | 정의 |
YYYY | 연도 4자리 | HH24 | 시간(0~24) |
YY 또는 RR | 연도 2자리 | MI | 분(0~59) |
MM | 달의 2자리값 | SS | 초(0~59) |
MON | 달의 영문 약어 | WW | 연의 주 |
DD | 숫자 형식의 일 | IW | ISO 표준에 따른 년의 주 |
DAY | 요일 | W | 월의 주 |
DY | 요일 약어 | YEAR | 영어 철자로 표기된 년도 |
D | 요일의 숫자 | MONTH | 영어 철자로 표기된 달 |
009 산술 연산자 배우기(*, /, +, -)
연봉이 3600 이상인 사원들의 이름과 연봉을 출력
부서 번호가 10번인 사원들의 이름, 월급, 커미션, 월급 + 커미션을 출력
커미션에 데이터가 없습니다. 이 상태를 NULL값이라고 합니다. NULL 값은 데이터가 없는 상태, 즉 데이터가 할다오디지 않은 상태 또는 알 수 없는 값이라고 합니다. 이 경우에는 NULL이 아닌 숫자로 변경해 주어야 월+ 커미션 값이 출력될 수 있습니다.
SELECT sal + NVL(comm,0)
FROM emp
WHERE ename = 'KING';
1. NVL 함수 [ NVL( 대상 , null인 경우 값 ) ]
대상의 값이 NULL 인 경우 지정한 값으로 치환합니다.
모든 데이터 타입에 적용이 가능합니다.
2. NVL2 함수 [ NVL2( 대상, null 아닌경우 값, null인 경우 값 ) ]
대상의 값이 NULL 인 경우와 NULL이 아닌경우를 지정한 값으로 치환합니다.
NVL2 함수는 DECODE함수와 비슷한 IF문의 기능을 가지고 있습니다.
010 비교 연산자 배우기 1
011 비교 연산자 배우기 2
월급이 1000에서 3000 사이인 사원들의 이름과 월급을 출력
SELECT ename, sal
FROM emp
WHERE sal BETWEEN 1000 AND 3000;
SELECT ename, sal
FROM emp
WHERE (sal >= 1000 AND sal >= 3000);
✔️ BETWEEN AND 사용시 주의사항은 "BETWEEN 하한값 AND 상한값" 순으로 작성해야 검색이 됩니다.
월급이 1000에서 3000 사이가 아닌 사원들의 이름과 월급을 조회합다
SELECT ename, sal
FROM emp
WHERE sal NOT BETWEEN 1000 AND 3000;
SELECT ename, sal
FROM emp
WHERE (sal < 1000 OR sal > 3000);
BETWEEN ...AND 연산자를 사용하는 것이 훨씬 가독성 있고 코드가 심플합니다.
1982년도에 입사한 사원들의 이름과 입사일을 조회
SELECT ename, hiredate
FROM emp
WHERE hiredate BETWEEN '1982/01/01' AND '1982/12/31';
012 비교 연산자 배우기 3 LIKE
이름의 첫 글자가 S로 시작하는 사원들의 이름과 월급을 출력
SELECT ename, sal
FROM emp
WHERE ename LIKE 'S%';
이름의 두 번째 글자가 M인 사원의 이름을 출력
SELECT ename, sal
FROM emp
WHERE ename LIKE '_M%';
기호 | 설명 |
% | 0개 이상의 임의 문자와 일치 |
_ | 하나의 문자와 일치 |
이름의 끝 글자가 T로 끝나는 사람 WHERE ename LIKE '%T'
이름에 A철자가 포함된 사람 WHERE ename LIKE '%A%'
013 비교 연산자 배우기 4 (IS NULL)
커미션이 NULL인 사원들의 이름과 커미션을 출력
014 비교 연산자 배우기 5 (IN)
직업이 SALESMAN, ANALYST, MANAGER인 사원들의 이름, 월급, 직업을 출력
- 아래 두 쿼리는 동일한 결과를 출력합니다
SELECT ename, sal, job
FROM emp
WHERE job in('SALESMAN', 'ANALYST', 'MANAGER');
SELECT ename, sal, job
FROM emp
WHERE (job = 'SALESMAN' or job ='ANALYST' or job = 'MANAGER');
직업이 SALESMAN, ANALYST, MANAGER이 아닌 사원들의 이름, 월급, 직업을 출력
SELECT ename, sal, job
FROM emp
WHERE job NOT in('SALESMAN', 'ANALYST', 'MANAGER');
015 논리 연산자 배우기(AND, OR, NOT)
SELECT BOOK_ID, PUBLISHED_DATE
FROM BOOK
WHERE PUBLISHED_DATE = '2021', CATEGORY = '인문'
ORDER BY PUBLISHED_DATE ASC;
'초보자를 위한 SQL 200제' 카테고리의 다른 글
PART 2 「초급」 SQL 기초 다지기 (026 ~040) (0) | 2023.01.17 |
---|---|
PART 2 「초급」 SQL 기초 다지기 (016 ~ 025) (0) | 2023.01.17 |
SQL Developer 설치 (0) | 2023.01.03 |
오라클19 데이터베이스 설치하기 (0) | 2023.01.03 |
초보자를 위한 SQL 200제 - 시작하기 (0) | 2023.01.03 |