SQL (Structured Query Language)

  • 구조화된 질의(요청) 언어
  • 관계형데이터베이스 관리시스템의 데이터를 관리하기 위해서 설계된 특수 목적의 프로그래밍 언어이다
  • 데이터의 검색, 관리(수정/삭제/변경), 데이터베이스 객체 생성과 수정, 데이터베이스 접근제어를 위해 설계되었다.
  • Oracle, MySQL, DB2, MS SQL Server 등이 SQL을 표준으로 채택하고 있다.

SQL 명령어의 종류

  • DDL(Data Definition Language: 데이터 정의 언어)
    • 데이터베이스 객체 생성, 수정, 삭제
    • CREAT, DROP, ALTER, TRUNCATE
  • DML (Data Manipulation Language: 데이터 조작 언어)
    • 데이터의 추가, 조회, 수정, 삭제
    • INSERT, SELECT, UPDATE, DELETE
  • DCL (Data Control Language: 데이터 제어 언어)
    • 권한의 부여, 박탈
    • GRANT, REVOKE, COMMIT, ROLLBACK, SAVEPOINT

SELECT문

  • 테이블의 데이터를 조회하는 명령문이다.
    • 조회 기능
      • 프로젝션 : 조회결과로 반환되는 열(컬럼)을 사용자가 선택할 수 있다.
      • 선택 : 조회결과로 반환되는 행을 다양한 조건으로 제한할 수 있다.
      • 조인 : 두 개 이상의 테이블을 연결해서 각 테이블에 저장된 데이터를 한 번에 가져올 수 있다.
    • 테이블의 모든 행과 모든 열을 조회하기
        SELECT *
        FROM   테이블명;
      
    • 테이블에서 특정 컬럼을 선택해서 조회하기
        SELECT 컬럼명, 컬럼명, 컬럼명, ...
        FROM   테이블명;
      
    • 산술연산자(+, -, *, /) 사용하기
        SELECT 컬럼명 + 10, 컬럼명 + 컬럼명, (컬럼명*2) + 컬럼명, ...
        FROM   테이블명;
      
      • 산술연산자를 사용하는 산술식에 NULL값이 포함되어 있으면 연산결과는 항상 NULL이다.
      • 오라클에서 NULL은 값이 결정되지 않았다는 의미다.
    • 별칭(Alias) 정의하기
            SELECT 컬럼명 별칭, 컬럼명 AS 별칭, ...
            FROM   테이블명
      
      • 컬럼명의 이름을 변경한다.(단, 테이블의 컬럼명이 변경되는 것은 아니다.)
      • 계산식이 포함된 컬럼에 적절한 이름을 붙일 때 유용하다.
      • 별칭은 컬럼명 바로 뒤에 적는다. 컬럼명과 별칭 사이에 AS 키워드를 사용할 수 있다.
      • 별칭에 특수문자, 공백이 포함되는 경우 ““를 사용해야 한다.
    • 중복행없이 조회하기
        SELECT DISTINCT 컬럼명, 컬럼명, ...
        FROM   테이블명
      
      • DISTINCT 키워드는 제시된 컬럼의 값이 동일한 행은 한 번만 조회한다.
  • 선택되는 행의 제한
          SELECT 컬럼명, 컬럼명, 컬럼명, ...
          FROM   테이블명
          WHERE  조건식;
    
    • 조건식의 연산결과가 true로 판정되는 행만 선택된다.
  • 비교 연산자
    • between 하한값 and 상한값: 값의 범위에 포함(하한값, 상한값도 포함)
    • in (값1, 값2, 값3, …): 제시된 값들 중에서 하나라도 일치한 것
    • like 문자패턴: 문자패턴과 일치하는 것
    • is null: null값인 것
    • in not null: null값이 아닌 것
  • 조건식
    • where 컬럼명 비교연산자 값
    • where 연산식 비교연산자 값
    • where 연산식 비교연산자 연산식
    • 작성예)
      • where salary > 6000;
      • where department_id = 70;
      • where salary*12 > 50000;
      • where manager_id is not null;
      • where department_id in (10, 20)
      • where job_id in (‘AD_PRES’, ‘AD_VP’);
  • 논리 연산자 - and 조건식의 모든 조건이 true일 때 true를 반환한다. - or 조건식의 조건 중 하나라도 true일 때 true를 반환한다. -not 조건식의 연산결과를 반전시킨다.

  • 논리 연산자가 포함된 조건식
    • where 컬럼명 비교연산자 값 and 컬럼명 비교연산자 조건식
      • 작성예)
        • where department_id = 60 and salary >= 5000;
        • where department_id = 50 and job_id like ‘%MAN’;
        • where salary >= 10000 and salary <= 20000;
        • where department_id in (50, 60, 70) and salary > 15000;
  • 정렬하기
    • ORDER BY 절을 사용하면 행을 정렬할 수 있다.
    • ORDER BY 절은 SELECT문의 가장 끝에 위치한다.
    • ORDER BY 절에서는 정렬조건으로 컬럼명, 연산식, 별칭, 컬럼의 순번을 지정할 수 있다.
    • ORDER BY 절
        SELECT 컬럼명, 컬럼명, 컬럼명
        FROM   테이블명
        [WHERE 조건식]
        [ORDER BY 정렬조건 ASC|DESC]