테이블(Table)에서 DATA를 검색하기 위한 문장으로
가장 많이 사용하는 SQL문장이다.
- 모든 SQL문장은 세미콜론(;)으로 종료 되어야 한다.
- SELECT… FROM…은 필수 입력 사항.
- SQL 구문은 대소문자를 구분하지 않지만 문자상수(문자 리터럴)의
경우 대/소문자를 구분한다.
(where ename = ‘smith’, where ename = ‘ SMITH’은 두 조건절은
다른 의미다.)
SQL키워드(SELECT, FROM, WHERE)는 주로 대문자로 사용하고
테이블명, 칼럼 이름은 소문자로 작성하는 것을 권장한다.
2. SELECT 개요
테이블(Table)에서 DATA를 검색하기 위한 문장으로
가장 많이 사용하는 SQL문장이다.
- 모든 SQL문장은 세미콜론(;)으로 종료 되어야 한다.
- SELECT… FROM…은 필수 입력 사항.
- SQL 구문은 대소문자를 구분하지 않지만 문자상수(문자 리터럴)의
경우 대/소문자를 구분한다.
(where ename = ‘smith’, where ename = ‘ SMITH’은 두 조건절은
다른 의미다.)
- SQL키워드(SELECT, FROM, WHERE)는 주로 대문자로 사용하고
테이블명, 칼럼 이름은 소문자로 작성하는 것을 권장한다.
SQL기초강좌_기본쿼리(SELECT)
3. SELECT 기본형식
SELECT * | {[ALL | DISTINCT] column | expr [alias],...}
FROM table
[WHERE conditions]
[GROUP BY group_by_expression]
[ HAVING group_condition]
[ORDER BY column ];
SQL기초강좌_기본쿼리(SELECT)
SELECT : 추출하고자 하는 칼럼 나열
(습관처럼 ‘*’ 사용하지 말고 필요한 칼럼 만 선택하라)
DISTINCT : 중복 제거, 같은 값이면 하나만 출력
FROM : 질의에서 필요로 하는 테이블 또는 테이블 역할을 하는 것을 기술
(뷰, 인라인뷰, 가상테이블)
WHERE : 데이터 필터링, 행을 제한하거나 조인조건을 기술한다.
WHERE 절을 사용하지 않으면 FROM 절에 명시된 테이블의 모든
ROW(로우, 레코드, 행)를 조회한다.
4. SELECT 기본형식
SELECT * | {[ALL | DISTINCT] column | expr [alias],...}
FROM table
[WHERE conditions]
[GROUP BY group_by_expression]
[ HAVING group_condition]
[ORDER BY column ];
SQL기초강좌_기본쿼리(SELECT)
GROUP BY : 그룹핑 칼럼을 기준으로 한 그룹으로 묶어서 합계, 평균, 최대,
최소, COUNT등에서 사용
예 : MYEMP1 테이블에서 부서별로 급여의 평균을 추출
HAVING : 그룹핑 기준칼럼이나 그룹함수에 조건을 줄 때 사용한다.
ORDER BY : SELECT에서 추출하는 데이터의 정렬(기본 asc, 역순 정렬은 desc),
나타나는 칼럼의 순서를 기준으로 정렬하는 것도 가능하다.( order by 1).
ORDER BY를 제외한 쿼리를 먼저 실행하고 ORDER BY의 조건에 따라
레코드를 정렬한다.
5. SELECT 예시
SQL> SELECT DEPTNO FROM EMP;
DEPTNO
----------
20
30
30
20
30
30
10
20
10
30
20
30
20
10
14 개의 행이 선택되었습니다.
SQL기초강좌_기본쿼리(SELECT)
-- DEPTNO 값에 중복이 있더라도 다 출력된다.
SELECT ALL DEPTNO FROM EMP와 같은 의미이다.
SQL> SELECT DISTINCT DEPTNO FROM EMP;
DEPTNO
---------
30
20
10
6. SELECT 예시
SQL> SELECT empno, ename FROM emp
WHERE deptno = 10;
EMPNO ENAME
-------------------------
7782 CLARK
7839 KING
7934 MILLER
SQL기초강좌_기본쿼리(SELECT)
-- EMP 테이블에서 10번 부서 사원의 사번, 이름출력
7. SELECT 예시
SQL> select empno, ename from emp where rownum < 5;
EMPNO ENAME
------------------------------
7369 SMITH
7499 ALLEN
7521 WARD
7566 JONES
SQL기초강좌_기본쿼리(SELECT)
-- EMP 테이블에서 데이터 4건 출력
8. SELECT 예시
SQL> SELECT deptno, avg(sal), sum(sal) FROM emp
GROUP BY deptno;
DEPTNO AVG(SAL) SUM(SAL)
----------------------------------------------
30 1566.66667 9400
20 2175 10875
10 2916.66667 8750
SQL기초강좌_기본쿼리(SELECT)
-- EMP 테이블에서 부서별 급여의 평균, 합계를 출력
9. SELECT 예시
SQL> select deptno, avg(sal), sum(sal) from emp
group by deptno
having avg(sal) > 2000;
DEPTNO AVG(SAL) SUM(SAL)
---------- ----------- ------------
20 2175 10875
10 2916.66667 8750
SQL기초강좌_기본쿼리(SELECT)
-- EMP 테이블에서 부서별 급여의 평균, 합계를 구하는데
부서급여평균이 2000이상만 출력, 아래는 그룹함수에 조건을 주기
때문에 반드시 HAVING절에 조건을 줘야 한다.
만약 그룹핑 기준칼럼(DEPTNO)에 조건을 주는 경우라면
WHERE절 또는 HAVING절 모두에서 조건부여가 가능하다.
15. SELECT 예시
SQL> SELECT empno, ename FROM myemp1
ORDER BY ename DESC;
EMPNO ENAME
--------- ------------
9999997 홍길동9999997
9999991 홍길동9999991
9999985 홍길동9999985
9999979 홍길동9999979
SQL기초강좌_기본쿼리(SELECT)
-- MYEMP 테이블에서 사번, 이름출력을 출력하는데 이름
내림차순(다,나,가순)으로 정렬
16. SELECT 예시
SQL> SELECT COUNT(*) FROM MYEMP1
WHERE SAL >= 1000000
AND SAL <= 2000000;
COUNT(*)
------------
2000002
SQL기초강좌_기본쿼리(SELECT)
-- MYEMP1 테이블에서 급여가 100만원에서 200만원 사이인
사원의 수를 출력