SQL 기초 정리

Structured Query Language

관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다.

Database Table

데이터베이스에는 하나 이상의 테이블이 존재한다.

SELECT

특정 항목을 보고 싶을 때

SELECT column1, column2, ...
FROM table_name;

항목 전체를 보고 싶을 때

SELECT * FROM table_name;

SELECT DISTINCT

특정 한 column1의 값만 보고 싶을 때

SELECT DISTINCT column1, column2, ...
FROM table_name;

특정 column1의 개수를 알고 싶을 때

SELECT COUNT(DISTINCT column1) FROM table_name;

특정 column1의 개수를 알고 그 column1 명을 재지정할 때

SELECT COUNT(*) AS column1_name FROM (SELECT DISTINCT column1 FROM table_name);

WHERE

특정 column1을 특정 조건을 걸어서 찾을 경우

SELECT column1, column2, ...
FROM table_name
WHERE condition;

WHERE절 연산자

| Operator | Description | | :————- | :————- | | = | Equal | | <> | Not equal. Note: In some versions of SQL this operator may be written as != | | > | Greater than | | < | Less than | | >= | Greater than or equal | | <= | Less than or equal | | BETWEEN | Between an inclusive range | | LIKE | Search for a pattern | | IN | To specify multiple possible values for a column |

AND & OR & NOT

AND 구문

SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;

OR 구문

SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;

NOT 구문

SELECT column1, column2, ...
FROM table_name
WHERE NOT condition;

BY ORDER

컬럼1, 컬럼2를 기준으로 정렬된 table_name에서 컬럼1, 컬럼2를 선택한다.

SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
  • ASC : 오름차순
  • DESC : 내림차순

INSERT INTO

테이블에 새로운 정보를 넣을 때 사용된다.

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

열 이름과 값을 모두 삽입하는 방법

INSERT INTO table_name
VALUES (value1, value2, value3, ...);

값의 순서가 테이블의 컬럼과 같을 경우 삽입하는 방법

NULL

테이블 필드가 선택 사항일 경우, 이 필드에 값을 추가하지 않고 업데이트하게 될 경우 NULL 값으로 저장된다.

  • NULL 값 유무 확인
    SELECT column_names
    FROM table_name
    WHERE column_name IS NULL;
    
  • NULL 값이 아닌 것 확인
    SELECT column_names
    FROM table_name
    WHERE column_name IS NOT NULL;
    

UPDATE

테이블의 기록을 업데이트할 때 WHERE절을 넣는 것을 주의하여야한다.
WHERE절은 업데이트 해야하는 기록들을 지정한다.

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

DELETE

테이블에 대한 기존 기록 삭제

DELETE FROM table_name
WHERE condition;

SELECT TOP

SELECT TOP : 반환할 기록의 수를 지정하는 데 사용된다.

  • ORACLE : ROWNUM 지원
  • MySQL : LIMIT 지원

    1. SQL 서버 / MS 엑세스 구문
      SELECT TOP number|percent column_name(s)
      FROM table_name
      WHERE condition;
      
    2. MySQL 구문
      SELECT column_name(s)
      FROM table_name
      WHERE condition
      LIMIT number;
      
    3. ORACLE 구문
      SELECT column_name(s)
      FROM table_name
      WHERE ROWNUM <= number;
      

MIN(), MAX() 함수

  • MIN()
    SELECT MIN(column_name)
    FROM table_name
    WHERE condition;
    
  • MAX()
    SELECT MAX(column_name)
    FROM table_name
    WHERE condition;
    

COUNT(), AVG(), SUM() 함수

  • COUNT()
    SELECT COUNT(column_name)
    FROM table_name
    WHERE condition;
    
  • AVG()
    SELECT AVG(column_name)
    FROM table_name
    WHERE condition;
    
  • SUM()
    SELECT SUM(column_name)
    FROM table_name
    WHERE condition;
    

LIKE 연산자

열의 특정 패턴을 검색하는 WHERE절에서 사용된다. LIKE 연산자는 두 와일드 카드와 함께 사용된다.

  • % : 0이나 1 또는 여러 문자를 나타낸다.
  • _ : 하나의 문자를 나타낸다.
SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;

IN 연산자

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...)|(SELECT STATEMENT);

BETWEEN 연산자

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

ALIASES

테이블, 테이블의 열 등 임시 이름을 부여하는 데 사용된다.
이는 열의 이름을 더 쉽게 읽을 수 있도록 하는데 쓰인다.

SELECT column_name AS alias_name
FROM table_name;

JOIN

테이블의 특정 공통열을 기반으로 두 개 이상의 테이블의 행을 결합할 때 사용한다.

SELECT table1.column1-1, table2.column2-1, table1.column1-2
FROM table1
INNER JOIN table2 ON table1.columnID=table2.columnID;

결합하면 columnID를 중심으로 새로운 테이블이 생성된다.