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)