2021-11-30 20:42 작성

My SQL basic 메모

Table of contents

WHERE - Search condition

  • AND, OR 그리고 NOT과 같은 논리 연산자를 사용해서 하나 혹은 여러개의 표현을 조합할 수 있다.
  • SELECT외에도 UPDATE 혹은 DELETE 구문에서도 사용할 수 있다.
  • 아래의 순서대로 진행된다.

SELECT 
    lastname, 
    firstname, 
    jobtitle,
    officeCode
FROM
    employees
WHERE
    jobtitle = 'Sales Rep' AND 
    officeCode = 1;

output:

lastname firstname jobtitle officeCode
Jennings Leslie Sales Rep 1
Thompson Leslie Sales Rep 1
  • Between A AND B 연산자
SELECT 
    firstName, 
    lastName, 
    officeCode
FROM
    employees
WHERE
    officeCode BETWEEN 1 AND 3
ORDER BY officeCode;

output:

firstName lastName officeCode
Diane Murphy 1
Mary Patterson 1
Jeff Firrelli 1
Anthony Bow 1
Leslie Jennings 1
Leslie Thompson 1
Julie Firrelli 2
Steve Patterson 2
Foon Yue Tseng 3
George Vanauf 3
  • LIKE 연산자: 특정 패턴에 TRUE를 반환하는 데이터를 추출
Wildcard Description
% 0 ~ 여러개의 문자
_ 1 개 문자
SELECT 
    firstName, 
    lastName
FROM
    employees
WHERE
    lastName LIKE '%son'
ORDER BY firstName;

output:

firstName lastName
Leslie Thompson
Mary Patterson
Steve Patterson
William Patterson
  • IN 연산자: list 안에 있는 값들 중 한 개라도 매칭되는 데이터 추출
SELECT 
    firstName, 
    lastName, 
    officeCode
FROM
    employees
WHERE
    officeCode IN (1, 2, 3)
ORDER BY 
    officeCode;

output:

firstName lastName officeCode
Diane Murphy 1
Mary Patterson 1
Jeff Firrelli 1
Anthony Bow 1
Leslie Jennings 1
Leslie Thompson 1
Julie Firrelli 2
Steve Patterson 2
Foon Yue Tseng 3
George Vanauf 3
  • IS NULL 연산자: 값이 NULL인 데이터를 추출 (숫자 0이나 빈 문자열과는 다름)
SELECT 
    lastName, 
    firstName, 
    reportsTo
FROM
    employees
WHERE
    reportsTo IS NULL;

output:

lastName firstName reportsTo
Murphy Diane NULL

1 row in set (0.01 sec)

  • 비교 연산자
Operator Description
= Equal to. You can use it with almost any data type.
<> or != Not equal to
< Less than. You typically use it with numeric and date/time data types.
> Greater than.
<= Less than or equal to
>= Greater than or equal to
SELECT 
    lastname, 
    firstname, 
    jobtitle
FROM
    employees
WHERE
    jobtitle <> 'Sales Rep';

output:

lastname firstname jobtitle
Murphy Diane President
Patterson Mary VP Sales
Firrelli Jeff VP Marketing
Patterson William Sales Manager (APAC)
Bondur Gerard Sale Manager (EMEA)
Bow Anthony Sales Manager (NA)

SELECT DISTINCT - 중복된 열 제거

테이블에서 질의 데이터를 추출할 때 중복된 열이 발생하는데 SELECT 구문에서 DISTINCT를 사용함으로써 중복을 제거할 수 있다.

  • 한 열에 여러 개의 NULL이 존재하는 경우 DISTINCT는 이 또한 중복으로 판단하기 때문에 중복된 NULL을 제거하고 한 개의 NUlL만 반환한다.
  • 여러 개의 열이 주어지는 경우, DISTINCT는 여러 개의 열에서 중복되는 데이터를 종합적으로 고려하여 결과를 반환한다.
SELECT DISTINCT
    state, city
FROM
    customers
WHERE
    state IS NOT NULL
ORDER BY 
    state, 
    city;

output:

state city
BC Tsawassen
BC Vancouver
CA Brisbane
CA Burbank
CA Burlingame
CA Glendale
CA Los Angeles
CA Pasadena
CA San Diego

위에서 중복된 state 값 중 고유의 city 값이 존재하는 경우 제거하지 않고 state와 city 두 개의 열에서 모두 중복되는 데이터만 제거한다. (49 rows => 37 rows)