목차
- Query
- 다양한 연산자
- 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에는 산술, 비교, 논리 및 비트 연산자를 포함하여 다양한 유형의 연산자가 있습니다. 다음은 예시와 함께 각 유형에 대한 개요입니다.
- 산술 연산자:
- 더하기(+): SELECT 5 + 3;은 8을 반환합니다.
- 빼기(-): SELECT 5 - 3;은 2를 반환합니다.
- 곱셈(*): SELECT 5 * 3;은 15를 반환합니다.
- 나누기(/): SELECT 5 / 3;은 1.6667을 반환합니다.
- 계수(%): SELECT 5 % 3;은 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;
- 논리 연산자:
- 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';
- 비트 연산자:
- 비트별 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을 반환합니다.
'SQL' 카테고리의 다른 글
[SQL] SQL JOIN의 종류와 예시 (0) | 2023.04.23 |
---|---|
[MySQL] MySQL 테이블 관련 절과 명령어(GROUP/OTHER BY, HAVING, 테이블 수정/추가/제거) (0) | 2023.04.23 |
[MySQL] DB 타입과 MySQL 언어 (0) | 2023.04.22 |
[MySQL] MySQL Community버전(무료) 다운로드 하기 (0) | 2023.04.22 |
[MySQL] DB 시스템 구축 절차와 MySQL을 시작하기 전 용어 정리 (0) | 2023.04.22 |