Login and comparison expressions - 로직, 비교 표현식
우리의 이전 주제에서는 SQL 언어가 다른 표현식을 쓴다는 것을 이미 알아냈습니다.
마치 수학적, 논리, 그리고 비교와 같이 말이죠.
이들은 테이블의 필요한 데이터를 추출합니다.
이러한 표현식들은 쿼리를 상세하게 만듭니다.
어떻게 작업되는지 이해하기 위해 논리 및 논리 표현식에 대해 자세한 내용을 배워보겠습니다.
당신이 서점의 데이터베이스에 대한 책임이 있다고 가정 해 보겠습니다.
당신은 이미 테이블 books 테이블로부터의 모든 엔티티에 대하여 전처리된 정보를
어떻게 선택하는지 알고 있습니다.
각 선택은 엄청나게 많은 줄이 있으며, 당신은 어떠한 기준에 따라 이들을 필터링 할 필요가 있습니다.
예를 들어, 글쓴이, 언어, 그리고 몇 속성을 의미하거나, 심지어 고객에 의해 요청된 표현입니다.
테이블 줄들의 하위 집합을 선택하는 것을 Filtering (필터링) 이라고 부릅니다.
Filtering by a criteria - 기준에 의한 필터링
대부분의 경우, 우리가 쿼리와 일을 진행 할 때, 어떠한 기준에 응하는 레코드를 추출하고 싶어합니다.
선택을 필터링 하기 위해서, 특별한 오퍼레이터 WHERE
이 SQL 에 있습니다.
이 오퍼레이터를 위한 문법은 밑의 예시와 같습니다.
SELECT *
FROM table
WHERE conditions
conditions
필드에는 우리가 원하는 일관성을 가진 데이터를 추출하는 어떠한 파라미터도 넣을 수 있습니다.
쉽게 말해,
conditions
필드에 우리가 원하는 데이터를 가진 데이터를 추출하는 조건을 넣는다는 의미이다.
하지만, 상세한 선택 조건을 정의하기 위해서는, 우리는 표현식을 적용 할 필요가 있습니다.
한 번 당신의 첫 번째 고객이 Charles Dickens 저자의 책을 구매하길 원한다고 가정 해 보겠습니다.
함께 기준을 적용한 책을 선택하는 쿼리를 작성 해 봅시다.
SELECT id, title, rating
FROM books
WHERE author = 'Charles Dickens';
SELECT
구문의 마지막에는, 키워드 WHERE
을 추가해 논리 표현식을 덧붙이는데,
이는 author = 'Charles Dickens'
라는 필터를 표기 (상세) 한 것 입니다.
SELECT
문은 WHERE
문의 컬럼과 표현식에 대한 리스트를 담고 있지 않습니다.
예를 들어, 위의 쿼리는 author
을 결과로 가지고 있지 않지만, WHERE
내부의 조건식에 반응하고 있습니다.
SELECT
절에author
이라는 산출물은 없지만,WHERE
을 통해author
에 해당하는 줄만 id, title, rating을 산출 할 수 있다.
Filtering with Comparisons - 비교식을 통해 필터링하기
밑의 있는 것은 WHERE
에 사용 할 수 있는 모든 비교식 리스트입니다.
= | equality check |
<, > | less, greater |
<=, >= | less or equal, greater or equal |
!<, !> | not less than, not greater than |
<>, != | not equal |
보통, 우리는 수학적인 값에 비교식을 적용합니다.
스트링 리터링 혹은 날짜를 선택하는 경우, 우리는 그 값에 쌍따옴표 표시를 넣어야 합니다. (" "
).
밑의 예시는 비교 표현식을 이용하여 데이터를 추출하기 위한 테이블 products
입니다.
product_id | product_name | price | category |
---|---|---|---|
1 | Milk | 70 | dairy |
2 | Cheese | 500 | dairy |
3 | Chicken | 250 | meat |
4 | Pork | 350 | meat |
5 | Potato | 40 | vegetables |
6 | Tomato | 150 | vegetables |
우리 테이블에서 250 보다 더 가격이 많은 제품을 알고 싶다고 말 해 봅시다.
이 때, 우리는 >
오퍼레이터를 사용합니다.
쿼리는 밑과 같습니다. :
SELECT *
FROM products
WHERE price > 250
우리의 테이블에서 요청한 아이템은 밑의 결과와 같습니다. :
product_id | product_name | price | category |
---|---|---|---|
2 | Cheese | 500 | dairy |
4 | Pork | 350 | meat |
꽤 간단하지 않나요?
만약 우리가 250 보다 크거나 같은 가격의 아이템은 선택하길 원한다면, 우리는 >=
를 대신하여 사용해야 합니다.
같은 규칙으로 비교문 <
, <=
가 작동됩니다.
더 확실히 이것을 깔끔하게 배우기 위해 하나의 예제를 더 공부하겠습니다.
이번에는, 테이블에서 vegetables
카테고리와 연관 된 모든 제품을 선택하길 원합니다.
우리의 SQL 쿼리는 밑과 같습니다. :
SELECT *
FROM products
WHERE category = 'vegetables'
적으세요, 따옴표는 스트링 리터럴에 의한 선택을 만들 때 본질적이라고.
String 타입의 컬럼을 선택하기 위해서는
'
,"
와 같은 따옴표가 무조건 필요하다는 뜻.
만약 이것들을 잊는다면, 쿼리가 동작하지 않습니다.
선택 결과는 밑과 일치합니다.
product_id | product_name | price | category |
---|---|---|---|
5 | Potato | 40 | vegetables |
6 | Tomato | 150 | vegetables |
Logical expressions - 논리 표현식
우리는 비교 표현식이 다루기에 쉽다고 확신하고 있습니다.
다음으로, 논리 표현식을 다룰 건데, 이는 더 복잡한 SQL 쿼리를 작성하는데 도움을 줍니다.
여기 불린 대수학의 세 가지 오퍼레이터가 있는데, 당신에게 친숙 할 겁니다. :
- 변수가
False
와 같은 때,NOT
은True
를 반환합니다. 그 반대의 경우도 같습니다. - 모든 변수가
True
일 때,AND
는 피연산자들을 비교하고True
를 반환합니다. 피연산자가 하나라도False
일 경우,False
를 반환합니다. - 피연산자 중 하나라도
True
일 경우,OR
은True
를 반환합니다. 피연산자가 모두False
일 경우,False
를 반환합니다.
위의 연산자들(오퍼레이터)가 주어진 대로, 우선순위에 따라 정렬됩니다.
만약 위의 세 연산자들이 표현식에 존재한다면,
NOT
,AND
,OR
순으로 비교됩니다. )
위에 설명한 것을 밑에서 예시로 보여줍니다.
A = {1, 2, 3, 4, 5, 6}
B = {4, 5, 6, 7, 8, 9}
A AND B
{1, 2, 3, 4, 5, 6}
{4, 5, 6, 7, 8, 9}
A AND B = {4, 5, 6}
A OR B
{1, 2, 3, 4, 5, 6}
{4, 5, 6, 7, 8, 9}
A OR B = {1, 2, 3, 4, 5, 6, 7, 8, 9}
A NOT B
{1, 2, 3, 4, 5, 6}
{4, 5, 6, 7, 8, 9}
A NOT B = {1, 2, 3}
몇 가지 예시를 더 공부 해 봅시다.
밑의 테이블 staff
는 우리 회사에서 일하는 프로그래머들에 대한 정보를 담고 있습니다.
다음 프로젝트에 적합한 선택 쿼리를 만들기를 원한다고 가정 해 봅시다.
person_id | name | status | skills | KPI |
---|---|---|---|---|
1 | Mike | Middle | SQL | 80 |
2 | Sara | Senior | SQL | 90 |
3 | Chan | Middle | Python | 70 |
4 | Mohit | Junior | Java | 60 |
5 | Alisha | Junior | SQL | 50 |
6 | Ivan | Middle | SQL | 70 |
프로젝트를 위해 알맞는 사람을 고용하기 위해, 후보자를 만나기 위한 두 가지 조건이 있습니다.
Middle,또는 Senior 실력이거나, SQL에 대해서 알고 있어야 한다.
쿼리는 밑과 같습니다. :
SELECT *
FROM staff
WHERE (status="Middle" OR status="Senior") AND skills="SQL"
OR
연산자에 괄호를 사용한다는 것에 유의해야 합니다.
이건 OR
과 AND
사이의 우선순위 조건에 의해 중요한 역할을 합니다.
만약 괄호를 쓰지 않는다면, 첫 번째로 AND
연산자를 조직하고, OR
연산자를 조직 할 겁니다.
우리는 OR
대신 NOT
연산자를 사용하여 같은 기준의 선택을 나열 할 수 있습니다.
SELECT *
FROM staff
WHERE NOT(status="Junior") AND skills="SQL"
프로젝트를 위한 후보자 선택은 밑과 같습니다. :
persion_id | name | status | skills | KPI |
---|---|---|---|---|
1 | Mike | Middle | SQL | 80 |
2 | Sara | Senior | SQL | 90 |
6 | Ivan | Middle | SQL | 70 |
우리는 이제 세 명의 운 좋은 사람에게 제안을 보낼 수 있습니다,
그리고 그들 중 하나가 되기 위해 SQL 스킬을 계속 마스터해야 합니다.
Conclustion - 결론
오늘도 SQL 쿼리를 작성하는 데 한 발자국 더 나아갔습니다.
한 번 이 주제에서 배운 것 들을 합쳐 봅시다.
WHERE
을 사용하는 컨디션을 가진 SQL 쿼리 작성하기- 테이블로부터 정보를 추출하기 위해 comparisons (비교문) 사용하는 법을 알아내기
- 더 복잡한 쿼리를 위한 login expressions (로직 표현식) 적용하기 및 로직의 우선순위 공부하기
'Hyperskill - 컴퓨터 CS 및 영어 독해 > Introducing to SQL' 카테고리의 다른 글
Special WHERE operators - 특별한 WHERE 연산자 (1) | 2024.04.15 |
---|---|
The NULL value - null 값 (0) | 2024.04.13 |
SELECT FROM statement - SELECT FROM 구문 (0) | 2024.04.10 |
Basic SELECT statement - 기초적인 SELECT 구문 (0) | 2024.04.09 |
Basic CREATE statement - 기본적인 CREATE 구문 (0) | 2024.04.08 |