인프라 기술 및 아키텍처

SQL Query 문법

Dev.99_tale 2025. 2. 11. 14:32

SQL(Structured Query Language)은 관계형 데이터베이스에서 데이터를 관리하고 조작하는 데 사용되는 표준 언어이다.

SQL을 사용하면 데이터베이스에 데이터를 삽입, 조회, 수정, 삭제가 가능하며 DDL, DML, DCL로 크게 나뉜다.

(Query문법 참고 용도)

1. SQL 기본 개념

  • 테이블: 데이터를 행(row)과 열(column)로 저장하는 데이터베이스의 기본 단위
  • 컬럼: 테이블 내의 각 열을 의미하며, 특정 데이터 유형(예: INT, VARCHAR, DATE)
  • : 테이블 내의 각 데이터를 의미하며, 하나의 레코드

 

2. SQL 주요 명령어

1. DDL (Data Definition Language) - 데이터 정의 언어

데이터베이스 구조(테이블, 인덱스, 뷰 등)를 정의하는 SQL 문법이야.

명령어 설명
CREATE 데이터베이스 객체(테이블, 인덱스 등) 생성
ALTER 기존 객체 구조 변경(컬럼 추가/삭제 등)
DROP 데이터베이스 객체 삭제
TRUNCATE 테이블의 모든 데이터를 삭제(롤백 불가)

 

-- 테이블 생성
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    age INT
);

-- 컬럼 추가
ALTER TABLE users ADD COLUMN email VARCHAR(100);

-- 테이블 삭제
DROP TABLE users;

 

2. DML (Data Manipulation Language) - 데이터 조작 언어

데이터를 삽입, 수정, 삭제, 조회하는 SQL 문법이야.

명령어 설명
INSERT (JOIN) 데이터를 추가
SELECT (WHERE / ORDER BY / GROUP BY) 데이터를 조회
UPDATE 데이터를 수정
DELETE 데이터를 삭제

 

-- 데이터 삽입
INSERT INTO users (name, age, email) VALUES ('Alice', 25, 'alice@example.com');

-- 데이터 조회
SELECT * FROM users WHERE age > 20;

-- 데이터 수정
UPDATE users SET age = 26 WHERE name = 'Alice';

-- 데이터 삭제
DELETE FROM users WHERE name = 'Alice';


-- AND, OR, BETWEEN, LIKE 조건 활용
SELECT * FROM users WHERE age BETWEEN 20 AND 30;
SELECT * FROM users WHERE name LIKE 'A%';   
SELECT * FROM users WHERE age > 25 OR email IS NULL;

-- 나이순으로 오름차순 정렬
SELECT * FROM users ORDER BY age ASC;

-- 나이순으로 내림차순 정렬
SELECT * FROM users ORDER BY age DESC;

-- 나이순으로 정렬하되, 나이가 같으면 이름순 정렬
SELECT * FROM users ORDER BY age ASC, name ASC;


-- 각 나이대별 평균 나이 조회
SELECT age, AVG(age) FROM users GROUP BY age;

-- 나이별 사용자 수를 내림차순 정렬
SELECT age, COUNT(*) FROM users GROUP BY age ORDER BY COUNT(*) DESC;


-- INNER JOIN: users와 orders 테이블에서 user_id가 같은 데이터 조회
SELECT users.name, orders.product_name, orders.amount
FROM users
INNER JOIN orders ON users.id = orders.user_id;

-- LEFT JOIN: 주문이 없는 사용자도 포함하여 조회
SELECT users.name, orders.product_name, orders.amount
FROM users
LEFT JOIN orders ON users.id = orders.user_id;

 

 

3. DCL (Data Control Language) - 데이터 제어 언어

사용자 권한을 관리하는 SQL 문법이야.

명령어 설명
GRANT 사용자에게 권한 부여
REVOKE 사용자 권한 회수
BEGIN( or START TRANSACTION_ 트랜잭션 시작
COMMIT 변경 내용을 확정(저장)
ROLLBACK 변경 내용 취소

 

-- 특정 사용자에게 SELECT, INSERT 권한 부여
GRANT SELECT, INSERT ON users TO 'username'@'localhost';

-- 특정 사용자의 권한 회수
REVOKE INSERT ON users FROM 'username'@'localhost';


BEGIN;  -- 트랜잭션 시작 또는 START TRANSACTION;
INSERT INTO users (name, age) VALUES ('Bob', 30);
UPDATE users SET age = 31 WHERE name = 'Bob';
COMMIT;  -- 변경 내용 저장

-- 문제 발생! (예: 실수로 잘못된 데이터를 입력함)
ROLLBACK;  -- 변경 취소

 


결론

SQL은 데이터를 조회하고 수정하는 데 사용되는 중요한 언어이다. 기본적인 DDL, DML, DCL(TCL) 명령어를 이해하고 사용하면 데이터베이스 작업을 효율적으로 할 수 있다. JPA와 함께 SQL을 배우는 것은 데이터베이스와 애플리케이션 간의 상호작용을 이해하는 데 큰 도움이 될 것이다.