SQL기초강좌
기본쿼리(SELECT)
SELECT 개요
테이블(Table)에서 DATA를 검색하기 위한 문장으로
가장 많이 사용하는 SQL문장이다.
- 모든 SQL문장은 세미콜론(;)으로 종료 되어야 한다.
- SELECT… FROM…은 필수 입력 사항.
- SQL 구문은 대소문자를 구분하지 않지만 문자상수(문자 리터럴)의
경우 대/소문자를 구분한다.
(where ename = ‘smith’, where ename = ‘ SMITH’은 두 조건절은
다른 의미다.)
- SQL키워드(SELECT, FROM, WHERE)는 주로 대문자로 사용하고
테이블명, 칼럼 이름은 소문자로 작성하는 것을 권장한다.
SQL기초강좌_기본쿼리(SELECT)
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(로우, 레코드, 행)를 조회한다.
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의 조건에 따라
레코드를 정렬한다.
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
SELECT 예시
SQL> SELECT empno, ename FROM emp
WHERE deptno = 10;
EMPNO ENAME
-------------------------
7782 CLARK
7839 KING
7934 MILLER
SQL기초강좌_기본쿼리(SELECT)
-- EMP 테이블에서 10번 부서 사원의 사번, 이름출력
SELECT 예시
SQL> select empno, ename from emp where rownum < 5;
EMPNO ENAME
------------------------------
7369 SMITH
7499 ALLEN
7521 WARD
7566 JONES
SQL기초강좌_기본쿼리(SELECT)
-- EMP 테이블에서 데이터 4건 출력
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 테이블에서 부서별 급여의 평균, 합계를 출력
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절 모두에서 조건부여가 가능하다.
SELECT 예시
SQL> SELECT ALL deptno, job FROM EMP ;
DEPTNO JOB
---------- -----
20 CLERK
30 SALESMAN
30 SALESMAN
……
10 CLERK
SQL기초강좌_기본쿼리(SELECT)
-- EMP 테이블에서 DEPTNO, JOB이 동시에 중복되는 경우라도
중복된 행을 출력된다.
SELECT 예시
SQL> SELECT deptno, job FROM EMP;
DEPTNO JOB
---------- -----
20 CLERK
30 SALESMAN
30 SALESMAN
……
10 CLERK
SQL기초강좌_기본쿼리(SELECT)
-- 칼럼앞에 DISTINCT, ALL이 없다면 기본적으로 ALL이
적용된다. 즉 중복되더라도 SELECT된다는 것이다.
SELECT 예시
SQL> SELECT DISTINCT deptno, job FROM EMP ORDER BY deptno, job;
DEPTNO JOB
--------- -----
10 CLERK
10 MANAGER
10 PRESIDENT
20 ANALYST
20 CLERK
20 MANAGER
30 CLERK
30 MANAGER
30 SALESMAN
9 개의 행이 선택되었습니다.
SQL기초강좌_기본쿼리(SELECT)
-- DEPTNO, JOB 칼럼 값이 같은 경우 중복을 제거하고 하나만 출력
SELECT 예시
SQL기초강좌_기본쿼리(SELECT)
-- DISTINCT와 같은 의미
SQL> SELECT UNIQUE deptno, job FROM EMP ORDER BY deptno, job;
DEPTNO JOB
--------- -----
10 CLERK
10 MANAGER
10 PRESIDENT
20 ANALYST
20 CLERK
20 MANAGER
30 CLERK
30 MANAGER
30 SALESMAN
9 개의 행이 선택되었습니다.
SELECT 예시
SQL> SELECT empno, ename FROM myemp1
ORDER BY ename ASC;
EMPNO ENAME
--------- ------------
10000001 가길동10000001
1000001 가길동1000001
1000007 가길동1000007
100001 가길동100001
1000013 가길동1000013
SQL기초강좌_기본쿼리(SELECT)
-- MYEMP1 테이블에서 사번, 이름출력을 출력하는데 이름 오름차순
(가,나,다순)으로 정렬, ASC는 생략해도 오름차순으로 정렬된다.
SELECT 예시
SQL> SELECT empno, ename FROM myemp1
ORDER BY ename DESC;
EMPNO ENAME
--------- ------------
9999997 홍길동9999997
9999991 홍길동9999991
9999985 홍길동9999985
9999979 홍길동9999979
SQL기초강좌_기본쿼리(SELECT)
-- MYEMP 테이블에서 사번, 이름출력을 출력하는데 이름
내림차순(다,나,가순)으로 정렬
SELECT 예시
SQL> SELECT COUNT(*) FROM MYEMP1
WHERE SAL >= 1000000
AND SAL <= 2000000;
COUNT(*)
------------
2000002
SQL기초강좌_기본쿼리(SELECT)
-- MYEMP1 테이블에서 급여가 100만원에서 200만원 사이인
사원의 수를 출력

