SQL 기본 문법 완벽 가이드: 구조, 키워드 규칙, 주석 및 SELECT 문 이해하기
SQL 기본 문법에서는 SQL의 문법 구조와 키워드 대소문자 규칙, 주석 사용법, 기본 SELECT 문, SQL 실행 순서에 대해 설명합니다. SQL의 기본 요소를 이해하고, 쿼리 작성 시 주의해야 할 사항들을 배워 실무에 활용할 수 있도록 돕습니다.
SQL의 문법 구조
SQL(Structured Query Language)은 데이터베이스와 상호작용하기 위해 사용되는 표준 언어입니다. SQL의 문법 구조는 명령어와 절, 그리고 그에 따른 다양한 요소로 구성됩니다. 기본적으로 SQL 문은 다음과 같은 구조를 가집니다.
기본 구조
SQL 문은 일반적으로 다음과 같은 형식을 가집니다:
<명령어> <대상> <조건>
- 명령어: 수행할 작업을 지정합니다. 예를 들어,
SELECT
,INSERT
,UPDATE
,DELETE
등이 있습니다. - 대상: 작업을 수행할 데이터베이스 객체(테이블 등)를 지정합니다.
- 조건: 특정 조건을 통해 데이터를 필터링하거나 조작할 수 있습니다. 이는
WHERE
절을 통해 표현됩니다.
예제
SELECT 문
SELECT
문은 데이터베이스에서 데이터를 조회할 때 사용합니다. 기본 형식은 다음과 같습니다.SELECT 열1, 열2 FROM 테이블명 WHERE 조건;
예를 들어,
employees
테이블에서 직원의 이름과 급여를 조회하고 싶다면 다음과 같이 작성할 수 있습니다.SELECT first_name, salary FROM employees WHERE department_id = 30;
INSERT 문
INSERT
문은 데이터베이스에 새로운 데이터를 추가할 때 사용합니다. 기본 형식은 다음과 같습니다.INSERT INTO 테이블명 (열1, 열2) VALUES (값1, 값2);
예를 들어,
employees
테이블에 새로운 직원 정보를 추가하려면 다음과 같이 작성할 수 있습니다.INSERT INTO employees (employee_id, first_name, last_name, salary, department_id) VALUES (1001, 'John', 'Doe', 3000, 30);
UPDATE 문
UPDATE
문은 기존 데이터를 수정할 때 사용합니다. 기본 형식은 다음과 같습니다.
UPDATE 테이블명
SET 열1 = 값1, 열2 = 값2
WHERE 조건;
예를 들어, employees
테이블에서 특정 직원의 급여를 수정하려면 다음과 같이 작성할 수 있습니다.
UPDATE employees
SET salary = 3500
WHERE employee_id = 1001;
DELETE 문
DELETE
문은 데이터베이스에서 데이터를 삭제할 때 사용합니다. 기본 형식은 다음과 같습니다.DELETE FROM 테이블명 WHERE 조건;
예를 들어,
employees
테이블에서 특정 직원 정보를 삭제하려면 다음과 같이 작성할 수 있습니다.DELETE FROM employees WHERE employee_id = 1001;
이처럼 SQL의 문법 구조는 명령어, 대상, 조건으로 이루어져 있으며, 각 명령어는 특정한 작업을 수행합니다. 초급자들은 이러한 기본 구조를 이해하고 다양한 SQL 문을 작성해보는 것이 중요합니다.
SQL 키워드 대소문자 규칙
SQL은 대소문자를 구분하지 않는 언어입니다. 즉, SQL 키워드는 대문자, 소문자 또는 혼합하여 사용해도 동일하게 인식됩니다. 그러나 일반적으로 SQL 키워드는 가독성을 높이기 위해 대문자로 작성하는 것이 관례입니다. 이 규칙을 잘 이해하면 SQL 쿼리를 작성할 때 더 명확하게 의도를 전달할 수 있습니다.
키워드 대소문자 사용 예
대문자 사용 예
SQL 키워드를 대문자로 작성하면 쿼리의 구조가 명확해집니다. 예를 들어, 다음과 같은 쿼리는 유효합니다.
SELECT first_name, last_name FROM employees WHERE department_id = 10;
소문자 사용 예
소문자로 작성해도 SQL은 이를 인식합니다. 다음과 같은 쿼리도 동일한 결과를 반환합니다.
select first_name, last_name from employees where department_id = 10;
혼합 사용 예
대소문자를 혼합하여 사용할 수도 있습니다. 다음 쿼리도 유효합니다.
SeLeCt first_name, last_name
fRoM employees
wHeRe department_id = 10;
식별자와 대소문자
SQL에서 테이블 이름, 열 이름 등 식별자는 대소문자를 구분할 수 있습니다. Oracle SQL에서는 기본적으로 식별자를 대문자로 변환하여 저장합니다. 그러나 식별자를 소문자나 혼합하여 사용하고 싶다면 큰따옴표("
)로 감싸야 합니다.
예제
대소문자 구분 없는 테이블 이름
다음 쿼리는
employees
테이블에 접근합니다. 대소문자에 관계없이 작동합니다.SELECT * FROM employees;
큰따옴표로 감싼 식별자
다음 쿼리는
Employees
라는 이름의 테이블에 접근합니다. 이 경우 대소문자가 구분됩니다.SELECT * FROM "Employees";
결론
SQL 키워드는 대소문자에 구애받지 않지만, 가독성을 위해 대문자로 작성하는 것이 좋습니다. 반면, 식별자는 대소문자를 구분할 수 있으므로, 혼란을 피하기 위해 일관된 방식으로 사용하는 것이 중요합니다. 이러한 규칙을 이해하고 활용하면 SQL 쿼리를 작성할 때 더 효율적으로 작업할 수 있습니다.
주석 사용법
SQL에서 주석은 코드의 특정 부분에 설명을 추가하여 가독성을 높이고, 다른 개발자들이 코드를 이해하는 데 도움을 줍니다. 주석은 SQL 쿼리의 실행에 영향을 미치지 않으며, 주석을 통해 코드의 의도나 기능을 설명할 수 있습니다. SQL에서는 두 가지 유형의 주석을 지원합니다: 단일 행 주석과 다중 행 주석입니다.
1. 단일 행 주석
단일 행 주석은 --
기호를 사용하여 작성합니다. --
뒤에 오는 내용은 해당 줄의 끝까지 주석으로 처리됩니다.
예제
SELECT first_name, last_name -- 직원의 이름과 성을 선택합니다
FROM employees; -- employees 테이블에서 조회
위의 예제에서 --
뒤에 있는 내용은 주석으로 간주되며, SQL 쿼리의 실행에는 영향을 미치지 않습니다.
2. 다중 행 주석
다중 행 주석은 /*
로 시작하고 */
로 끝나는 형식으로 작성합니다. 이 형식은 여러 줄에 걸쳐 주석을 작성할 수 있습니다.
예제
/*
이 쿼리는 employees 테이블에서
모든 직원의 이름과 급여를 조회합니다.
*/
SELECT first_name, salary
FROM employees;
위의 예제에서 /*
와 */
사이에 있는 모든 내용은 주석으로 처리되며, 쿼리의 실행에는 영향을 미치지 않습니다.
주석 사용 시 주의사항
- 주석은 코드의 가독성을 높이는 데 유용하지만, 과도하게 사용하면 오히려 혼란을 줄 수 있습니다. 필요한 경우에만 주석을 추가하는 것이 좋습니다.
- 주석 내용은 간결하고 명확하게 작성해야 합니다. 코드의 의도를 쉽게 이해할 수 있도록 설명하는 것이 중요합니다.
- SQL 쿼리의 복잡한 부분이나 특정 로직에 대한 설명을 주석으로 추가하면, 나중에 코드를 다시 읽을 때 큰 도움이 됩니다.
이처럼 SQL에서 주석을 적절히 사용하면 코드의 가독성을 높이고, 다른 개발자들과의 협업 시 의사소통을 원활하게 할 수 있습니다.
기본 SELECT 문
SELECT
문은 SQL에서 가장 기본적이고 중요한 명령어로, 데이터베이스에서 데이터를 조회하는 데 사용됩니다. SELECT
문을 통해 특정 테이블의 데이터를 선택하고, 필요한 열만을 조회할 수 있습니다. 이 문법은 매우 직관적이며, 다양한 조건을 추가하여 원하는 데이터를 필터링할 수 있습니다.
기본 구문
SELECT
문의 기본 구문은 다음과 같습니다:
SELECT 열1, 열2, ...
FROM 테이블명
WHERE 조건;
- 열1, 열2, ...: 조회할 열의 이름을 지정합니다. 모든 열을 조회하고 싶다면
*
를 사용할 수 있습니다. - 테이블명: 데이터를 조회할 테이블의 이름을 지정합니다.
- 조건: 특정 조건을 설정하여 조회할 데이터를 필터링합니다.
WHERE
절을 사용합니다.
예제
모든 열 조회
employees
테이블에서 모든 직원의 정보를 조회하고 싶다면 다음과 같이 작성할 수 있습니다.SELECT * FROM employees;
위의 쿼리는
employees
테이블의 모든 열과 모든 행을 반환합니다.특정 열 조회
특정 열만 조회하고 싶다면 열 이름을 명시하여 쿼리를 작성할 수 있습니다. 예를 들어, 직원의 이름과 급여를 조회하려면 다음과 같이 작성합니다.
SELECT first_name, salary FROM employees;
이 쿼리는
first_name
과salary
열만 반환합니다.조건을 이용한 조회
WHERE
절을 사용하여 특정 조건을 만족하는 데이터만 조회할 수 있습니다. 예를 들어, 급여가 3000 이상인 직원의 이름과 급여를 조회하려면 다음과 같이 작성합니다.
SELECT first_name, salary
FROM employees
WHERE salary >= 3000;
이 쿼리는 급여가 3000 이상인 직원의 이름과 급여를 반환합니다.
정렬 기능 사용
조회한 데이터를 정렬하고 싶다면
ORDER BY
절을 사용할 수 있습니다. 예를 들어, 급여를 기준으로 내림차순 정렬하려면 다음과 같이 작성합니다.SELECT first_name, salary FROM employees ORDER BY salary DESC;
이 쿼리는 급여가 높은 순서대로 직원의 이름과 급여를 반환합니다.
결론
SELECT
문은 SQL에서 데이터를 조회하는 데 가장 기본적인 명령어입니다. 열과 테이블을 지정하고, 조건을 통해 원하는 데이터를 필터링할 수 있습니다. 다양한 기능을 활용하여 데이터 조회를 효과적으로 수행할 수 있습니다. 초급자는 이러한 기본적인 SELECT
문을 익히고 실습해보는 것이 중요합니다.
SQL 실행 순서
SQL 쿼리는 작성된 순서와는 다르게 특정한 실행 순서에 따라 처리됩니다. 이 실행 순서를 이해하면 쿼리의 동작 원리를 더 잘 파악할 수 있으며, 복잡한 쿼리를 작성할 때 도움이 됩니다. SQL의 실행 순서는 다음과 같은 단계로 이루어집니다.
SQL 실행 순서 단계
FROM 절: 데이터베이스에서 데이터를 가져올 테이블을 지정합니다. 이 단계에서 조인(Join) 연산이 수행됩니다.
WHERE 절:
FROM
절에서 선택된 데이터에 대해 조건을 적용하여 필터링합니다. 이 단계에서 조건을 만족하는 데이터만 선택됩니다.GROUP BY 절: 데이터를 그룹화합니다. 같은 값을 가진 데이터들을 하나의 그룹으로 묶어 집계 함수(예: COUNT, SUM 등)를 사용할 수 있게 합니다.
HAVING 절:
GROUP BY
절에서 생성된 그룹에 대해 조건을 적용합니다. 이 단계에서 그룹화된 데이터 중에서 조건을 만족하는 그룹만 선택됩니다.SELECT 절: 최종적으로 조회할 열을 지정합니다. 이 단계에서 선택된 데이터의 열이 결정됩니다.
ORDER BY 절: 최종 결과를 정렬합니다. 지정된 열을 기준으로 오름차순 또는 내림차순으로 정렬됩니다.
- LIMIT 절 (또는 ROWNUM): 최종 결과에서 반환할 행의 수를 제한합니다. Oracle에서는
ROWNUM
을 사용하여 결과의 개수를 조절할 수 있습니다.
예제
다음은 SQL 쿼리의 실행 순서를 보여주는 예제입니다.
SELECT department_id, COUNT(*)
FROM employees
WHERE salary > 2000
GROUP BY department_id
HAVING COUNT(*) > 2
ORDER BY department_id;
위 쿼리의 실행 순서는 다음과 같습니다:
- FROM:
employees
테이블에서 데이터를 가져옵니다. - WHERE: 급여가 2000 이상인 직원만 선택합니다.
- GROUP BY: 선택된 데이터를
department_id
로 그룹화합니다. - HAVING: 각 부서에 2명 이상의 직원이 있는 부서만 선택합니다.
- SELECT:
department_id
와 각 부서의 직원 수를 선택합니다. - ORDER BY: 결과를
department_id
기준으로 정렬합니다.
이와 같이 SQL 쿼리는 특정한 실행 순서를 따르며, 각 단계에서 데이터가 처리됩니다. 이러한 실행 순서를 이해하면 쿼리의 성능을 최적화하고, 원하는 결과를 더 정확하게 얻을 수 있습니다.