SQL(Structured Query Language)

  • 데이터베이스 스키마 생성, 자료의 검색, 수정과 데이터터베이스 객체 접근 관리 등을 위해 고안된 언어
  • 다수의 데이터베이스 관련 프로그램의 표준언어

  • SQL 명령어의 종류
    1. DML: 데이터 조작어로 검색 및 수정하기 위한 수단 제공
      • SELECT, INSERT, UPDATE, DELETE, MERGE
    2. DDL: 데이터 구조를 생성, 변경, 삭제 등의 기능을 제공
      • CREATE, ALTER, DROP, RENAME
    3. DCL: 데이터에 대한 권한 관리 및 트랜잭션 제어
      • GRANT, REVOKE

Syntax

SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY

1. SELECT

  • 데이터베이스에서 원하는 데이터를 검색, 추출
  • Syntax
SELECT [ALL|DISTINCT] _리스트
  • 기능

    • Projection: 특정 컬럼 값만 추출하는 것

    projection

    • SELECTION : 특정 행을 추출하는 것

    SELECTION

    • Join : 여러개의 테이블 엮어서 결과 값을 출력하는 것

1-1. SELECT 예제

SELECT Column  FROM 테이블명;
SELECT * FROM emp;
SELECT ename FROM emp;
SELECT DISTINCT deptno FROM emp;

2. WHERE

  • 조건을 부여하여 만족하는 ROW Selection

2.1. 연산자

  • =, !=, <, >
SELECT *
FROM emp
WHERE sal >= 1200;
SELECT ENAME, JOB, HIREDATE
FROM emp
WHERE JOB != 'CLERK';
SELECT ENAME, JOB, SAL
FROM emp
WHERE SAL >= 2000 AND HIREDATE < '81/06/01';
  • IN, NOT IN
SELECT ENAME, JOB
FROM emp
WHERE JOB IN ('CLERK', 'SALESMAN');
SELECT ENAME, JOB
FROM emp
WHERE JOB NOT IN ('CLERK');
  • BETWEEN ‘ ‘ and ‘ ‘
SELECT ENAME, JOB, HIREDATE
FROM emp
WHERE HIREDATE BETWEEN '81/01/01' and '81/06/30';
  • LIKE
    • %는 뒤에 무엇이든지
    • _ 는 한글자를 의미
    • %를 문자로 인식하게 하기 위해서는 / 를 사용
SELECT * FROM emp
WHERE ename LIKE 'S%';
SELECT * FROM emp
WHERE ename LIKE 'S___H';
SELECT *
FROM emp
WHERE ENAME LIKE '_A%';
  • IS NOT NULL
SELECT ENAME, JOB
FROM emp
WHERE COMM IS NOT NULL;
  • IS NULL
SELECT ENAME, JOB
FROM emp
WHERE COMM IS NULL;
  • NOT
SELECT ENAME, JOB, SAL
FROM emp
WHERE NOT (SAL >= 2000);

3. ORDER BY

  • 주어진 컬럼 리스트의 순서로 결과를 정렬
  • 결과 정렬 방법
    • ASC : 오름차순 (default)
    • DESC : 내림차순
  • 컬럼명 대신 Alias로 해되 사용 가능
SELECT EMPNO, ENAME NAME, JOB
FROM emp
ORDER BY name;
  • 컬럼의 순서로도 가능
SELECT EMPNO, ENAME NAME, JOB
FROM emp
ORDER BY 2;
  • 다중 조건으로 컬럼 정렬
    • 첫번째 컬럼이 같으면 두번째 컬럼으로, 두번째 컬럼도 같으면 세번째 …
SELECT *
FROM emp
ORDER BY deptno, sal DESC;

4. GROUP BY

  • 데이터들을 원하는 그룹으로 나눌 때 사용
SELECT deptno, sum(sal)
FROM emp
GROUP BY deptno;

5. HAVING

  • GROUP BY 한 것에 조건을 주고 싶을 때 사용
  • HAVING 절은 GROUP BY와 함께 쓰임
SELECT deptno, sum(sal)
FROM emp
GROUP BY deptno
HAVING sum(sum) > 10000
ORDER BY deptno;

6. Literal

  • SELECT 절에 사용되는 문자, 숫자, Date 타입 등의 상수
  • Date 타입이나 문자열은 작은따옴표(‘‘)로 둘러싸야 함
  • 문자열 결합(Concatunation) 연산자 :  
SELECT ename, 1000, SYSDATE FROM emp;
SELECT 'Name is ' || ename || ' and no is' || empno FROM emp;
## 결과 값
Name is SMITH and no is7369
Name is ALLEN and no is7499
Name is WARD and no is7521
Name is JONES and no is7566
Name is MARTIN and no is7654
Name is BLAKE and no is7698
Name is CLARK and no is7782
Name is SCOTT and no is7788
Name is KING and no is7839
Name is TURNER and no is7844
Name is ADAMS and no is7876
Name is JAMES and no is7900
Name is FORD and no is7902
Name is MILLER and no is7934