관계형 데이터베이스에서 SQL SELECT 문은 데이터를 검색하는 핵심적인 수단이다. 이 문장은 데이터베이스의 상태를 질의하고 결과를 얻기 위해 사용된다. SELECT 문은 여러 절로 구성되며, 이를 통해 원하는 데이터를 효율적으로 추출할 수 있다.
SELECT 문 형식과 필수 절
기본 구조 및 절의 구성
SQL SELECT 문은 기본적으로 SELECT 절과 FROM 절로 구성된다. 이 두 절은 필수적이며, 나머지 절은 선택적으로 추가할 수 있다. SQL 문에서는 대소문자를 구분하지 않지만, 절의 순서는 반드시 지켜야 한다. 예를 들어, SELECT EMPNAME, SALARY FROM EMPLOYEE;와 같은 형식이 이에 해당한다.
WHERE 절은 데이터를 필터링하는 조건을 설정하는 역할을 하며, 이를 통해 특정 조건에 맞는 데이터만 검색할 수 있다. WHERE 절에서는 비교 연산자와 부울 연산자를 사용하여 조건을 설정하며, 중첩 질의도 가능하다. 이러한 조건식을 통해 원하는 데이터를 정확하게 추출할 수 있다.
SELECT 절의 활용
SELECT 절에서는 필요한 속성을 명시하여 데이터를 검색할 수 있다. 모든 속성을 검색하고자 할 경우 SELECT * FROM 테이블명;의 형식을 사용할 수 있으며, 특정 속성만 검색하고자 할 경우 SELECT 속성1, 속성2 FROM 테이블명;의 형식을 사용한다. 예를 들어, SELECT DEPTNO, DEPTNAME FROM DEPARTMENT;와 같은 방식으로 특정 속성을 선택할 수 있다.
추가적으로 DISTINCT 키워드를 사용하면 중복된 데이터를 제거하고 결과를 출력할 수 있다. 예를 들어, SELECT DISTINCT TITLE FROM EMPLOYEE;는 중복된 직함을 제거한 결과를 보여준다. 이와 같이 SELECT 절은 데이터를 검색할 때 매우 유용한 도구로 활용된다.
조건 부여 및 연산자 사용
WHERE 절의 조건 설정
WHERE 절은 특정 조건에 맞는 데이터를 필터링하는데 사용된다. 이 절에서는 비교 연산자, 부울 연산자 및 집합 연산자를 사용하여 조건을 설정할 수 있다. 예를 들어, SELECT * FROM EMPLOYEE WHERE SALARY >= 3000000; 은 급여가 3000000원 이상인 직원의 정보를 검색한다.
이외에도 LIKE 연산자를 사용하여 문자열의 일부에 대한 비교 조건을 설정할 수 있으며, 패턴 매칭을 통해 조건을 더욱 세분화할 수 있다. 예를 들어, SELECT EMPNAME FROM EMPLOYEE WHERE EMPNAME LIKE ‘이%’;는 이름이 ‘이’로 시작하는 직원의 이름을 검색한다. 이러한 조건 설정은 데이터 검색의 정확성을 높인다.
다양한 검색 조건의 결합
WHERE 절에서는 여러 조건을 논리 연산자로 결합하여 복잡한 검색이 가능하다. AND, OR, NOT 등의 연산자를 통해 다양한 조건을 조합할 수 있으며, 이를 통해 특정 조건을 만족하는 튜플을 검색할 수 있다. 예를 들어, SELECT EMPNAME, SALARY FROM EMPLOYEE WHERE TITLE = ‘과장’ AND DNO = 1;는 직급이 과장이고 1번 부서에 속한 직원의 이름과 급여를 검색하는 쿼리이다.
이와 같은 방식으로 다양한 조건을 결합하여 원하는 데이터를 더욱 정교하게 필터링 할 수 있다. 또한, 범위를 설정하여 급여가 특정 범위에 있는 직원들을 검색하는 것도 가능하다. 예를 들어, SELECT EMPNAME, SALARY FROM EMPLOYEE WHERE SALARY BETWEEN 3000000 AND 4500000;는 급여가 3000000원 이상 4500000원 이하인 직원의 정보를 검색한다.
GROUP BY 및 HAVING 절의 활용
GROUP BY 절의 사용
GROUP BY 절은 특정 속성에 동일한 값을 갖는 튜플들을 그룹화하는 데 사용된다. 이 절을 사용하여 집계 함수와 결합하면, 그룹별로 데이터를 요약할 수 있다. 예를 들어, SELECT DEPTNO, COUNT(*) FROM EMPLOYEE GROUP BY DEPTNO;는 각 부서별 직원 수를 계산하여 출력한다.
이와 함께 HAVING 절을 사용하여 GROUP BY로 생성된 그룹들이 만족해야 하는 조건을 명시할 수 있다. 예를 들어, SELECT DEPTNO, COUNT() FROM EMPLOYEE GROUP BY DEPTNO HAVING COUNT() > 5;는 직원 수가 5명 이상인 부서를 검색하는 쿼리이다. 이러한 방식으로 GROUP BY와 HAVING 절을 조합하여 데이터 요약 및 분석을 수행할 수 있다.
ORDER BY 절을 통한 정렬
ORDER BY 절은 결과 튜플들의 정렬 순서를 지정하는 데 사용된다. 이 절을 사용하여 특정 속성을 기준으로 오름차순 또는 내림차순으로 데이터를 정렬할 수 있다. 예를 들어, SELECT EMPNAME, SALARY FROM EMPLOYEE ORDER BY SALARY DESC;는 급여를 기준으로 내림차순으로 정렬된 직원의 이름과 급여를 출력한다.
정렬은 데이터 분석에 있어 중요한 역할을 하며, 결과를 보다 쉽게 해석하고 비교할 수 있도록 도와준다. 이처럼 ORDER BY 절은 결과의 가독성을 높이는 데 기여한다.
NULL 값 처리 및 산술 연산자 사용
NULL 값의 검색과 처리
SQL에서 NULL 값은 중요한 개념으로, 데이터를 검색할 때 특별한 주의가 필요하다. NULL 값은 ‘없음’을 나타내며, 비교 연산을 수행할 때 특별히 처리해야 한다. 예를 들어, SELECT EMPNO, EMPNAME FROM EMPLOYEE WHERE DNO IS NULL;은 DNO가 NULL인 직원의 정보를 검색하는 쿼리이다.
NULL 값은 집계 함수의 결과에 영향을 미치며, COUNT(*)를 제외한 대부분의 집계 함수는 NULL 값을 무시한다. 따라서 NULL 값을 포함한 데이터를 검색할 때는 주의가 필요하다. SELECT EMPNAME, SALARY FROM EMPLOYEE WHERE SALARY < 2000000 OR SALARY >= 2000000 OR SALARY IS NULL;와 같은 쿼리로 NULL 값을 포함시킬 수 있다.
산술 연산자의 활용
SELECT 문에서는 산술 연산자를 사용하여 계산된 값을 출력할 수 있다. 예를 들어, SELECT EMPNAME, SALARY, SALARY * 1.1 AS NEWSALARY FROM EMPLOYEE WHERE TITLE = ‘과장’;은 과장 직급의 직원에 대해 현재 급여와 10% 인상된 급여를 함께 출력한다. 이와 같이 산술 연산자는 데이터 분석 및 결과 도출에 있어 유용한 도구로 활용된다.
SQL SELECT 문은 데이터베이스에서 정보를 효율적으로 검색하고 분석하는 데 필수적인 역할을 한다. 다양한 절과 조건을 활용하여 원하는 데이터를 정확히 추출할 수 있으며, 이러한 과정은 데이터베이스 관리의 핵심 요소로 자리 잡고 있다.
