반응형

목차

  1. Query
  2. 다양한 연산자
    • Like 연산자의 와일드카드
    • REGEXP 연산자 메타 문자
    • MySQL 일반 연산자

Query

쿼리는 데이터 검색, 삽입, 업데이트 또는 삭제와 같은 작업을 수행하기 위해 관계형 데이터베이스에 대한 요청입니다. SQL 쿼리는 데이터베이스와 상호 작용하고 데이터베이스에 포함된 데이터를 관리할 수 있는 표준화된 언어를 사용하여 작성됩니다.

다음은 일반적인 SQL 쿼리 구성 요소와 해당 기능입니다.

1. SELECT: SELECT 문은 데이터베이스에 있는 하나 이상의 테이블에서 데이터를 검색하는 데 사용됩니다. 가져올 열을 지정하거나 * 기호를 사용하여 모든 열을 가져올 수 있습니다.

SELECT first_name, last_name FROM employees;


이 쿼리는 직원 테이블에서 first_name 및 last_name 열을 검색합니다.

2. FROM: FROM 절은 데이터를 가져와야 하는 테이블을 지정합니다.

SELECT * FROM employees;


이 쿼리는 직원 테이블에서 모든 열을 가져옵니다.

3. WHERE: WHERE 절은 특정 조건에 따라 데이터를 필터링하는 데 사용됩니다. 주어진 기준을 만족하는 행을 가져올 수 있습니다.

SELECT * FROM employees WHERE salary > 50000;


이 쿼리는 급여가 50,000보다 큰 직원에 대한 모든 열을 검색합니다.

4. GROUP BY: GROUP BY 절은 지정된 열에서 동일한 값을 가진 행을 그룹화하는 데 사용됩니다. 집계 함수(COUNT, SUM, AVG, MIN, MAX)와 함께 사용되어 각 그룹에 대한 계산을 수행하는 경우가 많습니다.

SELECT department_id, COUNT(*) FROM employees GROUP BY department_id;


이 쿼리는 각 부서의 직원 수를 세고 그 결과를 department_id별로 그룹화합니다.

5. HAVING: HAVING 절은 집계 함수의 결과에 적용되는 조건을 기반으로 GROUP BY 쿼리의 결과를 필터링하는 데 사용됩니다.

SELECT department_id, COUNT(*)
FROM employees
GROUP BY department_id
HAVING COUNT(*) > 5;


이 쿼리는 부서_id와 각 부서의 직원 수를 검색하지만 직원이 5명 이상인 부서만 표시합니다.

6. ORDER BY: ORDER BY 절은 오름차순(ASC) 또는 내림차순(DESC)으로 하나 이상의 열을 기준으로 쿼리 결과를 정렬하는 데 사용됩니다.

SELECT first_name, last_name, salary
FROM employees
ORDER BY salary DESC;


이 쿼리는 직원 테이블에서 first_name, last_name 및 급여 열을 검색하고 결과를 급여를 기준으로 내림차순으로 정렬합니다.

7. LIMIT: LIMIT 절은 쿼리 결과에 반환되는 행 수를 제한하는 데 사용됩니다. 특정 수의 행을 가져오거나 페이지를 매길 때 유용합니다.

SELECT first_name, last_name, salary
FROM employees
ORDER BY salary DESC
LIMIT 10;


이 쿼리는 급여를 기준으로 내림차순으로 정렬된 최고 급여 직원 10명을 검색합니다.


Like 연산자의 와일드카드

SQL LIKE 연산자는 WHERE 절에서 열에서 지정된 패턴을 검색하는 데 사용됩니다. 와일드카드 문자를 사용하여 간단한 패턴 일치를 수행할 수 있습니다. LIKE 연산자와 함께 사용되는 두 개의 와일드카드 문자는 다음과 같습니다.

1. % 와일드카드 사용: 0개, 1개 또는 여러 문자를 나타냅니다.

SELECT * FROM table_name WHERE column_name LIKE '%apple%'; -- Matches any string containing 'apple'

SELECT * FROM table_name WHERE column_name LIKE 'apple%'; -- Matches any string that starts with 'apple'

SELECT * FROM table_name WHERE column_name LIKE '%apple'; -- Matches any string that ends with 'apple'


2. _ 와일드카드 사용: 단일 문자를 나타냅니다.

SELECT * FROM table_name WHERE column_name LIKE '_pple'; -- Matches any 5-character string where the last 4 characters are 'pple', such as 'apple' or 'bpple'

SELECT * FROM table_name WHERE column_name LIKE 'a_ _ le'; -- Matches any 5-character string that starts with 'a', ends with 'le', and has any two characters in between, such as 'apple' or 'amble'


3. % 및 _ 와일드카드 결합:

SELECT * FROM table_name WHERE column_name LIKE '%a_ _ le%'; -- Matches any string containing the pattern 'a_ _ le', such as 'I have an apple' or 'I have an amble'


LIKE 연산자를 사용할 때 MySQL 및 SQL Server를 포함한 대부분의 데이터베이스에서 대소문자를 구분하지 않는다는 점에 유의하세요. 그러나 동작은 데이터베이스의 데이터 정렬 설정에 따라 다를 수 있습니다.


REGEXP 연산자 메타 문자

