본문 바로가기

IT & AI/AI 지식

SQL 기본 및 명령어 DCL, DDL, DML, TCL

by 빛나는해커 2024. 11. 26.

안녕하세요! SQL은 관계형 데이터베이스를 다루기 위해 사용되는 언어입니다. 최근 들어 SQLD나 SQLP 자격증을 준비하시는 분들이 많으신 걸로 알고 있는데요.

이번 글에서는 SQL의 기본적인 개념과 중요한 명령어들(DCL, DDL, DML, TCL)에 대해 설명하고자 합니다.
SQL을 처음 접하거나 데이터베이스의 구조를 정의하고, 데이터를 관리하는 데 필요한 기초적인 명령어들에 대해 이해하고 싶은 사람들에게 유용한 내용이 되었으면 좋겠습니다.

SQL(Structured Query Language)은 데이터베이스 관리 시스템과 상호작용하기 위한 언어로, 데이터를 저장, 조회, 수정, 삭제하는 데 사용된다.
관계형 데이터베이스에서 테이블 형태로 데이터를 구조화하여 저장하고, 이러한 데이터를 효과적으로 관리할 수 있도록 SQL을 통해 명령을 수행할 수 있다.

1.  관계형 데이터베이스 개요

 

테이블 생성 주의사항

  • 테이블명과 컬럼명은 반드시 문자로 시작해야 한다.
  • 사용 가능한 문자: A-Z, a-z, 0-9, #, $, _.
  • 다른 테이블명과 중복되지 않도록 주의해야 한다.
  • 각 컬럼에는 데이터 유형이 지정되어야 한다.

2.  SQL 명령어 소개

 

2-1 DCL (Data Control Language)

DCL은 데이터베이스에서 사용자 권한을 관리하는 명령어이다. 여기에는 GRANTREVOKE가 포함된다.

  • GRANT: 권한 부여 명령어.
    • WITH GRANT OPTION: 권한을 부여한 사용자가 그 권한을 다른 사용자에게 부여할 수 있는 옵션. '엄마'가 권한을 회수하면 '자식'의 권한도 회수된다.
    • WITH ADMIN OPTION: 테이블에 대한 모든 권한을 부여하며, '엄마'의 권한 회수와 관계없이 권한이 유지된다.
    • 예시: GRANT SELECT ON 테이블명 TO 유저명;은 특정 테이블에 대한 읽기 권한을 사용자에게 부여하는 명령어이다.
  • ROLE: 여러 권한을 그룹으로 묶어 관리하는 기능으로, 여러 사용자에게 동일한 역할(권한)을 부여할 수 있다.
    • 예시: GRANT 관리자권한 TO lalala;lalala 사용자에게 관리자 역할을 부여하는 것이다.
    • CREATE ROLE 권한이 있어야 새로운 ROLE을 생성할 수 있다.

 

2-2 DDL (Data Definition Language)

DDL은 데이터베이스의 구조를 정의하는 명령어이다. 여기에는 CREATE, ALTER, DROP, RENAME, TRUNCATE 등이 포함된다.

  • CREATE: 데이터베이스상 테이블 구조를 생성한다.
    • 예시: CREATE TABLE 테이블명 (컬럼명 데이터타입 제약조건);
    • 데이터 타입:
      • NUMBER: 숫자형
      • DATE: 날짜형
      • VARCHAR2: 가변 길이 문자열 (예: VARCHAR2(10)은 최대 10글자를 저장)
      • CHAR: 고정 길이 문자열 (예: CHAR(10)은 길이가 10으로 고정됨)
    • 제약조건:
      • DEFAULT: 기본값 지정.
      • NOT NULL: 컬럼에 NULL 값이 허용되지 않음.
      • PRIMARY KEY: 기본키로 지정하여 중복되지 않는 유일한 값을 가짐.
      • FOREIGN KEY: 외래키 지정으로 다른 테이블과의 관계를 나타냄.
  • ALTER: 기존 테이블과 컬럼의 구조를 수정하는 명령어.
    • 테이블명 변경: ALTER TABLE 테이블명 RENAME TO 새로운테이블명;
    • 컬럼 추가: ALTER TABLE 테이블명 ADD (컬럼명 데이터타입 제약조건);
    • 컬럼 삭제: ALTER TABLE 테이블명 DROP COLUMN 컬럼명;
    • 컬럼 속성 변경: ALTER TABLE 테이블명 MODIFY (컬럼명 데이터타입 제약조건);
  • DROP: 테이블 또는 컬럼을 삭제하는 명령어.
    • 테이블 삭제: DROP TABLE 테이블명; (테이블의 모든 데이터와 구조가 삭제됨)
    • 제약조건과 함께 삭제: DROP TABLE 테이블명 CASCADE CONSTRAINT; (해당 테이블을 참조하는 외래키 제약조건도 모두 삭제)
  • TRUNCATE: 테이블의 데이터를 모두 삭제하지만, 테이블 구조는 유지한다. 즉, 테이블의 뼈대는 그대로 남아있다.
    • 예시: TRUNCATE TABLE 테이블명;

 

