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)