DDL (데이터 정의어)

DDL을 활용한 데이터베이스 객체 정의 및 관리 방법

DDL(데이터 정의어)은 데이터베이스 객체를 정의하고 관리하는 SQL 명령어입니다. 주요 명령어로는 CREATE(테이블 생성), ALTER(테이블 수정), DROP(테이블 삭제)가 있습니다. 또한, PRIMARY KEY와 FOREIGN KEY 설정, INDEX 생성 및 활용, 스키마 이해를 통해 데이터 구조를 효율적으로 관리할 수 있습니다.

📱 SQLD 자격증 준비하시나요?

SQLD 문제 은행 앱으로 효율적으로 공부하세요!
✅ 10회차 모의고사 제공
✅ 다양한 학습 모드 (빠른문제, 집중학습, 실전모드)
✅ 상세한 통계 및 분석
✅ 완전 무료로 시작 가능

QR 코드로 다운로드

QR 코드를 스캔하여 앱을 다운로드하세요.

앱 다운로드 QR 코드

QR 코드를 스캔하면 자동으로 해당 플랫폼 스토어로 이동합니다.

DDL (데이터 정의어)

CREATE, ALTER, DROP의 사용법

DDL(데이터 정의어)에서 가장 기본적인 명령어인 CREATE, ALTER, DROP은 데이터베이스 객체를 생성, 수정, 삭제하는 데 사용됩니다. 각 명령어의 사용법을 살펴보겠습니다.

1. CREATE

CREATE 명령어는 새로운 데이터베이스 객체를 생성하는 데 사용됩니다. 가장 일반적으로 테이블을 생성할 때 사용됩니다.

예제: 테이블 생성

아래의 예제는 employees라는 테이블을 생성하는 SQL 코드입니다.

CREATE TABLE employees (
    employee_id NUMBER(6) PRIMARY KEY,
    first_name VARCHAR2(20),
    last_name VARCHAR2(25) NOT NULL,
    email VARCHAR2(25) UNIQUE,
    hire_date DATE,
    salary NUMBER(8, 2),
    department_id NUMBER(4),
    CONSTRAINT fk_department FOREIGN KEY (department_id) REFERENCES departments(department_id)
);

위의 코드에서 employee_id는 기본 키로 설정되며, department_id는 외래 키로 설정되어 departments 테이블과 연결됩니다.

2. ALTER

ALTER 명령어는 기존의 데이터베이스 객체를 수정하는 데 사용됩니다. 테이블에 열을 추가하거나 삭제하거나, 데이터 타입을 변경할 수 있습니다.

예제: 테이블 수정

아래의 예제는 employees 테이블에 phone_number라는 새로운 열을 추가하는 SQL 코드입니다.

ALTER TABLE employees
ADD phone_number VARCHAR2(15);

또한, 아래의 예제는 salary 열의 데이터 타입을 변경하는 SQL 코드입니다.

ALTER TABLE employees
MODIFY salary NUMBER(10, 2);

3. DROP

DROP 명령어는 데이터베이스 객체를 삭제하는 데 사용됩니다. 이 명령어를 사용하면 테이블, 인덱스, 뷰 등을 삭제할 수 있으며, 삭제된 데이터는 복구할 수 없습니다.

예제: 테이블 삭제

아래의 예제는 employees 테이블을 삭제하는 SQL 코드입니다.

DROP TABLE employees;

이 명령어를 실행하면 employees 테이블과 그 안의 모든 데이터가 삭제됩니다. 따라서 사용 시 주의가 필요합니다.

이렇게 CREATE, ALTER, DROP 명령어를 통해 데이터베이스 객체를 생성하고 수정하며 삭제할 수 있습니다. 각 명령어의 사용법을 잘 이해하고 활용하면 데이터베이스 관리에 큰 도움이 됩니다.

테이블 생성 및 수정

테이블은 데이터베이스에서 데이터를 저장하는 기본 구조입니다. DDL의 CREATE 명령어를 사용하여 테이블을 생성하고, ALTER 명령어를 사용하여 테이블을 수정할 수 있습니다. 이 과정에서 데이터 타입과 제약 조건을 설정하는 방법도 함께 살펴보겠습니다.

1. 테이블 생성

테이블을 생성할 때는 각 열의 이름, 데이터 타입, 그리고 필요한 제약 조건을 정의해야 합니다. 데이터 타입은 저장할 데이터의 종류를 결정하며, 제약 조건은 데이터의 무결성을 보장합니다.

예제: 테이블 생성

아래의 예제는 departments라는 테이블을 생성하는 SQL 코드입니다.

CREATE TABLE departments (
    department_id NUMBER(4) PRIMARY KEY,
    department_name VARCHAR2(30) NOT NULL,
    location_id NUMBER(4)
);
  • department_id: 부서 ID로 기본 키로 설정되어 있습니다.
  • department_name: 부서 이름으로 NULL 값을 허용하지 않습니다.
  • location_id: 위치 ID로 선택적입니다.

2. 테이블 수정

테이블을 수정할 때는 ALTER 명령어를 사용하여 열을 추가, 삭제하거나 데이터 타입을 변경할 수 있습니다.