2-3. DML (Data Manipulation Language)

DML은 정의된 데이터베이스에 레코드를 입력, 수정, 삭제, 조회하기 위한 명령어이다.

  • INSERT: 테이블에 데이터를 삽입한다.
    • 예시: INSERT INTO 테이블명 (컬럼명) VALUES (값);
  • UPDATE: 테이블의 데이터를 수정한다.
    • 예시: UPDATE 테이블명 SET 컬럼명 = 값 WHERE 조건;
  • DELETE: 테이블의 특정 데이터를 삭제한다.
    • 예시: DELETE FROM 테이블명 WHERE 조건; (FROM은 생략 가능)
    • DELETE는 데이터에 대한 로그를 남길 수 있으며, 특정 행만 삭제할 수 있다.
    • 삭제된 데이터를 되돌릴 수 있으며(ROLLBACK 사용), 이는 DROP이나 TRUNCATE와 다르게 데이터 복구가 가능하다.
    • 데이터는 삭제되지만, 저장된 공간의 용량은 줄어들지 않는다.
  • 숫자 및 문자 입력: VARCHAR2CHAR 컬럼에는 숫자와 문자를 모두 입력할 수 있다.
  • 자동 커밋되지 않음: DML 명령어는 자동으로 커밋되지 않으며, 수동으로 COMMIT 명령어를 통해 반영해야 한다. (SQL SERVER에서는 DDL 명령어가 자동 커밋됨)
 

2-4. TCL (Transaction Control Language)

 

TCL은 트랜잭션을 제어하는 명령어로, 데이터베이스에서 데이터의 무결성을 보장하기 위해 사용된다.

트랜잭션 (Transaction): 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위이다. 트랜잭션은 다음과 같은 특징을 가진다:

  • 고립성 (Isolation): 트랜잭션이 실행되는 동안 다른 트랜잭션에 영향을 받아 잘못된 결과를 만들어선 안 된다.
  • 원자성 (Atomicity): 트랜잭션에서 정의된 연산은 모두 성공하거나 전혀 실행되지 않은 상태로 있어야 한다.
  • 지속성 (Durability): 트랜잭션이 성공적으로 완료되면 해당 트랜잭션이 갱신한 데이터는 영구적으로 저장된다.
  • 일관성 (Consistency): 트랜잭션 수행 전후에 데이터베이스의 내용이 일관성을 유지해야 한다.
  • COMMIT: 데이터에 대한 변화를 DB에 반영하기 위한 명령어이다.
  • ROLLBACK: 트랜잭션이 시작되기 이전의 상태로 되돌리기 위한 명령어이다.
    • 예시: ROLLBACK TO SAVEPOINT S1; (여러 개의 S1이 있을 경우, 가장 최근의 S1으로 돌아감)
    • SAVEPOINT가 없을 경우, 가장 최근의 COMMIT 상태로 복원된다.
  • SAVEPOINT: 트랜잭션 내의 특정 지점을 저장하는 명령어로, 복구 시 해당 지점으로 되돌릴 수 있도록 한다.
  • COMMIT과 ROLLBACK의 효과:
    • 데이터의 무결성을 보장한다.
    • 영구적인 변경 전에 데이터 변동 사항을 확인할 수 있다.
    • 논리적으로 연관성 있는 작업을 그룹화하여 처리할 수 있다.

3.  제약조건과 NULL 값

  • NOT NULL 제약조건이 적용되지 않은 컬럼은 NULL 값을 가질 수 있다.
  • NULL은 모르는 값이나 존재하지 않는 값을 의미한다. NULL은 숫자 0이나 공백 문자와 다르며, 실제 값이 없는 상태이다.
  • 예시: NULL IS NULL은 참(TRUE)으로 평가되며, NULL과의 모든 비교 연산은 결과가 NULL로 반환된다.

SQL 기본 및 명령어 소개 이미지

반응형