3.1 값 비교: <, >, =, <>
SQL 쿼리를 작성할 때 가장 많이 사용되는 키워드 중 하나는 WHERE
. 필터링(선택)하려는 테이블 행을 MySQL에 알리는 데 도움이 됩니다.
키워드 뒤에는 WHERE
매우 복잡하고 까다로운 조건을 작성할 수 있습니다. 그렇다면 이 조건에는 어떤 작업이 포함될 수 있습니까?
운영자 | 설명 | 예 |
---|---|---|
< | 더 적은 | 급여 < 40000 |
> | 더 | 연봉 > 100000 |
<= | 작거나 같음 | 나이 <= 25 |
>= | 그 이상 | 나이 >= 18 |
= | 같음 | 직업 = '프로그래머' |
<>, != | 같지 않음 | 연도(가입_날짜) != 2015 |
Java 언어와 달리 엄격한 동등성을 위해 두 개가 아닌 하나의 equals 문자가 여기에 사용됩니다 .
값이 같지 않은지 확인하려면 두 가지 방법으로 수행할 수 있습니다. <>
첫 !=
번째 접근 방식은 Pascal과 같은 언어에서 사용되며 두 번째 접근 방식은 C ++와 같은 언어에 일반적입니다. 그리고 자바.
SQL에서의 대입은 Pascal에서와 같이 사용 :=
하지만 대입 자체는 거의 사용하지 않는다.
2015년에 고용되지 않은 모든 직원을 표시하는 쿼리를 작성해 보겠습니다.
SELECT * FROM employee WHERE YEAR(join_date) != 2015
그리고 다음 쿼리 결과를 얻습니다.
ID | 이름 | 직업 | 샐러리 | 나이 | 가입 날짜 |
---|---|---|---|---|---|
1 | 이바노프 이반 | 프로그램 제작자 | 100,000 | 25 | 2012-06-30 |
2 | 페트로프 페트르 | 프로그램 제작자 | 80,000 | 23 | 2013-08-12 |
삼 | 이바노프 세르게이 | 시험 장치 | 40,000 | 서른 | 2014-01-01 |
6 | 바스카 | 고양이 | 1,000 | 삼 | 2018-01-01 |
3.2 논리 연산 AND, OR, NOT
WHERE
논리 연산 AND
및 OR
를 사용할 수도 있습니다 NOT
. 그리고 그것들은 제가 여기서 설명한 대로 정확히 쓰여졌습니다. 없음 &&
또는 ||
_!
20세 이상이고 급여가 50,000 미만인 직원을 선택하는 SQL 쿼리를 작성해 보겠습니다.
SELECT * FROM employee WHERE age > 20 AND salary < 50000
그리고 다음 쿼리 결과를 얻습니다.
ID | 이름 | 직업 | 샐러리 | 나이 | 가입 날짜 |
---|---|---|---|---|---|
삼 | 이바노프 세르게이 | 시험 장치 | 40,000 | 서른 | 2014-01-01 |
5 | 키리엔코 아나스타샤 | 사무실 관리자 | 40,000 | 25 | 2015년 10월 10일 |
너무 쉽다. 100K 이상을 받고 이사로 일하지 않는 직원을 선택하는 쿼리를 작성해 보겠습니다.
SELECT * FROM employee WHERE salary >= 100000 AND NOT occupation = 'Director'
여기서는 특히 기호 대신 !=
연산자를 사용했습니다 NOT
.
그리고 다음 쿼리 결과를 얻습니다.
ID | 이름 | 직업 | 샐러리 | 나이 | 가입 날짜 |
---|---|---|---|---|---|
1 | 이바노프 이반 | 프로그램 제작자 | 100,000 | 25 | 2012-06-30 |
3.3 사이: 값 범위
BETWEEN
또한 SQL에는 변수가 두 값 사이에 있는지 여부를 확인할 수 있는 특수 연산자가 있습니다 . 이 연산자는 부울 식 내에서 사용됩니다. 이러한 연산자의 일반적인 형식은 다음과 같습니다.
variable BETWEEN bottom line AND top_bound
이 경우 Java 언어와 달리 허용 간격에 하한과 상한이 모두 포함됩니다.
급여가 40,000에서 100,000 사이인 모든 직원을 선택하는 예를 작성해 보겠습니다. 요청은 다음과 같습니다.
SELECT * FROM employee WHERE salary BETWEEN 40000 AND 100000
그리고 다음 쿼리 결과를 얻습니다.
ID | 이름 | 직업 | 샐러리 | 나이 | 가입 날짜 |
---|---|---|---|---|---|
1 | 이바노프 이반 | 프로그램 제작자 | 100,000 | 25 | 2012-06-30 |
2 | 페트로프 페트르 | 프로그램 제작자 | 80,000 | 23 | 2013-08-12 |
삼 | 이바노프 세르게이 | 시험 장치 | 40,000 | 서른 | 2014-01-01 |
5 | 키리엔코 아나스타샤 | 사무실 관리자 | 40,000 | 25 | 2015년 10월 10일 |
연산자는 BETWEEN
숫자 유형뿐만 아니라 날짜 및 문자열 유형 도 지원합니다 . 문자열로 작업하는 경우 사전식 순서가 사용됩니다. aaba가 aabb 앞에 옵니다.
3.4 IN: 값 목록
또한 SQL에는 IN
지정된 목록에 변수가 포함되어 있는지 여부를 확인할 수 있는 특수 연산자가 있습니다. 이 연산자는 부울 식 내에서 사용됩니다. 이러한 연산자의 일반적인 형식은 다음과 같습니다.
variable IN (value 1 , value 2 , ... value N)
20세, 25세 또는 30세 직원을 선택하는 쿼리를 작성해 보겠습니다. 요청은 다음과 같습니다.
SELECT * FROM employee WHERE age IN (20, 25, 30)
그리고 다음 쿼리 결과를 얻습니다.
ID | 이름 | 직업 | 샐러리 | 나이 | 가입 날짜 |
---|---|---|---|---|---|
1 | 이바노프 이반 | 프로그램 제작자 | 100,000 | 25 | 2012-06-30 |
삼 | 이바노프 세르게이 | 시험 장치 | 40,000 | 서른 | 2014-01-01 |
5 | 키리엔코 아나스타샤 | 사무실 관리자 | 40,000 | 25 | 2015년 10월 10일 |
이제 반대로 나이가 not
20, 25 또는 30인 직원을 선택하는 쿼리를 작성해 보겠습니다. 쿼리는 다음과 같습니다.
SELECT * FROM employee WHERE age NOT IN (20, 25, 30)
그리고 다음 쿼리 결과를 얻습니다.
ID | 이름 | 직업 | 샐러리 | 나이 | 가입 날짜 |
---|---|---|---|---|---|
2 | 페트로프 페트르 | 프로그램 제작자 | 80,000 | 23 | 2013-08-12 |
4 | 라비노비치 모이샤 | 감독 | 200,000 | 35 | 2015-05-12 |
6 | 바스카 | 고양이 | 1,000 | 삼 | 2018-01-01 |
모든 것이 예상대로 작동했습니다. 아름다움.
3.5 LIKE: 문자열 패턴
마지막으로 또 다른 중요하고 매우 자주 사용되는 연산자는 LIKE
. 문자열을 비교할 때 사용합니다. 문자열 패턴을 설정하는 데 사용할 수 있습니다. 이 연산자는 부울 식 내에서 사용됩니다. 이러한 연산자의 일반적인 형식은 다음과 같습니다.
variable LIKE 'sample'
패턴: %
및 에는 특수 문자를 사용할 수 있습니다 _
.
- 밑줄은 모든 문자를 의미하며 항상 1pc입니다.
- 백분율은 임의의 문자 및 횟수(0회 포함)를 의미합니다.
성이 "I"로 시작하는 모든 사람을 선택하는 쿼리를 작성해 보겠습니다. 요청은 다음과 같습니다.
SELECT * FROM employee WHERE name LIKE 'I%'
그리고 다음 쿼리 결과를 얻습니다.
ID | 이름 | 직업 | 샐러리 | 나이 | 가입 날짜 |
---|---|---|---|---|---|
1 | 이바노프 이반 | 프로그램 제작자 | 100,000 | 25 | 2012-06-30 |
삼 | 이바노프 세르게이 | 시험 장치 | 40,000 | 서른 | 2014-01-01 |
이제 작업을 복잡하게 만들어 보겠습니다. 이름에는 "o"가 포함되어야 하고 이름은 "a"로 끝나야 합니다. 요청은 다음과 같습니다.
SELECT * FROM employee WHERE name LIKE '%o%a'
그리고 다음 쿼리 결과를 얻습니다.
ID | 이름 | 직업 | 샐러리 | 나이 | 가입 날짜 |
---|---|---|---|---|---|
4 | 라비노비치 모이샤 | 감독 | 200,000 | 35 | 2015-05-12 |
좋아, 좀 더 어렵게 만들어 보자. 나이가 숫자 "3"으로 시작하는 모든 직원을 필터링해 보겠습니다. 요청은 다음과 같습니다.
SELECT * FROM employee WHERE age LIKE '3%'
그리고 다음 쿼리 결과를 얻습니다.
ID | 이름 | 직업 | 샐러리 | 나이 | 가입 날짜 |
---|---|---|---|---|---|
삼 | 이바노프 세르게이 | 시험 장치 | 40,000 | 서른 | 2014-01-01 |
4 | 라비노비치 모이샤 | 감독 | 200,000 | 35 | 2015-05-12 |
6 | 바스카 | 고양이 | 1,000 | 삼 | 2018-01-01 |
그건 그렇고, 나이 열은 유형 int
이므로 LIKE
문자열에서만 작동하지 않습니다. 기뻐할 수밖에 없는 것.
GO TO FULL VERSION