2.1 열 추가

기존 테이블에 새로운 열을 추가할 수 있습니다. 이때는 ADD 키워드를 사용합니다.

예제: 열 추가

아래의 예제는 departments 테이블에 manager_id라는 새로운 열을 추가하는 SQL 코드입니다.

ALTER TABLE departments
ADD manager_id NUMBER(6);

2.2 열 삭제

기존 테이블에서 열을 삭제할 수 있습니다. 이때는 DROP 키워드를 사용합니다.

예제: 열 삭제

아래의 예제는 departments 테이블에서 location_id 열을 삭제하는 SQL 코드입니다.

ALTER TABLE departments
DROP COLUMN location_id;

2.3 데이터 타입 변경

기존 열의 데이터 타입을 변경할 수 있습니다. 이때는 MODIFY 키워드를 사용합니다.

예제: 데이터 타입 변경

아래의 예제는 department_name 열의 데이터 타입을 변경하는 SQL 코드입니다.

ALTER TABLE departments
MODIFY department_name VARCHAR2(50);

이렇게 테이블을 생성하고 수정하는 과정에서 데이터 타입과 제약 조건을 적절히 설정하면, 데이터베이스의 구조를 효율적으로 관리할 수 있습니다. 테이블 생성 및 수정은 데이터베이스 설계의 중요한 부분이므로, 이러한 명령어를 잘 이해하고 활용하는 것이 중요합니다.

PRIMARY KEY와 FOREIGN KEY 설정

데이터베이스에서 데이터의 무결성을 보장하기 위해 PRIMARY KEY와 FOREIGN KEY를 설정하는 것이 중요합니다. 이 두 가지 제약 조건은 테이블 간의 관계를 정의하고 데이터의 일관성을 유지하는 데 도움을 줍니다.

1. PRIMARY KEY

PRIMARY KEY는 테이블 내에서 각 행을 고유하게 식별하는 열(또는 열의 조합)입니다. 기본 키는 NULL 값을 가질 수 없으며, 중복된 값을 허용하지 않습니다. 일반적으로 ID와 같은 고유한 값을 사용하여 설정합니다.

예제: PRIMARY KEY 설정

아래의 예제는 employees 테이블을 생성할 때 employee_id를 PRIMARY KEY로 설정하는 SQL 코드입니다.

CREATE TABLE employees (
    employee_id NUMBER(6) PRIMARY KEY,
    first_name VARCHAR2(20),
    last_name VARCHAR2(25) NOT NULL,
    hire_date DATE
);

위의 코드에서 employee_id는 각 직원의 고유한 식별자로 사용되며, 중복되지 않고 NULL 값을 가질 수 없습니다.

2. FOREIGN KEY

FOREIGN KEY는 다른 테이블의 PRIMARY KEY를 참조하는 열입니다. 이를 통해 두 테이블 간의 관계를 설정하고 데이터의 무결성을 유지할 수 있습니다. FOREIGN KEY는 NULL 값을 가질 수 있으며, 참조하는 테이블에 존재하는 값만 허용됩니다.

예제: FOREIGN KEY 설정

아래의 예제는 employees 테이블에서 department_id를 FOREIGN KEY로 설정하는 SQL 코드입니다. 이 열은 departments 테이블의 department_id를 참조합니다.

CREATE TABLE departments (
    department_id NUMBER(4) PRIMARY KEY,
    department_name VARCHAR2(30) NOT NULL
);

CREATE TABLE employees (
    employee_id NUMBER(6) PRIMARY KEY,
    first_name VARCHAR2(20),
    last_name VARCHAR2(25) NOT NULL,
    hire_date DATE,
    department_id NUMBER(4),
    CONSTRAINT fk_department FOREIGN KEY (department_id) REFERENCES departments(department_id)
);

위의 코드에서 department_iddepartments 테이블의 department_id를 참조하며, 이를 통해 각 직원이 속한 부서를 명확히 할 수 있습니다. 만약 departments 테이블에 존재하지 않는 department_idemployees 테이블에 추가하려고 하면 오류가 발생합니다.

이렇게 PRIMARY KEY와 FOREIGN KEY를 설정함으로써 데이터베이스의 무결성을 유지하고, 테이블 간의 관계를 명확히 할 수 있습니다. 이러한 제약 조건을 적절히 활용하면 데이터베이스 설계의 품질을 높일 수 있습니다.

INDEX 생성 및 사용

INDEX는 데이터베이스에서 검색 성능을 향상시키기 위해 사용되는 구조입니다. 인덱스를 사용하면 특정 열의 데이터를 더 빠르게 조회할 수 있으며, 대량의 데이터에서 원하는 정보를 효율적으로 찾을 수 있습니다. 그러나 인덱스를 생성하면 데이터 삽입, 수정, 삭제 시 성능이 저하될 수 있으므로 주의가 필요합니다.

1. INDEX의 개념

인덱스는 책의 색인과 유사하게 작동합니다. 특정 열에 대한 인덱스를 생성하면, 해당 열의 값을 기준으로 데이터의 위치를 빠르게 찾을 수 있습니다. 일반적으로 자주 검색되는 열에 인덱스를 생성하는 것이 좋습니다.

