데이터베이스

SQL 명령어의 종류

funfunweb 2025. 3. 28. 20:00

SQL 명령어는 데이터베이스에서 데이터를 정의, 조작, 제어하는 데 사용되는 여러 종류의 명령어로 구성되어 있습니다. 이를 크게 데이터 정의 언어 (DDL), 데이터 조작 언어 (DML), 데이터 제어 언어 (DCL), **트랜잭션 제어 언어 (TCL)**로 구분할 수 있습니다. 각 명령어의 주요 예시를 아래에 소개합니다.

 

 

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

DDL 명령어는 데이터베이스의 구조를 정의하거나 변경하는 데 사용됩니다.

  • CREATE: 데이터베이스, 테이블, 인덱스 등을 생성합니다.
  • CREATE DATABASE mydb; -- 데이터베이스 생성 CREATE TABLE 학생 ( 학생ID INT PRIMARY KEY, 이름 VARCHAR(100), 나이 INT ); -- 테이블 생성
  • ALTER: 이미 존재하는 데이터베이스 또는 테이블의 구조를 변경합니다.
  • ALTER TABLE 학생 ADD COLUMN 성별 VARCHAR(10); -- 테이블에 컬럼 추가 ALTER TABLE 학생 MODIFY COLUMN 나이 INT NOT NULL; -- 컬럼 수정
  • DROP: 데이터베이스나 테이블을 삭제합니다.
  • DROP TABLE 학생; -- 테이블 삭제 DROP DATABASE mydb; -- 데이터베이스 삭제
  • TRUNCATE: 테이블의 모든 데이터를 삭제하지만 테이블 구조는 유지됩니다.
  • TRUNCATE TABLE 학생; -- 테이블의 모든 데이터 삭제

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

DML 명령어는 데이터베이스 내의 데이터를 조회, 삽입, 수정, 삭제하는 데 사용됩니다.

  • SELECT: 데이터베이스에서 데이터를 조회합니다.
  • SELECT * FROM 학생; -- 모든 학생 조회 SELECT 이름, 나이 FROM 학생 WHERE 나이 > 18; -- 특정 조건으로 데이터 조회
  • INSERT: 데이터베이스에 새로운 데이터를 삽입합니다.
  • INSERT INTO 학생 (학생ID, 이름, 나이) VALUES (1, '홍길동', 20); -- 데이터 삽입
  • UPDATE: 기존 데이터를 수정합니다.
  • UPDATE 학생 SET 나이 = 21 WHERE 학생ID = 1; -- 특정 학생의 나이 수정
  • DELETE: 데이터를 삭제합니다.
  • DELETE FROM 학생 WHERE 학생ID = 1; -- 특정 학생 삭제

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

DCL 명령어는 데이터베이스 객체에 대한 권한을 관리하는 데 사용됩니다.

  • GRANT: 사용자에게 특정 권한을 부여합니다.
  • GRANT SELECT, INSERT ON 학생 TO user_name; -- 특정 사용자에게 권한 부여
  • REVOKE: 사용자에게 부여된 권한을 철회합니다.
  • REVOKE SELECT ON 학생 FROM user_name; -- 특정 사용자에게 권한 철회

4. 트랜잭션 제어 언어 (TCL, Transaction Control Language)

TCL 명령어는 데이터베이스 트랜잭션을 관리하는 데 사용됩니다. 트랜잭션은 여러 개의 데이터베이스 작업을 하나의 단위로 처리하는 작업입니다.

  • COMMIT: 트랜잭션에서 수행된 작업을 영구적으로 확정합니다.
  • COMMIT; -- 트랜잭션 확정
  • ROLLBACK: 트랜잭션에서 수행된 작업을 취소합니다.
  • ROLLBACK; -- 트랜잭션 취소
  • SAVEPOINT: 트랜잭션 내에서 특정 지점까지 작업을 되돌릴 수 있게 설정합니다.
  • SAVEPOINT my_savepoint; -- 트랜잭션 내에서 저장점 설정
  • SET TRANSACTION: 트랜잭션의 속성을 설정합니다.
  • SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; -- 트랜잭션 격리 수준 설정

