minuco
article thumbnail
Published 2019. 3. 27. 20:31
검색 조건 지정하기 SQL/MySQL

SELECT 구와 WHERE구

SELECT 열 1, 열 2 FROM 테이블명 WHERE 조선식

 

빨간 동그라미 안에있는 값을 검색할꺼에요.

SELECT 구, WHERE 구에서 데이터 검색조건을 지정

 

행을 선택할때선택할 때 WHERE 구를 사용하며, 열을 선택할 때는 SELECT 구를 사용한다.

 

1. SELECT 구에서 열 지정하기

데이터를 선택할 때는 열이나 행을 한정한다. 

 

SELECT명령에서는 *를 사용해서 sample21 테이블의 모든 열을 취득했다. 

열을 한정하기위해서는 *부분에 열명을 지정한다.

 

SELECT 열1, 열 2... FROM 테이블명

열은 위의 구문처럼 콤마(,)로 구분한다.

 

no, name를 검색한 화면

no의 열과 name의 열만 선택하여 검색했다.

 

select from sample21;과 같이 열을 지정하지 않으면 구문 에러가 발생한다.

또한, 테이블을 지정하지 않는 열을 지정해도 에러가 발생한다. 열을 지정 순서는 임의로 지정할 수 있다.

SELECT address, name FROM sample21; 와 같이 지정해도 무관하다.

즉, 열이 정의된 순서와 동일한 순서로 지정할 필요는 없다는 소리이다.

또한 열을 중복으로 지정해도 무관하다. 별로 의미는 없지만 select no, no, no from sample21;

과같이 지정해도 상관없다.

 

point : select 구에서 결과로 표시하고 싶은 열을 지정할 수 있다.

 

2. WHERE 구에서 행 지정하기

많은 행 속에서 필요한 데이터만 검색하기 위해 사용된다.

 

select 열 from 테이블명 where 조건식;

 

-구의 순서와 생략.

SQL에서는 구의 순서가 정해져 있어 바꿔 적을 수 없다. FROM 구 뒤에 WHERE를 표기한다.

SELECT -> WHERE -> FROM 순으로 적으면 오류가 난다.

WHERE구문 처렁 생략 가능한 것도 있다. 만약 WHERE구문을 생략한 경우에는 테이블 내의 모든 행이 검색 대상이 된다.

 

- WHERE 구

 조건식은 '열과 연산자, 상수로 구성된 식'이다.

 

where조건 no값 2인 행만 선택

위 그림은 sample21 테이블에서 where 구를 이용해 2번 값만 선택한 화면이다.

여기서 지정한 'no = 2'는 no행의 2번 셀을 선택한다 라는 조건식입니다.

이 조건식(select * from sample21 where no = 2;)에서 조건 no = 2가 일치하는 행만 

select의 결과로 반환됩니다. 

point : where구의 조건에 일치하는 행만 결과로 반환된다.

 

- 조건식

no = 2는 'no', '=', '2' 세 개의 항목으로 나눌 수 있다. no는 열 이름이며 , = 는 연산자이다.  

=의 경우, 좌우로 2개의 항목이 필요한 '이항 연산자'에 해당하며 일반적으로 많이 쓰는 기호이다.

= 연산자의 시준으로 좌변과 우변의 항목을 비교하고, 서로 같은 값이면 참을 아니면 거짓을 반환한다. 

no = 2 조선 식의 열의 값이 2인 행은 참이 되며 2이나 3 인행은 거짓이 된다. 

 

조건을 만족한(참) 행만 결괏값으로 반환된다. = 연산자는 '비교 연산자'라 부른다.

 

point : 조선 식음 참 또는 기적의 진리 값을 반환하는 비교 연산자를 사용해 표기한다.

 

- 값이 서로 다른 경우 '<>'

 

no 열 값이 2가 아닌 행만 검색한 결과

<> 연산자는 서로 다른 값인지를 비교하는 연산자이다.

여기서 no열 값이 2가 아닐 경우 참이 되므로, 값이 1과 3인 행이 화면에 표시된다.

 

point : <> 연산자를 통해 '값이 서로 다른 참인 경우' 참이 되는 조건식으로 변경할 수 있다.

 

이와 같이 where 구에서 지정한 조건식에 따라 복수의 행이 반환되는 경우도 있다. 반드시 하나의 행만 반환되는 것은 아니다. 조선식이 일치하는 행이 전혀 없는 경우에는 아무것도 반환되지 않는다.

 

3. 문자열형의 상수

 name 열값이 '박준용 행만 추출

select * from sample21 where name = '박준용';

sample21 테이블의 모든 행 중에서 name = '박준용'인 열을 검색해라 라는 구문입니다.

no열과 name열은 자료형이 다르다. no형은 수치형이고 name는 문자열형이다. 

문자열형은 수치형과 다르게 싱글 쿼트('')로 둘러싸 구분 지어줘야 한다.

날짜 시간형의 경우에도 싱글 쿼트로 둘러싸 표기한다. 이때 년, 일, 월은 -(하이픈)으로 비교를 한다.

시간, 분, 초는 콜론(:)으로 구분하여 표기한다.

 

문자열형의 열과 비교하기 위해서는 조건으로 지정할 값도 드 자료형에 맞춰 지정해야 한다.

자료형에 맞게 표기한 상수값을 '리터럴(literal')이라 부른다.

문자열 리터럴은 싱글 쿼트로 둘러싸 표기한다.

 

수치형 상수 : 1, 100, -3.8등

문자열 상수 : 'ABC', '박준용' 등

날짜 시간형 상수 : '2019-03-27' , '2019-04-03 02:30:00' 등 

 

4.NULL값 검색

'검색'이라고는 해도 조건식을 표기하는 것뿐이므로 간단하다.

하지만 null값을 검색하는 방법은 다음과 같다.

 

SELECT * FROM sample21 where birthday = null;

검색할 수 없다.

 

-IS NULL

NULL값을 검색할 때는 = 연산자가 아닌 'IS NULL'을 사용한다. IS NULL은 술어로 연산자의 한 종류라 생각하면 된다.

반대로 null값이 없는 행만을 추출하고 싶다면 IS NOT NULL을 사용하면 된다.

point : null값을 검색할 경우에는 is null을 사용한다.

 

5. 비교 연산자

= 연산자

   좌변과 우변의 값이 같을 경우 참이 된다.

<> 연산자 

   좌변과 우변의 값이 같지 않을 경우 참이 된다.

> 연산자

  좌변이 값이 우변보다 클 경우 참이 된다. 같거나 작을 경우는 거짓이 된다.

>=연산자(띄어쓰기 x)

  좌변이 값이 우변의 값보다 크거나 같을 경우 참이 된다. 작을 경우는 거짓이 된다.

<연산자

  좌변이 값이 우변의 값보다 작을 경우 참이 된다. 같거나 클 경우 거짓이 된다.

<=연산자(띄어쓰기 x)

  죄 변의 값이 우변의 값보다 작거나 같을 경우 참이 된다. 클 경우는 거짓이 된다.

'SQL > MySQL' 카테고리의 다른 글

2. 테이블 구조 참조하기  (0) 2019.03.27
데이터베이스와 SQL - SELECT 검색  (0) 2019.03.27
profile

minuco

@minuco

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!