정규식을 기반으로 하는 복잡한 문자열 비교에 사용되는 패턴 일치 연산자입니다. 문자열 내에서 특정 패턴을 검색할 수 있으므로 'LIKE' 연산자보다 더 유연하고 강력한 텍스트 검색 방법을 제공합니다. 다음은 REGEXP 연산자와 함께 MySQL에서 사용되는 각 메타 문자의 예입니다.


1) . - 단일 문자 일치

SELECT * FROM table_name WHERE column_name REGEXP 'c.t'; -- 'c'와 't' 사이의 한 문자에 일치하는 문자열, 예를 들어 'cat', 'cot', 'cut' 등을 일치시킵니다.


2) * - 선행 문자 또는 그룹의 0개 이상의 발생과 일치

SELECT * FROM table_name WHERE column_name REGEXP 'ca*t'; -- 'ct', 'cat', 'caat', 'caaat' 등과 일치시킵니다.


3) + - 하나 이상의 선행 문자 또는 그룹과 일치

SELECT * FROM table_name WHERE column_name REGEXP 'ca+t'; -- 'cat', 'caat', 'caaat' 등과 일치시키지만 'ct'는 일치시키지 않습니다.


4) ? - 선행 문자 또는 그룹의 0개 또는 1개 항목과 일치

SELECT * FROM table_name WHERE column_name REGEXP 'ca?t'; -- 'ct'와 'cat'과 일치시키지만 'caat'는 일치시키지 않습니다.


5) ^ - 문자열의 시작 부분에 패턴을 고정합니다.

SELECT * FROM table_name WHERE column_name REGEXP '^apple'; -- 'apple'로 시작하는 문자열을 일치시킵니다.


6) $ - 패턴을 문자열 끝에 고정

SELECT * FROM table_name WHERE column_name REGEXP 'apple$'; -- 'apple'로 끝나는 문자열을 일치시킵니다.


[...] - 대괄호 안의 문자 중 하나와 일치하는 문자 클래스를 지정합니다.

SELECT * FROM table_name WHERE column_name REGEXP '[aeiou]'; -- 모음(a, e, i, o, 또는 u) 중 하나를 포함하는 문자열을 일치시킵니다.


이 예는 REGEXP 연산자를 사용하여 패턴 일치를 위해 MySQL 쿼리에서 각 메타 문자를 사용하는 방법을 보여줍니다.
요약하면 SQL LIKE 연산자를 사용하면 % 및 _ 와일드카드 문자를 사용하여 기본 패턴 일치를 수행할 수 있습니다. 열의 간단한 텍스트 패턴을 기반으로 행을 필터링하는 데 유용합니다.


MySQL 일반 연산자

MySQL에서 연산자는 데이터에 대한 특정 작업을 수행하는 데 사용됩니다. MySQL에는 산술, 비교, 논리 및 비트 연산자를 포함하여 다양한 유형의 연산자가 있습니다. 다음은 예시와 함께 각 유형에 대한 개요입니다.

  1. 산술 연산자:

    • 더하기(+): SELECT 5 + 3;은 8을 반환합니다.
    • 빼기(-): SELECT 5 - 3;은 2를 반환합니다.
    • 곱셈(*): SELECT 5 * 3;은 15를 반환합니다.
    • 나누기(/): SELECT 5 / 3;은 1.6667을 반환합니다.
    • 계수(%): SELECT 5 % 3;은 2를 반환합니다.

  2. 비교 연산자:

    • 같음(=): SELECT * FROM table_name WHERE column_name = 'value';
    • 같지 않음(<> 또는 !=): SELECT * FROM table_name WHERE column_name <> 'value';
    • 보다 큼(>): SELECT * FROM table_name WHERE column_name > 10;
    • 보다 작음(<): SELECT * FROM table_name WHERE column_name < 10;
    • 크거나 같음(>=): SELECT * FROM table_name WHERE column_name >= 10;
    • 작거나 같음(<=): SELECT * FROM table_name WHERE column_name <= 10;
    • BETWEEN: SELECT * FROM table_name WHERE column_name BETWEEN 10 AND 20;
    • LIKE: SELECT * FROM table_name WHERE column_name LIKE '패턴%';
    • IN: SELECT * FROM table_name WHERE column_name IN ('value1', 'value2');
    • IS NULL: SELECT * FROM table_name WHERE column_name IS NULL;
    • IS NOT NULL: SELECT * FROM table_name WHERE column_name IS NOT NULL;

  3. 논리 연산자:

    • AND: SELECT * FROM table_name WHERE column1 = 'value1' AND column2 = 'value2';
    • OR: SELECT * FROM table_name WHERE column1 = 'value1' OR column2 = 'value2';
    • NOT: SELECT * FROM table_name WHERE NOT column_name = 'value';

  4. 비트 연산자:

    • 비트별 AND(&): SELECT 5 & 3;은 1을 반환합니다.
    • 비트별 OR(|): `SELECT 5 | 3;'은 '7'을 반환합니다.
    • 비트별 XOR(^): SELECT 5 ^ 3;은 6을 반환합니다.
    • 비트 단위 NOT(~): SELECT ~5;는 -6을 반환합니다.
    • 왼쪽 비트 시프트(<<): SELECT 5 << 2;는 20을 반환합니다.
    • 오른쪽 비트 시프트(>>): SELECT 5 >> 2;는 1을 반환합니다.

반응형