기타 중요한 SQL 명령어

  • JOIN: 여러 테이블에서 데이터를 결합할 때 사용합니다.
  • SELECT 학생.이름, 수업.수업명 FROM 학생 JOIN 수업 ON 학생.학생ID = 수업.학생ID; -- 두 테이블 조인
  • GROUP BY: 데이터를 그룹화하여 집계함수를 적용합니다.
  • SELECT 나이, COUNT(*) FROM 학생 GROUP BY 나이; -- 나이별 학생 수
  • ORDER BY: 데이터를 정렬합니다.
  • SELECT * FROM 학생 ORDER BY 나이 DESC; -- 나이를 기준으로 내림차순 정렬
  • LIMIT: 조회할 데이터의 개수를 제한합니다.
  • SELECT * FROM 학생 LIMIT 5; -- 상위 5개 데이터만 조회

SQL은 관계형 데이터베이스에서 데이터를 처리하는 데 필수적인 언어이며, 각 명령어를 적절히 사용하여 원하는 데이터를 효율적으로 관리하고 처리할 수 있습니다.

 

SQL을 사용하는 일반적인 방식은 데이터베이스를 설계하고, 데이터를 삽입, 조회, 수정, 삭제하는 등 여러 작업을 수행하는 것입니다. 이러한 작업은 대개 **데이터베이스 관리 시스템(DBMS)**을 통해 이루어집니다. 일반적인 SQL 사용 흐름을 단계별로 설명하면 다음과 같습니다:

1. 데이터베이스 연결

SQL을 사용하려면 먼저 데이터베이스에 연결해야 합니다. DBMS에 로그인하고, 사용할 데이터베이스를 선택하는 과정입니다. 예를 들어, MySQL에서는 다음과 같은 명령어로 데이터베이스에 접속할 수 있습니다.

mysql -u 사용자명 -p

그런 다음, 사용할 데이터베이스를 선택합니다:

USE 데이터베이스명;

2. 테이블 생성

데이터를 저장하기 위해 테이블을 생성해야 합니다. 테이블은 데이터베이스 내에서 데이터를 저장하는 구조입니다. 테이블을 생성하려면 CREATE TABLE 명령어를 사용합니다.

CREATE TABLE 직원 (
    직원ID INT AUTO_INCREMENT PRIMARY KEY,
    이름 VARCHAR(100),
    부서 VARCHAR(50),
    입사일 DATE
);

3. 데이터 삽입

테이블이 생성된 후, 데이터를 삽입할 수 있습니다. INSERT INTO 명령어를 사용하여 데이터를 추가합니다.

INSERT INTO 직원 (이름, 부서, 입사일) 
VALUES ('홍길동', '인사부', '2025-03-28');

이 명령어는 직원 테이블에 새로운 데이터를 추가합니다. 직원ID는 자동으로 증가하는 AUTO_INCREMENT 속성을 가지고 있기 때문에, 명시적으로 값을 입력할 필요는 없습니다.

4. 데이터 조회

삽입된 데이터를 조회하려면 SELECT 명령어를 사용합니다. SELECT는 가장 많이 사용되는 SQL 명령어 중 하나로, 데이터베이스에서 데이터를 검색하는 데 사용됩니다.

  • 모든 데이터 조회:
  • SELECT * FROM 직원;
  • 특정 조건으로 조회:
  • SELECT 이름, 부서 FROM 직원 WHERE 부서 = '인사부';
  • 정렬해서 조회:
  • SELECT * FROM 직원 ORDER BY 입사일 DESC;

5. 데이터 수정

이미 삽입된 데이터를 수정하려면 UPDATE 명령어를 사용합니다. 특정 조건에 맞는 데이터를 수정할 수 있습니다.

UPDATE 직원 SET 부서 = '경영부' WHERE 이름 = '홍길동';

이 명령어는 이름이 '홍길동'인 직원의 부서를 '경영부'로 변경합니다.

6. 데이터 삭제

데이터를 삭제하려면 DELETE 명령어를 사용합니다. 주의해야 할 점은, 조건을 정확하게 지정하지 않으면 모든 데이터가 삭제될 수 있다는 점입니다.

DELETE FROM 직원 WHERE 이름 = '홍길동';

