[SQL 정복하기]테이블에서 데이터 검색
코딩 테스트를 준비하면서 생각보다 SQL 문제가 많이 출제 되어서 기본적인 문법을 바탕을 정리하고 문제들을 풀어보는 방식으로 진행하겠습니다.
실제로 SQL은 조회부분이 가장 많이 쓰이고, 중요합니다. 이 부분을 중점으로 공부하도록 하겠습니다. 그럼 바로 시작하겠습니다.
1. SELECT * FROM 테이블명
SELECT와 그리고 FROM 사이에는 스페이스를 넣어서 구분합니다. 입력이 끝나면 명령의 마지막을 나타내는 세미콜론(;)을 넣은 뒤 Enter를 누르면 됩니다.
SELECT * FROM SAMPLE21;
테이블의 열은 많아야 몇십 개 정도지만 행은 열에 비해 훨씬 많을 수 있습니다. 데이터베이스의 규모에 따라서 다르지만 일반적으로 수백 건에서 대규모의 경우 수천만 건의 행에 달하는 경우도 있습니다. 이처럼 많은 행 속에서 필요한 데이터만 검색하기 위해서는 WHERE 구를 사용합니다.
# where구로 name 열 값이 '박준용'인 행만 출력
SELECT * FROM SAMPLE21 WHERE name = '박준용';
name 열은 no 열과 자료형이 다른 문자열형입니다. 수치형 조건식의 경우 비교할 숫자를 그대로 조건식에 표기합니다. 하지만 문자열형을 비교할 경우는 ‘박준용’처럼 싱글쿼트로 둘러싸 표기합니다.
그럼 SELECT문법을 익혀보도록 하겠습니다.
- 값이 서로 다른 경우 ‘<>’
SELECT * FROM sample21 WHERE no <> 2;
**- NULL 값 검색 **
SELECT * FROM SAMPLE21 WHERE birthday IS NULL;
null 값을 검색할 경우에는 IS NULL을 사용합니다! 다음으로 살펴볼 문법은 비교연산자인데 다른 프로그래밍 언어 유사하기 때문에 넘어가도록 하겠습니다. 다만 주의할점은 등호일 경우 ‘==’이 아닌 ‘=’임을 주의하시길 바랍니다.
2. 조건 조합하기
- 1. AND로 조합하기
SELECT * FROM sample24 WHERE a<>0 AND b<>0;
**-2. OR 조합하기 **
SELECT * FROM sample24 WHERE a<>0 OR b<>0;
-3. NOT으로 조합하기 a열이 0이 아니거나 b열이 0이 아닌 행을 제외한 나머지 행을 검색
SELECT * FROM sample24 WHERE NOT(a<>0 OR b<>0);
3. 패턴 매칭에 의한 검색
like 술어를 사용하여 패턴 매칭으로 검색할 수 있습니다. 패턴을 정의할 때는 사용할 수 있는 메타문자로는 %와 _이 있습니다. 두 개의 차이점이 있다면 %는 임의의 문자열을 의미하며 _는 임의의 문자 하나만을 의미합니다. 그렇다보니 패턴 매칭을 사용할 시에는 _보다는 %를 좀 많이 사용하는 경향이 있습니다.
- 전방일치: SQL은 RDBMS를 ….-> SQL%
 - 중간일치: LIKE는 SQL에서 사용 …..-> %SQL%
 - 후방일치: 입문 SQL -> %SQL
 
# 4.정렬과 연산 age 열의 값을 오름차순으로 정렬하기
SELECT * FROM sample31 ORDER BY age;
내림차순 정렬
SELECT * FROM sample31 ORDER BY age DESC;