Sql기초강좌_select기본

  • 1.
  • 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> SELECTDEPTNO 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> SELECTempno, ename FROM emp WHERE deptno = 10; EMPNO ENAME ------------------------- 7782 CLARK 7839 KING 7934 MILLER SQL기초강좌_기본쿼리(SELECT) -- EMP 테이블에서 10번 부서 사원의 사번, 이름출력
  • 7.
    SELECT 예시 SQL> selectempno, ename from emp where rownum < 5; EMPNO ENAME ------------------------------ 7369 SMITH 7499 ALLEN 7521 WARD 7566 JONES SQL기초강좌_기본쿼리(SELECT) -- EMP 테이블에서 데이터 4건 출력
  • 8.
    SELECT 예시 SQL> SELECTdeptno, 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> selectdeptno, 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절 모두에서 조건부여가 가능하다.
  • 10.
    SELECT 예시 SQL> SELECTALL deptno, job FROM EMP ; DEPTNO JOB ---------- ----- 20 CLERK 30 SALESMAN 30 SALESMAN …… 10 CLERK SQL기초강좌_기본쿼리(SELECT) -- EMP 테이블에서 DEPTNO, JOB이 동시에 중복되는 경우라도 중복된 행을 출력된다.
  • 11.
    SELECT 예시 SQL> SELECTdeptno, job FROM EMP; DEPTNO JOB ---------- ----- 20 CLERK 30 SALESMAN 30 SALESMAN …… 10 CLERK SQL기초강좌_기본쿼리(SELECT) -- 칼럼앞에 DISTINCT, ALL이 없다면 기본적으로 ALL이 적용된다. 즉 중복되더라도 SELECT된다는 것이다.
  • 12.
    SELECT 예시 SQL> SELECTDISTINCT deptno, job FROM EMP ORDER BY deptno, job; DEPTNO JOB --------- ----- 10 CLERK 10 MANAGER 10 PRESIDENT 20 ANALYST 20 CLERK 20 MANAGER 30 CLERK 30 MANAGER 30 SALESMAN 9 개의 행이 선택되었습니다. SQL기초강좌_기본쿼리(SELECT) -- DEPTNO, JOB 칼럼 값이 같은 경우 중복을 제거하고 하나만 출력
  • 13.
    SELECT 예시 SQL기초강좌_기본쿼리(SELECT) -- DISTINCT와같은 의미 SQL> SELECT UNIQUE deptno, job FROM EMP ORDER BY deptno, job; DEPTNO JOB --------- ----- 10 CLERK 10 MANAGER 10 PRESIDENT 20 ANALYST 20 CLERK 20 MANAGER 30 CLERK 30 MANAGER 30 SALESMAN 9 개의 행이 선택되었습니다.
  • 14.
    SELECT 예시 SQL> SELECTempno, ename FROM myemp1 ORDER BY ename ASC; EMPNO ENAME --------- ------------ 10000001 가길동10000001 1000001 가길동1000001 1000007 가길동1000007 100001 가길동100001 1000013 가길동1000013 SQL기초강좌_기본쿼리(SELECT) -- MYEMP1 테이블에서 사번, 이름출력을 출력하는데 이름 오름차순 (가,나,다순)으로 정렬, ASC는 생략해도 오름차순으로 정렬된다.
  • 15.
    SELECT 예시 SQL> SELECTempno, ename FROM myemp1 ORDER BY ename DESC; EMPNO ENAME --------- ------------ 9999997 홍길동9999997 9999991 홍길동9999991 9999985 홍길동9999985 9999979 홍길동9999979 SQL기초강좌_기본쿼리(SELECT) -- MYEMP 테이블에서 사번, 이름출력을 출력하는데 이름 내림차순(다,나,가순)으로 정렬
  • 16.
    SELECT 예시 SQL> SELECTCOUNT(*) FROM MYEMP1 WHERE SAL >= 1000000 AND SAL <= 2000000; COUNT(*) ------------ 2000002 SQL기초강좌_기본쿼리(SELECT) -- MYEMP1 테이블에서 급여가 100만원에서 200만원 사이인 사원의 수를 출력