MySQL
레코드 검색
레코드 검색
앞에서 만들었던 mydevices를 이용하여 레코드 검색기능을 배워봅시다.!~~
지금까지 사용했던 SELECT문은 레코드를 불러오는 명령문입니다.
mydevices 안에 있는 mydevicesID, name, cpu, company 이렇게 4개의 필드가 존재하고 있습니다.
그럼 이번엔 조건에 맞는 값만 검색해볼까요..
명령문은 다음과 같습니다.
- SELECT 필드명1, 필드명2, 필드명3...
- FROM 테이블명
- WHERE 조건;
WHERE문은 조건을 부여할 때 사용합니다. 그럼 테이블 mydevices에서 cpu가 M1인 제품을 찾아보도록 합시다.
SELECT * FROM mydevices WHERE cpu = 'M1';
위에 명령문을 입력하면 됩니다. = 는 같은것을 찾는다는 의미입니다.

CPU가 M1인 제품의 특정 필드만 본다면... 예를들어 name와 company를 정보만 본다면 아래와 같이 입력 하시면 됩니다.
SELECT name, company FROM mydevices WHERE cpu = 'M1';

특정 문자가 들어간 데이터 검색하기
특정 문자가 들어간 데이터를 검색할 수 있습니다.
찾을 문자열 앞 뒤로 %를 붙여줍니다. 그리고 = 대신 LIKE를 사용합니다.
그럼 CPU에 A가 들어가는 데이터를 찾는다면..
SELECT * FROM mydevices WHERE cpu LIKE '%A%';

CPU에 A가 들어간 데이터가 표시됩니다.
특정 문자로 끝나는 데이터 검색하기
특정 문자앞에만 %를 붙이면 특정 문자로 끝나는 데이터를 찾을 수 있습니다.
cpu가 5로 끝나는 데이터를 검색해 보면..
SELECT * FROM mydevices WHERE cpu LIKE '%5';

특정 문자로 시작하는 데이터 검색하기
특정 문자뒤에만 %를 붙이면 특정 문자로 시작하는 데이터를 찾을 수 있습니다.
cpu가 Mdm로 시작하는 데이터를 검색해 보면..
SELECT * FROM mydevices WHERE cpu LIKE 'M%';

이번에는 특정 숫자보다 크거나 작은 데이터를 검색해 볼게요.
>, >=, <, <= 를 사용해서 크거나 같거나, 크거나, 작거나, 작거나 같거나하는 데이터를 검색할 수 있습니다.
특정 숫자보다 작은 데이터 검색하기
mydevicesID가 2보다 작은 데이터를 검색한다면
SELECT * FROM mydevices WHERE mydevicesID < 2;

특정 숫자보다 작거나 같은 데이터 검색하기
mydevicesID가 2보다 작거나 같은 데이터를 검색한다면
SELECT * FROM mydevices WHERE mydevicesID <= 2;

특정 숫자보다 큰 데이터 검색하기
mydevicesID가 2보다 큰 데이터를 검색한다면
SELECT * FROM mydevices WHERE mydevicesID > 2;

특정 숫자보다 크거나 같은 데이터 검색하기
mydevicesID가 2보다 크거나 같은 데이터를 검색한다면
SELECT * FROM mydevices WHERE mydevicesID >= 2;

좀 더 알아봅시다.
LIKE 앞에 NOT 을 사용할 수 있습니다. 반대로 작동합니다.
SELECT * FROM mydevices WHERE cpu LIKE '%A%';
위의 쿼리문은 cpu에 A가 들어가는 데이터를 불러오죠.

LIKE앞에 NOT을 붙이면..
SELECT * FROM mydevices WHERE cpu NOT LIKE '%A%';

위의 결과를 보면 cpu에 A가 들어있지 않은 데이터만 불러옵니다.
이런것도 가능합니다.
글자수가 몇개인것중에 몇번째 자리에 어떤 문자가 있는 데이터 찾기요.
예를 들어 글자수가 3글자이고 가운데에 1이 있는 데이터를 찾는것도 가능합니다.
_(언더바)를 사용합니다.
SELECT * FROM mydevices WHERE cpu LIKE '_1_';
위의 쿼리문을 보면 _1_를 사용했습니다. 데이터가 3글자 이고 가운데 1인 데이터를 의미합니다.

결과가 잘 나왔네요.
그냥 글자수만 맞는 데이터를 찾으려면 _를 글자수 만큼 적어줍니다.
cpu가 두글자인 데이터만 찾는다면...
SELECT * FROM mydevices WHERE cpu LIKE '__';
