2021-11-30 20:42 작성

My SQL basic 메모

Table of contents

BETWEEN 연산자

value BETWEEN low AND high;

BETWEEN 연산자는 임의의 값이 범위 안에 존재하는지 여부를 확인하는 논리 연산자다. 범위 안에 존재할 경우 1(true)을 반환하고 그렇지 않을 경우 0(false)을 반환한다. 만약, value, low 혹은 high 중 하나가 NULL일 경우 연산자는 NULL을 반환한다.

SELECT 
   orderNumber,
   requiredDate,
   status
FROM 
   orders
WHERE 
   requireddate BETWEEN 
     CAST('2003-01-01' AS DATE) AND 
     CAST('2003-01-31' AS DATE);

output:

orderNumber requiredDate status
10100 2003-01-13 Shipped
10101 2003-01-18 Shipped
10102 2003-01-18 Shipped

NOT BETWEEN

BETWEEN 연산자 앞에 NOT이 붙어 BETWEEN의 연산값의 역을 반환한다.

LIKE 연산자

LIKE 연산자는 임의의 문자열이 특정 패턴을 포함하는지 여부를 테스트하는 논리 연산자다.

expression LIKE pattern ESCAPE escape_character

expressionpattern에 일치하게 되면 LIKE 연산자는 1(true)를 반환하고 그렇지 않으면 0(false)를 반환한다.

Wildcard Description
% 0 ~ 여러개의 문자
_ 1 개 문자

예를 들어, s%sunsix와 같이 s로 시작하는 어떤 문자열이라도 반환한다. se_seesea와 같이 se 다음에 하나의 추가 character가 오는 문자열을 반환한다.

pattern이 와일드카드 character를 포함하고 있고 이것을 일반적 character로 다루길 원할 때는 ESCAPE 절을 사용할 수 있다.

일반적으로 LIKE 연산자는 SELECT, DELETE 그리고 UPDATE 구문의 WHERE 절에서 사용할 수 있다.

SELECT 
    employeeNumber, 
    lastName, 
    firstName
FROM
    employees
WHERE
    lastname LIKE '%on%';

output: on 부분 문자열을 포함하는 모든 데이터를 찾는다.

employeeNumber lastName firstName
1056 Patterson Mary
1088 Patterson William
1102 Bondur Gerard
1166 Thompson Leslie
1216 Patterson Steve
1337 Bondur Loui
1504 Jones Barry
SELECT 
    employeeNumber, 
    lastName, 
    firstName
FROM
    employees
WHERE
    firstname LIKE 'M_ry';

output:

employeeNumber lastName firstName
1056 Patterson Mary

NOT LIKE 연산자

특정 패턴에 매칭되는 데이터를 제외한 정보를 얻을 수 있다.

SELECT 
    employeeNumber, 
    lastName, 
    firstName
FROM
    employees
WHERE
    lastName NOT LIKE 'B%';

output: B% 패턴에 맞는 데이터를 제외한 정보를 제공한다.

employeeNumber lastName firstName
1002 Murphy Diane
1056 Patterson Mary
1076 Firrelli Jeff
1088 Patterson William
1165 Jennings Leslie
1166 Thompson Leslie
1188 Firrelli Julie
1216 Patterson Steve
1286 Tseng Foon Yue
1323 Vanauf George
1370 Hernandez Gerard
1401 Castillo Pamela
1504 Jones Barry
1611 Fixter Andy
1612 Marsh Peter
1619 King Tom
1621 Nishi Mami
1625 Kato Yoshimi
1702 Gerard Martin

ESCAPE 절과 LIKE 연산자

때때로 10%, _20 등과 같은 데이터를 처리해야 하는 순간이 있는데 해당 특수문자들은 모두 와일드카드로 쓰이고 있기 때문에 ESCAPE 처리를 해 일반 문자로 보이도록 변경해주어야 한다. 만약 escape 문자를 명시적으로 지정하지 않으면 백슬래시(\)가 기본 escape 문자가 된다.

예를 들어, 만약 _20을 포함하는 데이터를 찾을 경우에 %\_20%을 사용할 수 있다.

SELECT 
    productCode, 
    productName
FROM
    products
WHERE
    productCode LIKE '%\_20%';

output: 기본 escape 문자(\)

productCode productName
S10_2016 1996 Moto Guzzi 1100i
S24_2000 1960 BSA Gold Star DBD34
S24_2011 18th century schooner
S24_2022 1938 Cadillac V-16 Presidential Limousine
S700_2047 HMS Bounty
SELECT 
    productCode, 
    productName
FROM
    products
WHERE
    productCode LIKE '%$_20%' ESCAPE '$';

output: 지정 escape 문자($)

productCode productName
S10_2016 1996 Moto Guzzi 1100i
S24_2000 1960 BSA Gold Star DBD34
S24_2011 18th century schooner
S24_2022 1938 Cadillac V-16 Presidential Limousine
S700_2047 HMS Bounty