레코드 검색

오늘은 저번시간에 만들었던 my_smart_devices를 이용하여 레코드 검색기능을 배워봅시다.!~~

지금까지 사용했던 select문은 레코드를 불러오는 명령문입니다.

my_smart_devices 안에 있는 num, name, thenumberofcpu, company 이렇게 4개의 필드가 존재하고 있습니다.

SELECT * FROM my_smart_devices 를 입력하면 모든 필드가 선택이 되어서 표시를 해주고요.

특정 필드만 선택을 하시려면 다음과 같이 입력을 합니다.

예를 들어 name필드만 선택할 경우

SELECT name FROM my_smart_devices;

라고 입력하시면 됩니다.

저렇게 전체의 레코드를 검색 하신다면 SELECT * FROM 검색할 테이블이름;

특정 레코드를 검색하신다면 SELECT 필드명 FROM 테이블명;

이렇게 하시면 됩니다.

중복된 값은 빼버리고 검색을 하시고 싶다면 다음과 같이 distinct를 사용합니다.

SELECT distinct 필드명 FROM 테이블명;

이렇게 입력하면 됩니다.

우선 my_smart_devices 테이블에는 데이터 자체가 없기 때문에 데이터를 입력하도록 하겠습니다.
다음의 3개 명령문을 실행해 주세요.

그럼 smart db를 선택하고

USE smart;
INSERT INTO my_smart_devices(name, thenumberofcpu, company) VALUES('galaxy nexus','2','samsung');
INSERT INTO my_smart_devices(name, thenumberofcpu, company) VALUES('galaxy tab','1','samsung');
INSERT INTO my_smart_devices(name, thenumberofcpu, company) VALUES('iPad2','2','apple');

이제 입력한 데이터를 확인하겠습니다.

SELECT * FROM my_smart_devices;
mysql search-record

위와 같이 테이블이 있습니다. 그럼 name필드만 불러오겠습니다.

다음 명령문 입력

SELECT name FROM my_smart_devices;

그러면 아래와 같이 name필드와 그 레코드들만 출력됩니다.

그럼 중복된 값은 빼버리고 검색을 하려면 중복된 값이 더넘버오브시피유에 있으니 그걸로하죠.

다시 한번 중복된 값은 빼버리고 검색을 하시고 싶다면 다음과 같이 distinct를 사용합니다.

SELECT distinct 필드명 FROM 테이블명;
SELECT distinct thenumberofcpu FROM my_smart_devices;

그럼 이번엔 조건에 맞는 값만 검색해볼까요..

명령문은 다음과 같습니다.

SELECT 필드명1, 필드명2, 필드명3...
FROM 테이블명
where 조건;

where문은 조건을 부여할 때 사용합니다. 그럼 테이블 my_smart_devices에서 코어가 2개인 제품을 찾아보도록 합시다.

SELECT * FROM my_smart_devices where thenumberofcpu = '2';

위에 명령문을 입력하면 됩니다. = 는 같은것을 찾는다는 의미입니다.

만약 코어가 2개인 제품의 특정 필드만 보시려면 예를들어 name와 company를 보신다면 아래와 같이 입력 하시면 됩니다.

SELECT name company FROM my_smart_devices where thenumberofcpu = '2';

검색된 필드를 오름차순 내림차순으로 정렬할수도 있습니다.

오름차순은 ASC 내림차순은 DESC 입니다.

이것들을 정렬하기 위해서는 아래와 같이 입력을 하면됩니다.

SELECT 필드명1, 필드명2, 필드명3...
FROM 테이블명
order by 필드명 오름차순(ASC) 또는 내림차순(DESC);

그리고 오름차순은 생략을 해도 됩니다. 디폴트가 ASC입니다.

그럼 num으로 직접 오른차순 내림차순을 경험해봅시다.!!

SELECT * FROM my_smart_devices ORDER BY num DESC;
SELECT * FROM my_smart_devices ORDER BY num ASC;

다음은 코어가 2개인 제품을 num순으로 내림차순 오름차순으로 검색해봅시다.

SELECT * FROM my_smart_devices WHERE thenumberofcpu = '2' ORDER BY num DESC;

레코드가 적어서 별로 잘 모를수도 있지만 대용량 디비일 경우에 유용해요~

SELECT * FROM my_smart_devices WHERE thenumberofcpu = '2' ORDER BY num ASC;

레코드가 적어서 별로 잘 모를수도 있지만 대용량 디비일 경우에 유용해요~

그럼 이번엔 이렇게 해볼까요 thenumberofcpu 가 1보다큰 레코드를 내림차순 오름차순으로 검색해 봅시다.

SELECT * FROM my_smart_devices WHERE thenumberofcpu > 1 ORDER BY num DESC;

명령어에서 보듯이 조건을 줄수가 있습니다. thenumberofcpu > 1

이렇게 1보다큰 이라는 조건을 줄수가 있습니다.

그럼 조건을 2개다 만족해야 하는것을 써볼까요 코어가 1개 초과 하면서 삼성 제품을 찾아보도록 해봅시다.

SELECT * FROM my_smart_devices WHERE thenumberofcpu >1 AND company LIKE '%samsung%';

문자열을 검색할때는 필드명 적고 like 를 적고 그 필드값이 문자인것은 '%문자열%' 로 해주시면 됩니다.

company = samsung 하시면 안돼요!!

그럼 위에서부터 몇명만 보이게 하라 이런거는 어떻게 할까요

LIMIT를 사용합니다.

위에서 예를 들어 성적이 높은 사람 50명만 출력되게 한다든지 할때 쓰면 좋습니다.

SELECT * FROM 테이블명 ORDER BY 필드명 ASC or DESC LIMIT 숫자;

그럼 해보자! 테이블에서 2번째 까지만 보이도록 num순서를 오름차순으로..

SELECT * FROM my_smart_devices ORDER BY num ASC LIMIT 2;

다음시간에는 집계함수에 대해서 배워봅시다!!

현재까지의 db 백업 (아래는 현재까지의 작업을 백업한거라서 중도에 들어오신분들을 위한거에요.)

david_db smart