2. INDEX 생성

INDEX를 생성할 때는 CREATE INDEX 명령어를 사용합니다. 인덱스를 생성할 열과 인덱스의 이름을 지정해야 합니다.

예제: INDEX 생성

아래의 예제는 employees 테이블의 last_name 열에 인덱스를 생성하는 SQL 코드입니다.

CREATE INDEX idx_last_name ON employees(last_name);

위의 코드에서 idx_last_name이라는 이름의 인덱스가 생성되며, last_name 열의 데이터를 기반으로 인덱스가 만들어집니다. 이 인덱스를 통해 last_name을 기준으로 검색할 때 성능이 향상됩니다.

3. INDEX 사용

인덱스를 사용하면 SELECT 문에서 검색 속도를 높일 수 있습니다. 인덱스가 있는 열을 WHERE 절에 사용하면, 데이터베이스는 인덱스를 참조하여 더 빠르게 결과를 반환합니다.

예제: INDEX 사용

아래의 예제는 employees 테이블에서 last_name이 'SMITH'인 직원의 정보를 조회하는 SQL 코드입니다.

SELECT * FROM employees
WHERE last_name = 'SMITH';

위의 쿼리는 last_name 열에 인덱스가 설정되어 있기 때문에, 데이터베이스는 인덱스를 활용하여 빠르게 검색할 수 있습니다.

4. INDEX 삭제

더 이상 필요하지 않은 인덱스는 DROP INDEX 명령어를 사용하여 삭제할 수 있습니다.

예제: INDEX 삭제

아래의 예제는 idx_last_name 인덱스를 삭제하는 SQL 코드입니다.

DROP INDEX idx_last_name;

인덱스를 삭제하면 해당 인덱스를 통해 검색 속도가 향상되지 않지만, 데이터 삽입 및 수정 성능은 개선될 수 있습니다.

이렇게 INDEX를 생성하고 사용하는 방법을 이해하면, 데이터베이스의 검색 성능을 효과적으로 향상시킬 수 있습니다. 인덱스는 데이터베이스 설계에서 중요한 요소이므로, 적절한 사용이 필요합니다.

스키마 이해와 활용

스키마(Schema)는 데이터베이스의 구조를 정의하는 개념으로, 테이블, 뷰, 인덱스, 저장 프로시저 등 데이터베이스 객체의 집합을 나타냅니다. 스키마는 데이터베이스 내에서 데이터가 어떻게 구성되고 연결되는지를 이해하는 데 중요한 역할을 합니다.

1. 스키마의 개념

스키마는 데이터베이스의 설계도를 제공하며, 데이터베이스 객체 간의 관계를 정의합니다. 각 스키마는 특정 사용자나 애플리케이션에 속하며, 동일한 데이터베이스 내에 여러 스키마를 가질 수 있습니다. 스키마를 통해 데이터의 구조와 제약 조건을 명확히 할 수 있습니다.

예제: 스키마 구조

예를 들어, HR 데이터베이스 스키마는 다음과 같은 테이블로 구성될 수 있습니다.

  • employees: 직원 정보
  • departments: 부서 정보
  • jobs: 직무 정보
  • locations: 위치 정보

이러한 테이블은 서로 관계를 맺고 있으며, 스키마는 이 관계를 정의합니다.

2. 스키마 생성

스키마를 생성할 때는 CREATE SCHEMA 명령어를 사용합니다. 스키마 내에 포함될 객체를 정의할 수 있습니다.

예제: 스키마 생성

아래의 예제는 HR이라는 스키마를 생성하는 SQL 코드입니다.

CREATE SCHEMA HR
AUTHORIZATION hr_user;

위의 코드에서 hr_user는 스키마를 소유하는 사용자입니다. 이 스키마 안에는 HR 관련 테이블이 포함될 수 있습니다.

3. 스키마 내 객체 활용

스키마 내에 생성된 객체는 SQL 쿼리를 통해 활용할 수 있습니다. 스키마를 명시적으로 지정하여 객체에 접근할 수 있습니다.

예제: 스키마 내 테이블 조회

아래의 예제는 HR 스키마 내의 employees 테이블에서 모든 데이터를 조회하는 SQL 코드입니다.

SELECT * FROM HR.employees;

이 쿼리는 HR 스키마에 있는 employees 테이블에서 모든 데이터를 가져옵니다.

4. 스키마의 장점

스키마를 사용하면 데이터베이스 객체를 조직적으로 관리할 수 있습니다. 여러 스키마를 통해 서로 다른 애플리케이션이나 부서에 대한 데이터베이스 구조를 분리할 수 있으며, 데이터의 무결성을 유지하고 보안을 강화할 수 있습니다.

이렇게 스키마를 이해하고 활용하면 데이터베이스의 구조를 명확히 하고, 데이터 관리의 효율성을 높일 수 있습니다. 스키마는 데이터베이스 설계와 운영의 중요한 요소이므로, 이를 잘 활용하는 것이 중요합니다.

Similar Posts