이 명령어는 '홍길동'이라는 이름을 가진 직원을 삭제합니다.

7. 데이터베이스 스키마 변경

데이터베이스와 테이블은 시간이 지나면서 변할 수 있습니다. 새로운 컬럼을 추가하거나 기존 컬럼을 수정하는 등의 작업을 하려면 ALTER TABLE 명령어를 사용합니다.

  • 컬럼 추가:
  • ALTER TABLE 직원 ADD COLUMN 급여 DECIMAL(10, 2);
  • 컬럼 수정:
  • ALTER TABLE 직원 MODIFY COLUMN 부서 VARCHAR(100);
  • 컬럼 삭제:
  • ALTER TABLE 직원 DROP COLUMN 급여;

8. 인덱스 생성

데이터가 많아질 경우, 검색 속도를 개선하기 위해 인덱스를 생성할 수 있습니다. CREATE INDEX 명령어를 사용합니다.

CREATE INDEX idx_부서 ON 직원(부서);

이 명령어는 직원 테이블의 부서 컬럼에 인덱스를 추가하여, 해당 컬럼을 기준으로 검색을 빠르게 할 수 있도록 합니다.

9. 조인 (JOIN) 사용

여러 테이블에서 관련 데이터를 결합할 때 조인을 사용합니다. INNER JOIN, LEFT JOIN, RIGHT JOIN 등이 있습니다. 예를 들어, 두 테이블(직원, 부서)이 있을 때, 각 직원의 부서를 조회하려면 JOIN을 사용합니다.

SELECT 직원.이름, 부서.부서명 
FROM 직원
INNER JOIN 부서 ON 직원.부서ID = 부서.부서ID;

이 예제는 직원 테이블과 부서 테이블을 부서ID를 기준으로 결합하여, 직원의 이름과 그가 속한 부서명을 조회합니다.

10. 그룹화 및 집계 함수

GROUP BY와 집계 함수(COUNT, SUM, AVG, MAX, MIN)를 사용하여 데이터를 그룹화하고 집계할 수 있습니다.

SELECT 부서, COUNT(*) AS 직원수
FROM 직원
GROUP BY 부서;

이 명령어는 각 부서별로 직원 수를 계산합니다.

11. 트랜잭션 처리

데이터의 일관성을 유지하려면 트랜잭션을 사용하여 여러 작업을 하나의 단위로 처리할 수 있습니다. 트랜잭션은 COMMIT, ROLLBACK으로 처리합니다.

BEGIN;
UPDATE 직원 SET 부서 = '기술부' WHERE 이름 = '홍길동';
COMMIT; -- 작업 확정

또는, 문제가 발생하면 변경된 내용을 취소할 수 있습니다:

ROLLBACK; -- 트랜잭션 취소

SQL 사용 시 일반적인 흐름:

  1. 데이터베이스 생성 및 연결: 데이터베이스를 생성하고 연결합니다.
  2. 테이블 설계 및 생성: 테이블을 설계하고 생성합니다.
  3. 데이터 삽입: 데이터를 삽입하여 테이블을 채웁니다.
  4. 데이터 조회 및 분석: SELECT 문을 사용하여 데이터를 조회하고 분석합니다.
  5. 데이터 수정 및 삭제: UPDATE, DELETE 명령어로 데이터를 수정하거나 삭제합니다.
  6. 데이터베이스 구조 변경: 필요한 경우 테이블 구조를 변경합니다.
  7. 인덱스 및 성능 최적화: 검색 성능을 향상시키기 위해 인덱스를 추가합니다.

SQL을 활용한 작업은 이러한 기본적인 흐름에 따라 이루어지며, 데이터베이스의 설계 및 관리, 데이터의 입력, 업데이트, 삭제, 조회 등의 작업을 체계적으로 진행할 수 있습니다.

'데이터베이스' 카테고리의 다른 글

SQL 이란?  (0) 2025.03.28
SQL Server 관리 스튜디오로 새 테이블 만들기  (0) 2025.03.28
MS SQL Server - 시퀀스 서버 관리 스튜디오 사용하기  (0) 2025.03.28
MS-SQL 설치  (0) 2025.03.28
프라이머리 키란?  (0) 2025.03.28