반응형
  1. 검색 조건 지정

데이터베이스의 테이블에는 컬럼이 많이 있습니다. 

한번에 화면에 표시하여 확인할 수 있는 데이터의 양은 한정되어 있습니다. 

컬럼이나 레코드를 선택해서 데이터를 읽어오는 검색이 빈번하게 일어 납니다.

이번에는 컬럼이나 열을 선택해서 테이블의 데이터를 조회하는 방법에 대해 알아보겠습니다.


    1. SELECT 구에서 컬럼 지정

여기서는 데이터베이스의 테이블에서 자신이 원하는 컬럼들을 한정하여 검색하는 방법에 대해 알아보겠습니다.


결과로 표시하고 싶은 컬럼을 지정할 수 있습니다.


“SELECT 컬럼1, 컬럼2, 컬럼3, … FROM  테이블 명;


이전에 제가 올렸던 글에서 보면 샘플 데이터에서 컬럼의 정보들을 가져올때는 애스터리스크(*)를 사용하여 모든 컬럼을 표시하였습니다.

컬럼을 한정하기 위해서는 * 부분을 위의 쿼리처럼 “컬럼1, 컬럼2” 원하는 컬럼을 명시하고 구분은 콤마(,)를 이용하면 지정한 컬럼만 결과 값에 보여집니다.


스크린샷 2017-02-15 오전 11.09.34.png

[그림 3. 컬럼을 한정하여 데이터 조회]


만약 테이블에 존재하지 않는 컬럼이나 아무 컬럼도 지정하지 않을 경우 구문 에러가 발생합니다. 또한 컬럼을 지정할 때 지정 순서는 임의로 지정하거나 중복이 되어도 무관합니다. 지정한 컬럼의 순서에 따라 결과가 보여집니다.

    1. WHERE 구에서 레코드 지정

테이블의 컬럼은 많아야 몇십개지만 레코드는 컬럼에 비해 훨씬 많을 수 있습니다. 적으면 수백개 많으면 수천만건의 레코드가 있을 수 있습니다. 이렇게 많은 레코드에서 내가 필요한 데이터만 검색하기 위해서는 WHERE 구를 사용해야 합니다.


“SELECT 컬럼 FROM 테이블명 WHERE 조건식;


WHERE 구는 FROM 구의 뒤에 표기되며 WHERE 뒤에 검색 조건을 사용합니다.


위에서 보듯이 SQL에서는 구의 순서가 정해져 있어 바꿔서 적을 수가 없습니다. 만약에 위의 쿼리를 “select 컬럼 where 조건식 from 테이블명;” 순으로 적으면 에러가 발생합니다. 또한 WHERE 구처럼 생략 가능한 것도 있습니다.


WHERE 구에는 조건식이 들어갑니다.


스크린샷 2017-02-15 오전 11.29.55.png

[그림 4. 조건식을 적용하여 검색]


위 [그림 4]는 WHERE 구에 조건식을 적용하여 테이블의 데이터를 검색한 것입니다. 이렇게 조건식만 주어서 레코드를 검색할 수도 있지만 SELECT 구에 원하는 컬럼 지정을 동시에 사용할 수 있습니다.


스크린샷 2017-02-15 오전 11.29.07.png

[그림 5. 조건식과 컬럼 지정 동시 사용]


조건식을 간단히 살펴보면 id = 1 이것이 의미하는 것은 컬럼 명 id의 값이 1인 레코드를 검색하겠다는 것입니다. 조건식의 컬럼명은 상황에 맞는 것을 사용하면 되고 조건식이 참이 되는 결과 값만 반환을 하게 될것입니다.

조건식은 참 또는 거짓의 진리값을 반환하는 식으로 비교 연산자를 사용해 표현합니다.


만약 값이 서로 다른 경우를 검색하기 위해서는 어떻게 해야 할까요?

연산자로 ‘<>’을 사용하면 됩니다.


스크린샷 2017-02-15 오전 11.40.32.png

[그림 6. 연산자 <>을 사용하여 검색]


연산자 ‘<>’은 서로 다른 값인지를 비교하는 연산자입니다.

<> 연산자를 통해 ‘값이 서로 다른 경우’ 참이 되는 조건식으로 변경할 수 있습니다.


[그림 6]에서도 알 수 있듯이 복수의 레코드가 출력될 수도 있고 하나 또는 아무것도 반환되지 않을 수 있습니다.

    1. 문자열 상수

위에서 검색했던 조건식의 경우는 id가 수치형 데이터였습니다. 그러면 수치형 데이터가 아닌 문자열 데이터의 경우는 어떻게 검색을 해야할까요?


수치형 조건식의 경우는 “id = 1”과 같이 비교할 숫자를 그대로 조건식에 표기합니다. 하지만 문자열의 경우는 ‘김이빵'처럼 싱글 쿼트를 사용하여 둘러싸 표기해야 합니다. 날짜 또한 마찬가지입니다.


스크린샷 2017-02-15 오전 11.50.48.png

[그림 7. 싱글 쿼드없이 검색 시 에러]


스크린샷 2017-02-15 오전 11.53.17.png

[그림 8. 싱글 쿼트로 감싸서 검색한 결과]


한편 자료형에 맞게 표기한 상수값을 ‘리터럴(literal)’이라고 합니다.

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

    1. NULL 검색

데이터 검색 시 NULL 값을 검색할 경우에는 조금 주의해야 합니다.

조건식을 birthday = NULL 과같은 식으로는 검색할 수 없습니다. 한마디로 = 연산자로는 검색이 안됩니다.


스크린샷 2017-02-15 오전 11.57.44.png

[그림 9. = 연산자를 사용하여 NULL 검색 결과]


NULL 값을 검색할 때는 = 연산자가 아닌 “IS NULL”을 사용하면 됩니다.


스크린샷 2017-02-15 오전 11.58.21.png

[그림 10. IS NULL을 사용하여 NULL 검색 결과]


반대로 NULL 값이 아닌 값을 검색하고 싶다면 “IS NOT NULL”을 사용하면 됩니다.


스크린샷 2017-02-15 오전 11.58.42.png

[그림 11. IS NOT NULL을 사용하여 검색한 결과]


    1. 비교 연산자

지금까지 =, <>, IS NULL, IS NOT NULL을 사용해서 검색하는 방법을 알아봤습니다. 

이것들과 같이 대표적으로 많이 사용하는 연산자를 알아보겠습니다.


연산자

설명

=

좌변 우변의 값이 같을 경우 참

<>

좌변과 우변이 같지 않을 경우 참

>

좌변의 값이 우변의 값보다 클 경우 참.

같거나 작을 경우 거짓

<

좌변의 값이 우변의 값보다 작을 경우 참

같거나 클 경우 거짓

>=

좌변의 값이 우변의 값보다 크거나 같을 경우 참

작을 경우 거짓

<=

좌변의 값이 우변의 값보다 작거나 같을 경우 참

클 경우 거짓

[표 6. 연산자 정의]


위 연산자들을 정의할 때 <=, >=, <> 사이에 스페이스를 넣으면 안됩니다. 

스페이스를 넣을 경우 별도의 연산자라고 판단하여 에러가 발생합니다.

반응형

+ Recent posts