DDL (데이터 정의어)

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

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

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