[SQL] 1. SQL과 그 문법

공형규·2023년 10월 11일

SQL

목록 보기
1/2

SQL 이란

SQL 언어 도입

  • SQL은 관계형 데이터베이스(RDBMS) 내 데이터를 관리하기 위해 설계 된 프로그래밍 언어

  • SQL은 Structured Query Language 의 약어

  • SQL의 구성 요소

    • Data Definition Language (DDL)

      • 데이터 정의 언어
      • 데이터베이스 구조를 설계하는 SQL 명령어 나타냄
      • 데이터베이스 객체를 만들고/수정
      • 예시: CREATE 명령어 사용하여 테이블, 뷰, 인덱스와 같은 DB 객체 생성
    • Data Manipulation Language (DML)

      • 데이터 조작 언어
      • 새 정보 쓰거나 RDBMS 기존 레코드 수정
      • 예시: INSERT 명령 사용하여 데이터베이스 새 레코드 지정
    • Data Control Language (DCL)

      • 데이터 제어 언어
      • DB 액세스를 관리하거나 권한 부여
      • 예시: GRANT 명령 사용하여 특정 애플리케이션이 하나 이상 테이블 조작하도록 허용

SQL 문법

  • SQL은 선언형 언어라 문법이 자연어처럼 읽힘

    • SQL 문(statement)은 행위를 묘사하는 동사로 시작함
    • 예시: SELECT, INSERT, UPDATE, DELETE
    • 동사 이후에는 주제술부가 나옴
  • 술부는 ture false unknown 으로 평가될 수 있는 조건으로 특정됨

  • 예시

    SELECT
    		first_name
    FROM
    		employees
    WHERE
    		YEAR(hire_date) = 2000;
  • 위에서 볼 수 있듯이, 보통 문장 처럼 읽힘

    • '2000년에 고용된 고용인의 이름을 가져와라'
  • SELECT first_name, FROM employees, WHERE 은 SQL문의 절(clauses)

    • 몇몇 절은 필수
    • SELECT, FROM 절은 필수
    • WEHRE 과 같이 다른 절들은 옵션
  • SQL은 기술이 없는 사람들을 염두에 두고 만들어졌기 때문에, 매우 간단하고 쉽게 이해 가능

    • SQL 문을 작성하기 위해
    • PHP, Java, C++과 같은 명령형 언어에서 어떻게 하려는지를 말하기 보다는
    • 무엇을 할 것인지 말하기만 하면 된다.

SQL 명령어(commands)

  • SQL은 많은 언어로 이루어져 있다.

    • 각 SQL 명령어는 세미콜론 ; 으로 끝난다.
    • 예를 들어 다음 서로 다른 두 SQL 명령어는 세미콜론으로 구분 된다.
    SELECT
    		first_name, last_name
    FROM
    		employees;
    
    DELETE FROM employees
    WHERE
    		hire_date < '1990-01-01';
    • SQL은 명령의 끝에 세미콜론을 마킹한다.
  • 각 명령어는 리터럴, 키워드, 식별자, 표현문 등의 토큰으로 이루어져 있다.

    • 토큰들은 공백, 탭, 개행 등으로 구분된다.

리터럴 Literals

  • 리터럴은 상수로 알려진 명백한(explicit) 값이다.

    • SQL은 세 가지 리터럴을 제공한다.
      • string
      • numeric (수)
      • binary
  • 문자 리터럴은 따옴표로 감싸진 하나 이상의 알파벳 문자로 이루어져있다.

    'John'
    '1990-01-01'
    '50'
    • 50은 수지만, 따옴표 ''로 감싸져있기에 SQL은 이를 문자 리터럴로 다룬다.
    • SQL은 대소문자를 구분한다. 따라서 'John''JOHN' 은 다르다.
  • 수 리터럴은 정수, 소수, 과학적 표기법 등을 나타낸다.

    200
    -5
    6.0221415E23
  • SQLdms x'0000'의 표기법으로 이진값을 표현한다.

    x'01'
    x'0f0ff'

키워드 keywords

  • SQL은 특별한 뜻을 가진 많은 키워드들을 가진다.
    • 예: SELECT, INSERT, UPDATE, DELETE, DROP
    • 이 키워드들은 예약어이다.
    • 따라서 이들을 테이블, 컬럼, 인덱스, 뷰, stored procedures, 트리거, 다른 DB 객체 등의 이름으로 사용해서는 안된다.

식별자 Identifiers

  • 식별자는 테이블, 컬럼, 인덱스 등의 DB 특정 객체를 나타낸다.

    • SQL은 식별자의 대소문자를 구분하지 않는다. (위의 john, JOHN은 달랐지만 여기서는 같다는 뜻)
    • 아래 절들은 모두 같다.
    Select * From employees;
    
    SELECT * FROM EMPLOYEES;
    
    select * from employees;
    
    SELECT * FROM employees;
  • SQL 명령어들의 가독성 향상을 위해 다음과 같은 룰을 따른다. (본 글의 내용에서는)

    • 키워드: uppercase
    • 식별자: lowercase

주석 Comments

  • SQL 문을 설명하기 위해 SQL 주석을 사용한다.

    • 주석과 함께 SQL 문을 파싱할 때
    • DB 엔진은 주석의 문자열을 무시한다.
  • 주석은 연이은 두 하이픈 -- 으로 나타낸다.

    • 이는 줄의 남은 부분에도 허용된다.
    SELECT
    		employee_id, salary
    FROM
    		employees
    WHERE
    		salary < 3000;-- employess with low salary
  • 여러줄의 설명이 필요할 때는 C 스타일의 표기법 /**/ 을 사용하면 된다.

    /*
    	increase 5% for employees whose salary is less than 3,000
    	여러줄을 허용한다!
    */
    SELECT
    		employee_id, salary
    FROM
    		employees
    WHERE
    		salary < 3000;

참고 링크: https://www.sqltutorial.org/

profile
즐겁게 개발하는 개발자

0개의 댓글