본문 바로가기
공부/mysql

Mysql 기본 명령어3 (WHERE 구문, 연산자)

by signature95 2022. 1. 24.
728x90
반응형

지난 포스트에 이어서 작성하는 내용입니다.

2022.01.21 - [공부/mysql] - mysql 기본 명령어 2

 

mysql 기본 명령어 2

지난 포스트에 이어서 작성하는 내용입니다. 2022.01.21 - [공부/mysql] - Mysql 기본 명령어 1 Mysql 기본 명령어 1 앞선 포스트에서 mysql path설정을 해보았다. 2022.01.21 - [mysql/mysql 설정] - Mac OS mysq..

signature95.tistory.com

 

이번에는 검색 조건을 지정해서 원하는 조건에 따라 데이터를 검색해보고자 합니다.

 

기본 명령어는 다음과 같습니다.

 

SELECT row_name1, row_name2 FROM DB_name.Table_name Where 조건식 

 

먼저 row_name1, 2를 각각 name, brithday로 지정해보고 시행해보겠습니다. (데이터는 앞 포스트와 동일합니다)

조건식은 no = 1로 잡고 시행해 보겠습니다.

 

그러기 앞서 데이터는 다음과 같습니다.

위 데이터에서 no=1인 행의 name과 birthday를 추출해 보겠습니다.

여기서 열 이름은 comma(,)를 사용하여 구분하였고 조건식에는 equal(=)을 사용하여 적용하였습니다.

만약 여기서 SELECT FROM으로 바로 넘어가게 된다면 에러가 발생하게 됩니다. 앞선 포스트에서 언급했듯, (*)는 all을 의미합니다. 즉, 열 값을 지정하지 않는다면 원하는 데이터를 뽑아 낼 수 없다는 것입니다.

 

만약, 출력되는 열의 순서를 변경하고 싶다면 열 값을 입력할 때 원하는 순서로 입력하게 되면 출력 결과도 그대로 나오게 됩니다. 

 

그리고 조건식에 행을 입력하여 출력했는데, 만약 행의 개수가 수억 개로 구성되어 있다면 필요한 데이터외에도 더 많은 필요없는 데이터가 출력될 수 있습니다. 따라서 WHERE 명령어를 사용하여 데이터를 원하는 만큼 출력하게 되는 것입니다. 

 

조건 식을 입력할 때 이번에는 no =1 으로 적용하였습니다. (하지만, 연산자는 (=)외에도 다양하게 있습니다. 이는 다시 밑에서 다두도록 하겠습니다.)

 

 

이번에는 자료형이 INT인 no열이 아닌 VARCHAR에 대해서는 어떻게 조건식을 적용할 수 있는지 살펴보겠습니다.

 

name이 '홍길동'인 데이터의 brithday와 address를 조회해 보겠습니다.

 

SELECT birthday, address FROM sample.sample21 WHERE name='홍길동';

위같이 문자열인 데이터값에 대해서는 싱글쿼트(' ') 안에 데이터를 입력해야 합니다. (참고로 " "는 더블쿼트라고 합니다)

 

날짜, 시간형의 데이터 값에 대해서도 싱글쿼트 값을 입력해야합니다. 즉 1976-10-18을 조회하려면 하이픈(-)으로 구별하여 '1976-10-18'을 입력해야 합니다. 시간의 경우는 콜론 (:)으로 구분합니다. 

 

이번에는 NULL값만 조회해봅시다. NULL값은 연산자, 즉 (=)으로 조회하는 것이 아닙니다.

row_name is NULL 의 형태로 조회해야하는데 다음 명령어를 참고하시면 됩니다.

 

SELECT * FROM sample.sample21 where birthday is NULL;

반대로 NULL이 아닌 것을 조회하기 위해서는 is not NULL으로 입력하시면 됩니다.

 

그렇다면 연산자는 어떤 종류가 있는지 한번 살펴보겠습니다.

 

산술 연산자 (a = 20, b= 10)

+ 더하기 a + b = 30
- 빼기 a - b = 10
* 곱하기  a * b = 200
나누기 a / b = 2
% 나머지 a % b = 0

 

비교 연산자 (a = 20, b= 10) 

return되는 값은 TRUE, FALSE의 불린으로 반환됩니다.

= 같다를 의미합니다. a = b  참이 아닙니다.
!= , <> 다르다를 의미합니다. a != b , a <> b 참입니다.
>=, > 같거나 크다, 크다를 의미합니다. a => b, a > b 참입니다.
<=, < 같거나 작다, 작다를 의미합니다. a <= b, a < b 참이 아닙니다.
!> 크지 않다를 의미합니다.( '<=' 와 동일) a !> b 참이 아닙니다.
!< 작지 않다를 의미합니다. (' >=' 와 동일) a !< b 참입니다.

 

728x90

댓글