데이터베이스에서 데이터를 찾기 위해 가장 많이 사용되는 명령어 중 하나인 SELECT
는 테이블 내의 데이터를 선택하는 데 사용되며, 특정 테이블에서 데이터를 선택하는 것뿐만 아니라 다양한 검색 조건을 지정하고, 검색 결과를 정렬하며, 필요한 열만 선택하는 등 매우 유연한 작업을 할 수 있다.
SELECT
의 기본 문법SELECT column1, column2, ... FROM table_name WHERE condition;
위의 구문에서 column1, column2 등은 검색하고자 하는 열의 이름을 지정한다
이때*
를 사용하면 모든 필드를 선택할 수 있다.
FROM
은 테이블 이름을 나타내고, 필드 이름을 선택할 때는 해당 필드 이름을 쉼표로 구분하여 나열한다.
WHERE
은 선택적으로 사용할 수 있으며, 검색 조건(condition) 을 지정하고, 생략하면 모든 행이 선택된다.
SQL 문의 끝은 보통 세미콜론(;
) 으로 표시한다.
DISTINCT
는SELECT
문에서 중복을 제거하여 고유한 값만 검색하는 데 사용된다.SELECT DISTINCT column_name FROM table_name;
또한, 여러 열의 조합에 대해 고유한 값을 찾을 수도 있다.
그리고
LIMIT
,COUNT
등의 다양한 함수를 사용하여 데이터를 검색하거나 계산할 수 있다. 이러한 함수를 적절히 활용하면 데이터를 보다 쉽게 처리할 수 있다.
LIMIT
: 검색 결과를 제한하는 데 사용한다.SELECT column1, column2, ... FROM table_name LIMIT 10;
대용량 데이터 처리에서 특히 유용하며, 검색 속도를 높일 수 있다. 그러나 검색 대상의 전체 데이터가 아니라 일부만 검색할 때에만 사용되므로, 필요한 결과를 검색하기 위해 어떤 범위를 사용할지 결정하는 것이 중요하다.
COUNT
: 특정 열이나 테이블의 전체 행 수를 계산하는 데 사용된다.SELECT COUNT(column_name) FROM table_name;
SQL 에서 가장 많이 사용되는 집계 함수 중 하나이다. 데이터의 갯수를 쉽게 계산할 수 있어서 많은 분야에서 사용된다.
SELECT COUNT(*) FROM table_name WHERE condition;
또, 특정 조건을 충족하는 행의 수를 계산할 수 있다.
- 응용하면,
COUNT
와DISTINCT
를 함께 사용하여 중복을 제거하고 특정 열의 고유한 값 수를 계산할 수 있다.SELECT COUNT(DISTINCT column_name) FROM table_name;
이처럼 SELECT
문을 적절히 활용하여 데이터를 검색하면 데이터베이스에서 원하는 데이터를 효율적으로 검색할 수 있다. 이 작업을 수행할 때는 검색 조건을 명확하게 설정하고, 필요한 열만을 선택하여 불필요한 데이터를 제거하는 등의 작업을 통해 최적화된 검색을 수행하는 것이 좋다.
데이터베이스에서 검색하려는 특정 조건을 지정하는 데 사용하며,
이 절은 SELECT
, UPDATE
, DELETE
등의 SQL 문에서 사용된다.
WHERE
절은WHERE
키워드 뒤에 조건식을 지정하여 사용된다.
조건식은 일반적으로 데이터베이스의 테이블 열과 비교되는 값을 나타내며, 이를 통해 특정 행이나 데이터를 검색할 수 있다.예를 들어, 아래의 SQL 문은 customers 테이블에서 customers_name 이 'raon' 인 고객을 검색한다.
SELECT * FROM customers WHERE customers_name = 'raon';
WHERE
절에서는 다양한 조건을 사용할 수 있다. 그 중에서도 가장 많이 사용하는 것은
=
,>
,>=
,!=
등과 같은 비교 연산자다.SELECT * FROM products WHERE price > 100;
이외에도 범위(
BETWEEN
), 포함(IN
), 패턴(LIKE
) 등 다양한 조건을 사용할 수 있다.SELECT * FROM products WHERE price BETWEEN 100 AND 200;
SELECT * FROM products WHERE product_name IN ('apple', 'banana');
또한
AND
,OR
,NOT
과 같은 논리 연산자를 사용하여 여러 조건식을 결합할 수도 있다.SELCET * FROM orders WHERE order_date > '2023-03-01' AND total_amount > 1000;
특히, 패턴 검색을 위해
LIKE
를 사용하는 경우, 필드값이 특정 문자열로 시작하거나 끝나는 데이터를 선택하는 데 많이 사용하거나, 문자열 패턴과 일치하는 값을 검색할 수 있다. 이를 통해 데이터베이스에서 원하는 정보를 더욱 쉽게 찾을 수 있다.
LIKE
는 다음과 같은 와일드카드 문자를 사용할 수 있다.
%
: 0개 이상의 임의의 모든 문자열을 나타낸다.예를 들어, 'apple%' 은 'apple', 'applepie', 'applejuice' 등과 일치한다.
SELECT * FROM products WHERE produnt_name LIKE 'apple%';
`%string%' 은 양쪽에 와일드카드 문자가 있는 문자열을 검색한다.
예를 들어, '%apple%' 은 'pineapple', 'apples', 'crabapples' 등과 일치한다.
_
: 정확히 하나의 임의의 문자와 일치한다.SELECT * FROM products WHERE produnt_name LIKE '__ple';
_
는 언더스코어 대신에 하나의 문자를 나타낸다. 예를 들어, '__ple' 은 'apple', 'ample', 'maple' 등과 일치하지만, 'pineapple' 과는 일치하지 않는다.또한 이 외에도 다양한 와일드카드 문자가 있으나, 각각의 와일드카드 문자 유형은 데이터베이스 관리 시스템에 따라 다를 수 있으므로, 사용하는 데이터베이스에 따라 문법을 확인해야 한다.
NOT LIKE
는LIKE
와 반대로 작동한다. 즉, 지정된 패턴과 일치하지 않는 행을 선택한다.
예를 들어,'apple%'
이 아닌 모든 문자열을 선택하려면NOT LIKE 'apple%'
을 사용할 수 있다.SELECT * FROM products WHERE produnt_name NOT LIKE 'apple%';
위와 같이 와일드카드 문자는 매우 유용하게 사용된다. 이를 활용하여 다양한 패턴의 문자열을 검색하거나 선택할 수 있다.
더불어, WHERE
절을 이용해 데이터베이스에서 원하는 정보를 찾은 후에는, 그 정보를 활용하여 다양한 분석을 수행할 수 있다. 예를 들어, 데이터베이스에서 선택한 정보를 바탕으로 그래프를 작성하거나, 테이블을 생성하여 분석할 수 있다. 이러한 분석을 통해 데이터베이스에서 얻은 정보를 더욱 활용하여 다양한 결과를 도출할 수 있다.