프로그래밍에서는 터치 타이핑이 중요합니다. 빠른 입력 기술을 사용하여 SQL 프로그래밍 언어로 코드를 작성하는 것이 더 효율적입니다.
SQL 프로그래밍 및 터치 입력
SQL을 배우는 것과 타자 연습은 자연스럽게 연결됩니다. SQL 쿼리는 괄호, 쉼표, 연산자, 따옴표로 가득 차 있습니다. 따옴표를 잘못 입력하거나 세미콜론을 빼먹는 작은 실수도 쿼리 전체를 실패하게 만들 수 있습니다. SQL을 입력할 때는 어떤 구문 요소가 여러 데이터베이스에서 공통이고, 어떤 것이 특정 시스템에만 해당하는지 아는 것이 도움이 됩니다. 이 글은 주로 PostgreSQL에 초점을 맞추지만, 구문이 다른 부분에서는 MySQL, SQLite, SQL Server도 언급합니다.
SQL 구문의 특징은 무엇인가?
SQL(Structured Query Language)은 선언적 언어입니다. 데이터를 가져오는 방법을 단계별로 설명하는 대신, 원하는 데이터를 선언합니다. 거의 모든 문장은 SELECT
, INSERT
, UPDATE
같은 키워드로 시작합니다. 절의 순서는 고정되어 있습니다: SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ...
. PostgreSQL과 MySQL은 이 순서를 공유하므로 하나에서 배운 것을 다른 곳에서도 사용할 수 있습니다.
SELECT id, name
FROM customers
WHERE active = true
ORDER BY created_at DESC;
자주 사용하는 특수 문자
SQL은 많은 구두점을 포함합니다. 괄호 ()
는 함수와 조건을 감쌉니다. 쉼표 ,
는 열을 구분합니다. 점 .
은 스키마와 테이블 이름에 사용됩니다 (예: public.users
). 작은따옴표 '...'
는 문자열 리터럴을 나타냅니다. PostgreSQL은 식별자에 큰따옴표 "..."
를 사용하고, MySQL은 백틱 `...`
을 사용합니다. SQL Server에서는 대괄호 [...]
가 사용되기도 합니다. 이러한 기호들을 연습하는 것은 쿼리를 망치지 않고 정확히 입력하는 데 도움이 됩니다.
-- 문자열 리터럴
SELECT * FROM books WHERE title = 'War and Peace';
-- 공백이 포함된 식별자 (PostgreSQL)
SELECT "Order ID", "Customer Name" FROM orders;
대문자와 소문자
관례적으로 SQL 키워드는 대문자로 입력됩니다: SELECT
, FROM
, WHERE
. 이는 쿼리에서 눈에 잘 띄게 하지만 필수는 아닙니다. PostgreSQL에서는 따옴표 없는 식별자가 자동으로 소문자로 변환되므로 MyTable
과 mytable
은 동일하게 처리됩니다. MySQL에서는 동작이 운영체제에 따라 다릅니다. 연습할 때 키워드를 대문자로 쓰는 것이 일반적이며 쿼리 구조를 잘 드러냅니다.
세미콜론과 문장의 끝
PostgreSQL에서는 모든 문장이 일반적으로 세미콜론 ;
으로 끝납니다. 이를 잊으면 psql
같은 도구에서 실행이 멈출 수 있습니다. MySQL과 SQLite는 대화형 모드에서 더 관대하지만, 세미콜론은 여전히 좋은 습관입니다. 이 작은 기호가 쿼리 실패의 원인이 되는 경우가 많습니다.
SELECT 쿼리와 JOIN
쿼리를 작성하는 것은 종종 JOIN을 작성하는 것을 의미합니다. PostgreSQL은 INNER JOIN
, LEFT JOIN
, RIGHT JOIN
을 사용합니다. 각 JOIN은 키워드 ON
과 조건이 필요합니다. 공백 하나를 빼먹거나 조건을 잘못 입력하면 쿼리가 실패합니다. JOIN 연습은 =
와 .
같은 기호를 정확하게 입력하는 데 도움이 됩니다.
SELECT c.id, c.name, o.amount
FROM customers c
INNER JOIN orders o ON o.customer_id = c.id
WHERE o.amount > 100;
함수와 표현식
PostgreSQL에는 COUNT()
, SUM()
, AVG()
같은 내장 함수가 많이 있습니다. 괄호는 항상 필요합니다. 날짜와 시간 함수인 NOW()
와 DATE_TRUNC()
는 PostgreSQL 고유입니다. MySQL에는 CURDATE()
나 DATE_FORMAT()
같은 대응 함수가 있습니다. 이를 정확히 입력하려면 밑줄, 쉼표, 괄호에 주의해야 합니다.
SELECT DATE_TRUNC('month', created_at) AS month,
COUNT(*) AS orders
FROM orders
GROUP BY month
ORDER BY month;
INSERT, UPDATE, DELETE
데이터를 수정하는 명령어에는 구두점이 많이 포함됩니다. INSERT
는 열과 값을 나열하기 위해 괄호와 쉼표를 사용합니다. UPDATE
는 쉼표로 구분된 =
를 사용합니다. DELETE
는 키워드와 조건을 결합합니다. 이러한 구조는 PostgreSQL, MySQL, SQLite, SQL Server에서 거의 동일하지만 따옴표 규칙은 다를 수 있습니다.
INSERT INTO users (id, name, email)
VALUES (1, 'Alice', 'a@example.com');
UPDATE users
SET name = 'Bob', email = 'bob@example.com'
WHERE id = 1;
DELETE FROM users WHERE id = 2;
Common Table Expressions (CTE)
PostgreSQL은 WITH
로 시작하는 CTE(Common Table Expressions)를 자주 사용합니다. CTE는 괄호와 쉼표가 많이 포함되어 있어 타자 연습에 적합합니다. MySQL과 SQLite의 최신 버전도 지원하며, SQL Server도 마찬가지입니다. 괄호를 올바르게 배치하는 것이 가장 흔한 오류입니다.
WITH recent_orders AS (
SELECT * FROM orders WHERE created_at > NOW() - INTERVAL '30 days'
)
SELECT customer_id, COUNT(*) AS order_count
FROM recent_orders
GROUP BY customer_id;
윈도 함수
PostgreSQL은 고급 윈도 함수로 유명합니다. 일반적인 구문 OVER (PARTITION BY ... ORDER BY ...)
는 괄호와 키워드를 정확히 입력해야 합니다. MySQL과 SQL Server도 이를 지원하지만, PostgreSQL이 자주 기준으로 사용됩니다.
SELECT customer_id,
SUM(amount) OVER (PARTITION BY customer_id ORDER BY created_at) AS running_total
FROM payments;
매개변수와 플레이스홀더
애플리케이션에서 SQL을 사용할 때, 플레이스홀더는 데이터베이스마다 다릅니다. PostgreSQL은 $1, $2
를 사용하고, MySQL과 SQLite는 ?
, SQL Server는 @p1
을 사용합니다. 이 작은 기호들은 잘못 입력하기 쉽지만, 쿼리 실행에 있어 필수적입니다.
-- PostgreSQL
SELECT * FROM users WHERE id = $1;
-- MySQL
SELECT * FROM users WHERE id = ?;
요약
관례적으로 SQL 키워드는 대문자로 입력되고, 식별자는 따옴표로 묶지 않는 한 소문자로 유지됩니다. PostgreSQL은 식별자에 큰따옴표를 사용하고, $n
플레이스홀더, CTE, 윈도 함수를 지원합니다. MySQL은 백틱과 ?
플레이스홀더를 사용합니다. SQL Server는 대괄호와 @
매개변수를 도입합니다. SQLite는 단순한 구문을 유지하지만, 정확성이 필요합니다. SQL 쿼리를 연습하는 것은 기호와 키워드를 정확히 입력하는 능력을 키우며, PostgreSQL을 중심으로 학습하면 널리 쓰이는 현대적인 데이터베이스에 대한 실무 경험을 얻을 수 있습니다.