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논리 연산 ANDOR를 사용할 수도 있습니다 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일

이제 반대로 나이가 not20, 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문자열에서만 작동하지 않습니다. 기뻐할 수밖에 없는 것.