Now Loading ...
-
💉[SQL] DML이란?
💉[SQL] DML이란?
DML(Data Manipulation Language) 은 데이터베이스에서 데이터를 조작하는데 사용되는 SQL의 하위 언어입니다.
DML 명령어는 데이터베이스 테이블에 데이터를 삽입, 수정, 삭제, 조회하는 작업을 수행합니다.
DML은 주로 테이블 내의 데이터를 다루는 데 사용되며, 데이터베이스의 구조(예: 테이블 생성 또는 삭제)를 변경하지 않습니다.
1️⃣ DML의 주요 명령어
1. SELECT
데이터베이스에서 데이터를 조회하는 명령어입니다.
테이블에 저장된 데이터를 선택적으로 가져오거나 특정 조건에 맞는 데이터를 검색할 수 있습니다.
예시: 데이터 조회
SELECT * FROM User WHERE age > 25;
Users 테이블에서 age가 25보다 큰 모든 행을 조회합니다.
2. INSERT
테이블에 데이터를 삽입하는 명령어입니다.
테이블의 각 열(Column)에 맞는 데이터를 새 행(Row)으로 추가합니다.
예시: 데이터 삽입
INSERT INTO Users (name, email, age) VALUES ('Kobe', 'kobe@example.com', 30);
Users 테이블에 새로운 사용자의 데이터를 삽입합니다.
3. UPDATE
테이블의 기존 데이터를 수정하는 명령어입니다.
특정 조건을 만족하는 데이터를 찾아 수정할 수 있습니다.
예시: 데이터 수정
UPDATE Users SET age = 31 WHRER name = 'Kobe';
Users 테이블에서 이름이 'Kobe'인 사용자의 나이를 31로 수정합니다.
4. DELETE
테이블에서 데이터를 삭제하는 명령어입니다.
특정 조건을 만족하는 데이터를 삭제하거나, 모든 데이터를 삭제할 수 있습니다.
예시: 데이터 삭제
DELETE FROM Users WHERE age < 18;
Users 테이블에서 나이가 18 미만인 모든 행(Row)을 삭제합니다.
2️⃣ DML의 특징.
1. 데이터 조작.
DML은 데이터베이스 내에서 데이터를 직접적으로 조작하는 데 사용됩니다.
데이터를 추가하거나 삭제하고, 기존 데이터를 조회하거나 수정하는 등의 작업을 수행합니다.
2. 트랜잭션과 연관.
DML 명령어는 트랜잭션 관리와 밀접한 관련이 있습니다.
DML 명령어로 데이터를 변경하는 작업은 트랜잭션 내에서 수행될 수 있으며, 트랜잭션의 커밋(COMMIT) 또는 롤백(ROLLBACK) 을 통해 데이터의 일관성과 무결성을 보장할 수 있습니다.
3. 트랜잭션 필요.
DML 작업은 데이터베이스에서 실제 데이터를 변경하는 작업이므로 트랜잭션이 필요합니다.
데이터 변경 작업이 완료되면 COMMIT을 통해 저장하고, 오류가 발생하면 ROLLBACK을 통해 변경 작업을 취소할 수 있습니다.
4. 데이터 구조 변경 없음
DML은 데이터를 다루는 데 초점을 맞추며, 테이블이나 데이터베이스 구조 자체를 변경하지는 않습니다.
구조 변경은 DDL(Data Definition Language)의 역할입니다.
3️⃣ DML 사용 예시
1. 데이터 조회(SELECT)
SELECT name, email FROM Users WHERE age > 25;
Users 테이블에서 나이가 25 이상인 사용자들의 이름과 이메일을 조회합니다.
2. 데이터 삽입(INSERT)
INSERT INTO Users (name, email, age) VALUES ('Kobe', 'kobe@example.com', 28);
Users 테이블에 새로운 사용자인 Kobe를 추가합니다.
3. 데이터 수정(UPDATE)
UPDATE Users SET email = 'dev.kobe@example.com' WHERE name = 'Kobe';
Users 테이블에서 이름이 Kobe인 사용자의 이메일을 수정합니다.
4. 데이터 삭제(DELETE)
DELETE FROM Users WHERE id = 3;
Users 테이블에서 id가 3인 사용자의 데이터를 삭제합니다.
4️⃣ DML과 DDL의 차이점.
DML(Data Manipulation Language)
DML은 데이터 자체를 조작하는 데 사용됩니다.
SELECT, INSERT, UPDATE, DELETE와 같은 명령어를 통해 데이터를 삽입, 조회, 수정, 삭제할 수 있습니다.
트랜잭션 처리(커밋, 롤백)가 필요하며, 데이터베이스 내에서 데이터 조작이 중심입니다.
DDL(Data Definition Language)
DDL은 데이터베이스의 구조를 정의하는 데 사용됩니다.
CREATE, ALTER, DROP 등의 명령어를 통해 테이블과 같은 데이터베이스 객체를 생성, 수정, 삭제할 수 있습니다.
DDL은 일반적으로 트랜잭션 관리 없이 자동 커밋되며, 데이터베이스의 구조 관리가 중심입니다.
5️⃣ 요약.
DML(Data Manipulation Language)은 데이터베이스에서 데이터를 삽입, 조회, 수정, 삭제하는 작업을 수행하는 SQL 언어입니다.
DML은 데이터 자체를 직접적으로 조작하는 데 사용되며, 트랜잭션과 연관이 깊어 작업의 무결성을 보장하기 위해 COMMIT이나 ROLLBACK을 통해 작업의 완료 여부를 확인할 수 있습니다.
DML은 데이터를 효율적으로 다루고 관리하는 데 필수적인 역할을 하며, 실제 데이터 조작에 집중하는 언어입니다.
-
💉[SQL] DDL이란?
💉[SQL] DDL이란?
DDL(Data Definition Language) 은 데이터베이스에서 데이터 구조를 정의하고 관리하는 데 사용되는 SQL의 하위 언어 입니다.
DDL 명령어는 데이터베이스의 테이블, 인덳, 스키마, 뷰 등과 같은 객체들을 생성, 수정, 삭제하는 작업을 수행합니다.
데이터베이스 내에서 데이터를 저장할 구조를 설정하고, 그 구조를 변경하거나 삭제하는 역할을 합니다.
1️⃣ DDL의 주요 명령어.
1. CREATE
데이터베이스 객체(테이블, 인덱스, 스키마, 뷰 등) 를 생성합니다.
예를 들어, 테이블을 생성할 때 CREATE TABLE 명령어를 사용하여 테이블의 구조를 정의합니다.
예시: 테이블 생성.
CREATE TABLE Users (
id INT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);
2. ALTER
기존에 생성된 데이터베이스 객체의 구조를 수정하는데 사용됩니다.
테이블에 새로운 열을 추가하거나, 열의 데이터 타입을 변경하는 등의 작업을 수행할 수 있습니다.
예시: 테이블 열 추가
ALTER TABLE Users
ADD COLUMN age INT;
3. DROP
데이터베이스 객체를 삭제하는 데 사용됩니다.
테이블, 인덱스, 뷰 등의 객체를 삭제할 때 사용합니다.
DROP 명령어는 매우 강력하며, 한번 객체가 삭제되면 그 안의 모든 데이터도 함께 사라지기 때문에 주의가 필요합니다.
예시: 테이블 삭제
DROP TABLE Users;
4. TRUNCATE
테이블의 모든 데이터를 삭제 하지만, 테이블의 구조는 유지합니다.
데이터만 삭제되고, 테이블 자체는 남아 있으므로 테이블을 다시 사용할 수 있습니다.
DELETE 명령어와는 달리, 개별 트랜잭션을 기록하지 않고 데이터를 일괄적으로 삭제하므로 더 빠르게 수행됩니다.
예시: 테이블 데이터 모두 삭제.
TRUNCATE TABLE Users;
2️⃣ DDL의 주요 특징.
데이터 구조 정의.
DDL 명령어는 데이터를 저장할 테이블과 같은 구조를 정의하는 역할을 합니다.
테이블 생성, 수정, 삭제 같은 작업이 여기에 포함됩니다.
자동 커밋.
DDL 명령어는 실행 즉시 자동으로 커밋(Commit) 됩니다.
즉, CREATE, ALTER, DROP 같은 명령어는 트랜잭션으로 묶이지 않고, 실행과 동시에 즉시 데이터베이스에 반영됩니다.
비교적 단순한 작업.
DDL 명령어는 데이터를 직접 조작하지 않고, 데이터를 저장할 구조를 다루는 데 초점을 맞춥니다.
3️⃣ DDL과 DML의 차이점.
DDL(Data Definition Language)
데이터베이스의 구조를 정의하는 언어입니다.
주로 테이블 인덱스 등의 데이터 구조를 생성, 변경, 삭제하는 데 사용됩니다.
DML(Data Manipulation Language)
데이터베이스 내의 데이터를 조작하는 언어입니다.
데이터를 삽입(INSERT), 조회(SELECT), 수정(UPDATE), 삭제(DELETE)하는 작업이 DML에 해당합니다.
4️⃣ DDL 사용 예시.
-- 테이블 생성
CREATE TABLE Employees (
emp_id INT PRIMARY KEY,
emp_name VARCHAR(100),
emp_salary DECIMAL(10, 2)
);
-- 테이블 수정 (새로운 열 추가)
ALTER TABLE Employees
ADD COLUMN emp_department VARCHAR(50);
-- 테이블 데이터 일괄 삭제 (테이블 구조는 유지)
TRUNCATE TABLE Employees;
-- 테이블 삭제
DROP TABLE Employees;
5️⃣ 요약.
DDL(Data Definition Language)은 데이터베이스에서 테이블, 인덱스, 스키마와 같은 데이터 구조를 생성하고 관리하는 데 사용되는 SQL 언어입니다.
DDL은 데이터의 저장 구조를 정의하며, 주요 명령어로는 CREATE, ALTER, DROP, TRUNCATE가 있습니다.
DDL 명령어는 데이터베이스의 구조를 변경할 때 사용되며, 데이터 자체를 다루지 않고, 테이블과 같은 데이터 저장소의 형식을 정의하는 데 중점을 둡니다.
-
💾[Database] SQL 쿼리.
💾[Database] SQL 쿼리 - 스키마 삭제, 테이블 생성.조회.수정
1️⃣ 스키마 삭제.
MySQL에서 스키마(schema) 또는 데이터베이스(database) 를 삭제하는 방법은 매우 간단합니다.
스키마와 데이터베이스는 사실상 같은 개념으로 취급되며, MySQL에서는 주로 “데이터베이스” 라는 용어를 사용합니다.
스키마를 삭제하기 위해서는 DROP DATABASE 명령을 사용합니다.
이 명령어는 지정한 데이터베이스를 완전히 삭제하며, 해당 데이터베이스 안의 모든 테이블과 데이터도 함께 삭제됩니다.
스키마(데이터베이스) 삭제하는 명령어
DROP DATABASE database_name;
여기서 database_name은 삭제하려는 데이터베이스(스키마)의 이름입니다.
예시.
DROP DATABASE mydatabase;
위 명령어를 실행하면 mydatabase 라는 이름의 데이터베이스가 삭제됩니다.
삭제 전에 주의할 점.
1. 백업
데이터베이스가 삭제되면 그 안에 있는 모든 데이터가 영구적으로 사라집니다.
필요한 데이터가 있다면 먼저 백업을 하는 것이 좋습니다.
2. 존재 여부 확인
데이터베이스가 존재하지 않을 경우 에러가 발생할 수 있습니다.
이를 방지하기 위해 데이터베이스가 존재하는 경우에만 삭제하는 명령어를 사용할 수 있습니다.
DROP DATABASE IF EXISTS mydatabase;
이 명령어는 mydatabase가 존재할 경우에만 삭제하고, 존재하지 않을 경우에는 아무 작업도 하지 않으며 에러 메시지를 출력하지 않습니다.
MySQL에서 데이터베이스 확인 및 삭제 과정.
1. 현재 데이터베이스 목록 확인
데이터베이스 목록을 확인하려면 아래 명령어를 사용합니다.
SHOW DATABASES;
2. 데이터베이스 삭제
데이터 베이스 이름을 확인한 후, DROP DATABASE 명령을 사용하여 삭제합니다.
3. 삭제 확인
다시 데이터베이스 목록을 확인하여 삭제된 데이터베이스가 목록에 없는지 확인합니다.
SHOW DATABASES;
위 과정으로 MySQL에서 안전하게 스키마(데이터베이스)를 삭제할 수 있습니다.
2️⃣ 테이블 생성.
MySQL에서 shopdb 라는 데이터베이스 안에 memberTBL이라는 테이블을 생성하는 방법은 다음과 같습니다.
1. MySQL에서 데이터베이스 선택.
먼저 shopdb 데이터베이스를 사용해야 합니다.
MySQL에서 작업할 데이터베이스를 선택하려면 USE 명령을 사용합니다.
USE shopdb;
이 명령을 실행하면 MySQL은 shopdb 데이터베이스를 사용하여 이후의 모든 작업을 수행합니다.
2. memberTBL 테이블 생성.
memberTBL 테이블을 만들기 위해 CREATE TABLE 명령을 사용합니다.
테이블은 다양한 컬럼(필드)로 구성되며, 각 컬럼은 이름과 자료형을 가집니다.
예시로, 회원 정보를 저장하는 테이블을 만들어 보겠습니다.
이 테이블은 회원의 ID, 이름, 이메일, 가입일 등을 저장한다고 가정하겠습니다.
CREATE TABLE memberTBL (
memberID INT AUTO_INCREMENT PRIMARY KEY, -- 회원 ID(자동 증가)
memberName VARCHAR(50) NOT NULL, -- 회원 이름
memberEmail VARCHAR(100), -- 회원 이메일
joinDate DATE -- 가입 날짜
);
테이블 생성 코드 설명
memberID INT AUTO_INCREMENT PRIMARY KEY
회원 ID는 정수형(INT)이고, 자동으로 증가하는 값(AUTO_INCREMENT)입니다.
또한, 기본 키(PRIMARY KEY)로 설정되어 각 회원이 고유한 값을 가집니다.
memberName VARCHAR(50) NOT NULL
회원 이름은 최대 50자 문자열(VARCHAR)로 저장되며, 비어있을 수 없습니다(NOT NULL).
memberEmail VARCHAR(100)
회원 이메일은 최대 100자의 문자열로 저장됩니다.
필수 입력은 아닙니다.
joinDate DATE
가입 날짜는 DATE 형식으로 저장됩니다.
3. 테이블 확인.
테이블이 정상적으로 생성되었는지 확인하려면 SHOW TABLES 명령을 사용합니다.
SHOW TABLES;
memberTBL이 목록에 나타나면 테이블이 성공적으로 생성된 것입니다.
4. 테이블 구조 확인.
테이블의 구조를 확인하려면 DESCRIBE 명령을 사용합니다.
DESCRIBE memberTBL;
이 명령어는 테이블의 각 컬럼 이름, 데이터 타입, 기본값, 인덱스 등을 보여줍니다.
5. 결론.
위 과정을 통해 MySQL에서 shopdb라는 데이터베이스에 memberTBL이라는 테이블을 생성할 수 있습니다.
테이블 구조는 필요에 따라 수정할 수 있으며, 각 필드는 원하는 데이터 타입과 제약 조건을 적용할 수 있습니다.
3️⃣ 테이블 조회.
MySQL에서 테이블 내부의 데이터를 조회하려면 SELECT 문을 사용합니다.
SELECT 문은 테이블에 저장된 데이터를 검색하여 출력하는 역할을 합니다.
1. 테이블의 모든 데이터를 조회하는 방법.
memberTBL 테이블의 모든 데이터를 확인하려면 아래 명령어를 사용합니다.
SELECT * FROM memberTBL;
이 명령어는 memberTBL 테이블에 있는 모든 행(Row)과 열(Column)을 가져옵니다.
2. 특정 컬럼(Column,열)만 조회하는 방법.
특정 컬럼(Column, 열)만 조회하고 싶다면 열 이름을 지정하여 SELECT 문을 작성할 수 있습니다.
SELECT memberID, memberName FROM memberTBL;
위 명령어는 memberID와 memberName 컬럼에 해당하는 값들만 출력합니다.
3. 조건에 맞는 데이터를 조회하는 방법.
특정 조건에 맞는 데이터만 조회하고 싶을 때는 WHERE 절을 사용합니다.
예를 들어, memberID 가 ‘user01’인 데이터를 조회하려면 아래와 같이 할 수 있습니다.
SELECT * FROM memberTBL WHERE memberID = 'user01';
4. 테이블의 구조를 확인하는 방법.
테이블의 구조(열 이름, 데이터 타입 등)를 확인하려면 DESCRIBE 또는 SHOW COLUMNS 명령을 사용할 수 있습니다.
DESCRIBE memberTBL;
또는
SHOW COLUMNS FROM memberTBL;
이 명령어들은 테이블의 각 열에 대한 정보(열 이름, 데이터 타입, NULL 허용 여부 등)를 보여줍니다.
이 명령어들을 통해 memberTBL 테이블에 저장된 데이터를 쉽게 확인할 수 있습니다.
4️⃣ 테이블 수정.
이미 생성된 테이블에서 memberID를 기본 키(Primary Key)로 설정하려면 ALTER TABLE 명령을 사용하여 테이블을 수정할 수 있습니다.
아래의 SQL 명령어를 사용하여 memberID를 기본 키로 설정할 수 있습니다.
1. ALTER TABLE을 사용하여 Primary Key 추가.
ALTER TABLE memberTBL
ADD PRIMARY KEY (memberID);
이 명령어는 기존의 memberTBL 테이블에서 memberID 컬럼을 기본 키로 설정합니다.
2. 테이블 구조 확인
DESCRIBE 명령을 사용하여 테이블 구조를 확인하고 memberID가 기본 키로 설정되었는지 확인할 수 있습니다.
DESCRIBE memberTBL;
3. 주의 사항.
memberID 컬럼에 중복된 값이 없어야 하며, NULL 값도 없어야 합니다.
기본 키는 고유해야 하므로 중복된 값이나 NULL 값이 존재하면 에러가 발생할 수 있습니다.
만약 테이블에 이미 중복된 값이 있거나 NULL이 포함된 경우, 기본 키를 추가하기 전에 데이터를 정리해야 합니다.
4. 추가 예시 : 새로운 테이블에서 Primary Key 지정
만약 테이블을 처음부터 생성하면서 memberID를 기본 키로 설정하려면 다음과 같이 할 수 있습니다.
CREATE TABLE memberTBL (
memberID CHAR(8) NOT NULL PRIMARY KEY, -- 8글자, 기본키
memberName CHAR(5) NOT NULL, -- 5글자, NULL 허용 안 함
memberAddress CHAR(20) NULL -- 20글자, NULL 허용
);
이렇게 하면 테이블을 생성할 때 memberID가 기본 키로 설정됩니다.
-
-
💾[Database] DBMS의 개요.
💾[Database] DBMS의 개요.
1️⃣ 데이터베이스의 정의와 특징.
데이터베이스는 여러 사용자나 응용 프로그램이 공유하고 동시에 접근 가능한 ‘데이터의 집합’이라고 정의할 수 있습니다.
그리고 DBMS(DataBase Management System)는 이러한 데이터베이스를 관리.운영하는 소프트웨어입니다.
일반적으로 사용하는 MS의 엑셀 같은 프로그램은 데이터의 집합을 다루기 때문에 DBMS와 비슷해 보이지만, 대용량 데이터를 관리하거나 여러 명의 사용자가 공유하는 것은 아니므로 DBMS라고 부르지 않습니다.
데이터베이스는 ‘데이터의 저장 공간’ 자체를 의미하기도 합니다.
MySQL에서는 데이터베이스를 자료가 저장되는 디스크 공간(주로 파일로 구성됨)으로 취급합니다.
DBMS는 데이터베이스를 관리하는 역할을 하는 소프트웨어입니다.
여러 사용자나 응용 프로그램은 DBMS가 관리하는 데이터에 동시에 접속하여 데이터를 공유합니다.
즉, DBMS에서는 데이터베이스에서 사용되는 데이터가 집중 관리됩니다.
DBMS 또는 데이터베이스의 중요한 특징.
데이터 무결성.
데이터베이스 안의 데이터는 어떤 경로를 통해 들어왔든 오류가 있어서는 안 되는데 이를 무결성(Integrity)이라고 합니다.
무결성을 지키기 위해 데이터베이스는 제약 조건(constraint)을 따릅니다.
예를 들어 학생 데이터에서 모든 학생은 학번이 반드시 있어야 하고 학번이 중복되면 안 된다는 제약 조건을 생각해봅시다.
이 제약 조건을 충실히 지킨다면 학번으로도 학생 데이터에서 학생을 정확히 찾을 수 있습니다.
즉, 학번은 무결한 데이터를 보장하는 요소이며, 자동 발급기로 성적 증명서나 재학 증명서를 뗄 떼 학번만 조회해도 정확한 자료를 출력할 수 있습니다.
데이터의 독립성.
데이터베이스의 크기를 변경하거나 데이터 파일의 저장소를 변경하더라도 기존에 작성된 응용 프로그램은 전혀 영향을 받지 않습니다.
즉 데이터베이스와 응용 프로그램은 서로 의존적인 관계가 아니라 독립적인 관계입니다.
예를 들어 데이터베이스가 저장된 디스크가 새것으로 변경되어도 기존에 사용하던 응용 프로그램은 아무런 변경 없이 계속 사용할 수 있습니다.
보안.
데이터베이스 안의 데이터는 아무나 접근할 수 있는 것이 아니라 데이터를 소유한 사람이나 데이터에 접근이 허가된 사람만 접근할 수 있습니다.
또한 같은 데이터에 접근할 때도 사용자의 계정에 따라서 각각 다른 권한을 갖습니다.
최근 들어 고객 정보 유출 사고가 빈번하여 보안(Security)은 데이터베이스에서 더욱 중요한 이슈가 되고 있습니다.
데이터 중복 최소화.
데이터베이스에서는 동일한 데이터가 여러 군데 중복 저장되는 것을 방지합니다.
학교를 예로 들면, 학생 정보를 이용하는 교직원들(학생처, 교무처, 과사무실 등)이 각 직원마다 별도의 엑셀 파일로 학생 정보를 관리하면 한 명의 학생 정보가 각각의 엑셀 파일에 중복 저장됩니다.
그러나 데이터베이스에 통합하여 관리하면 하나의 테이블에 데이터를 저장한 후 응용 프로그램마다 이를 공유하여 사용할 수 있어 데이터의 중복을 최소화할 수 있습니다.
응용 프로그램 제장 및 수정 용이.
기존 파일 시스템에서는 각각의 파일 포맷에 맞춰 응용 프로그램을 개발했습니다.
그러나 데이터베이스를 이용하면 통일된 방식으로 응용 프로그램을 작성할 수 있고 유지.보수 또한 쉽습니다.
데이터의 안전성 향상.
대부분의 DBMS는 데이터 백업/복원 기능을 제공합니다.
따라서 데이터가 손상되는 문제가 발생하더라도 원래의 상태로 복원 또는 복구할 수 있습니다.
2️⃣ DBMS의 분류.
DBMS는 크게 계층형(Hierarchical), 망형(network), 관계형(relational), 객체지향형(object-oriented), 객체관계형(object-relational)으로 분류됩니다.
현재는 관계형 DBMS(Relational DBMS)가 가장 많이 사용되며, 일부 멅티미디어 분야에서는 객체지향형(object-oriented)나 객체관계형(object-relational) DBMS가 활용되기도 합니다.
MySQL을 비롯해 Oracle, DB2, SQL Server, Access 등은 모두 관계형 DBMS입니다.
계층형 DBMS(Hierarchical DBMS)
1960년대에 처음 등장한 DBMS 개념입니다.
위 그림에서 보듯이 각 계층이 트리 형태를 띠고 1:N 관계를 갖습니다.
예를 들어 사장 1명에 부서 3개가 연결되어 있는 구조가 계층형 구조입니다.
계층형 DBMS는 구축한 후 구조를 변경하기가 상당히 까다롭고, 주어진 상태에서 검색은 빠르지만 접근의 유연성이 부족하여 임의 검색 시 어려움이 있는 것이 단점입니다.
망형 DBMS(Network DBMS)
망형 DBMS는 계층형 DBMS의 문제점을 개선하기 위해 1970년대에 시작되었습니다.
망형 DBMS에서는 1:1, 1:N, N:M(다대다) 관계가 지원되어 효과적이고 빠른 데이터 추출이 가능합니다.
그러나 계층형 DBMS와 마찬가지로 매우 복잡한 내부 포인터를 사용하고 프로그래머가 모든 구조를 이해해야만 프로그램을 작성할 수 있다는 단점이 여전히 존재합니다.
관계형 DBMS
관계형 DBMS(Relational DBMS)는 1969년 에드거 F.코드(Edgar F.Codd)가 수학 모델에 근거하여 고안했습니다.
관계형 DBMS의 핵심개념은 ‘데이터베이스는 테이블(table)이라는 최소 단위로 구성되어 있으며, 이 테이블은 하나 이상의 열(Column)로 구성되어 있다’는 것입니다.
관계형 DBMS에서는 모든 데이터가 테이블에 저장됩니다.
테이블이라는 구조는 관계형 DBMS의 가장 기본적이고 중요한 구성으로, 테이블을 잘 이해하면 관계형 DBMS의 기본적인 것을 이해했다고 말할 수 있습니다.
테이블은 데이터를 효율적으로 저장하기 위한 구조입니다.
관계형 DBMS에서는 데이터를 하나가 아닌 여러 개의 테이블에 나누어 저장하므로 불필요한 공간의 낭비를 줄이고 데이터 저장의 효율성을 보장합니다.
이렇게 나뉜 테이블의 관계를 기본키(Primary Key, PK)와 외래키(Foreign Key, FK)를 사용하여 맺음으로써 두 테이블을 부모와 자식 관계로 묶습니다.
그리고 부모와 자식 관계로 연결된 테이블을 서로 조합하여 원하는 결과를 얻을 수 있는데, 이때 SQL(Structured Query Language, 구조화된 질의 언어)의 조인(join) 기능을 이용합니다.
TIP: 테이블은 릴레이션(Relation), 엔티티(Entity) 등으로 불립니다.
관계형 DBMS는 다른 DBMS에 비해 업무 변화에 따라 바로 순응할 수 있고 유지.보수 측면에서도 편리하다는 특징이 있습니다.
또한 대용량 데이터를 체계적으로 관리할 수 있고 데이터의 무결성도 잘 보장됩니다.
따라서 동시에 접근하는 여러 응용 프로그램을 사용할 때 관계형 DBMS는 적절한 선택이 될 수 있습니다.
관계형 DBMS의 단점으로는 시스템 자원을 많이 차지하여 시스템이 전반적으로 느려진다는 것을 꼽을 수 있습니다.
그러나 최근에는 하드웨어의 급속한 발전으로 이러한 단점이 많이 보완되고 있습니다.
3️⃣ SQL의 개요
SQL은 관계형 데이터베이스에서 사용되는 언어로 ‘에스큐엘’ 또는 ‘시퀄’이라고 읽습니다.
관계형 DBMS(그중에서도 MySQL)를 배우려면 SQL을 익히는 것이 필수입니다.
SQL은 데이터베이스를 조작하는 ‘언어’로, 일반적인 프로그래밍 언어(C, C++, Java, C# 등)와 다른 특성을 가지고 있다.
SQL의 특징.
DBMS 제작 회사와 독립적입니다.
모든 DBMS 제작 회사에 표준 SQL이 공개되어 각 회사는 이 표준 SQL에 맞춰 DBMS를 개발합니다.
따라서 SQL은 대부분의 DBMS 제품에서 공통적으로 호환됩니다.
다른 시스템으로의 이식성이 좋습니다.
SQL은 서버용, 개인용, 휴대용 장비 등 운영되는 DBMS마다 상호 호환성이 뛰어납니다.
한 시스템에서 사용하던 SQL을 다른 시스템으로 이식하는 데 큰 문제가 없습니다.
표준이 계속 발전합니다.
SQL은 SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003, SQL:2008, SQL:2011 등으로 개선된 표준안이 계속 발표되었으며, 지금도 개선된 안이 꾸준히 연구되고 있습니다.
대화식 언어입니다.
기존 프로그래밍 언어는 프로그램 작성, 컴파일 및 디버깅, 실행 과정을 거쳐야만 그 결과를 확인할 수 있지만 SQL은 바로 질의하고 결과를 얻는 대화식 언어입니다.
클라이언트/서버 구조를 지원합니다.
SQL은 분산형 구조인 클라이언트/서버 구조를 지원합니다.
클라이언트에서 질의를 하면 서버에서 그 질의를 받아 처리하여 클라이언트에 전달하는 구조입니다.
SQL을 사용할 때 주의할 점은, 모든 DBMS 제품의 SQL 문이 완벽하게 동일하지는 않다는 것입니다.
많은 회사가 되도록 표준 SQL을 준수하려고 노력하지만 각 회사의 DBMS마다 특징이 있기 때문에 현실적으로 완전히 통일되기는 어렵습니다.
각 회사는 가급적 표준 SQL을 지키면서도 자신의 제춤에 특화된 SQL을 사용합니다.
이를 오라큰에서는 PL/SQL, SQL Server에서는 T-SQL이라 부르고 MySQL에서는 그냥 SQL이라 일컫습니다.
위 그림과 같이 각 회사의 제품은 모두 표준 SQL을 공통으로 사용하면서 자기 제품의 특성에 맞춘 호환되지 않는 SQL 문도 사용합니다.
-
💉[SQL] DBMS의 분류.
💉[SQL] DBMS의 분류.
DBMS의 유형은 계층형(Hierarchical), 망형(Network), 관계형(Relational), 객체지향형(Object-Oriented), 객체관계형(Object-Relational) 등으로 분류됩니다.
현재 사용되는 DBMS 중에는 관계형 DBMS(Relational DBMS) 가 가장 많은 부분을 차지하며, MySQL 도 관계형 DBMS(Relational DBMS)에 포함됩니다.
1️⃣ 계층형 DBMS.
계층형 DBMS(Hierarchical DBMS) 는 처음으로 등장한 DBMS 개념으로 1960년대에 시작되었습니다.
다음 그림과 같이 각 계층은 트리(tree) 형태를 갖습니다.
계층형 DBMS의 문제는 처음 구성을 완료한 후에 이를 변경하기가 상당히 까다롭다는 것입니다.
또한, 다른 구성원을 찾아가는 것이 비효율적입니다.
예를 들어 재무 2팀에서 회계팀으로 연결하려면 재무이사 -> 사장 -> 회계이사 -> 회계팀과 같이 여러 단계를 거쳐야 합니다.
지금은 사용하지 않는 형태입니다.
2️⃣ 망형 DBMS.
망형 DBMS(Network DBMS) 는 계층형 DBMS의 문제점을 개선하기 위해 1970년대에 등장했습니다.
다음 그림을 보면 하위에 있는 구성원끼리도 연결된 유연한 구조입니다.
예를 들어 재무 2팀에서 바로 회계팀으로 연결이 가능합니다.
하지만 망형 DBMS를 잘 활용하려면 프로그래머가 모든 구조를 이해해야만 프로그램 작성이 가능하다는 단점이 존재합니다.
지금은 거의 사용하지 않는 형태입니다.
3️⃣ 관계형 DBMS
관계형 DBMS(Relational DBMS) 는 줄여서 RDBMS 라고 부릅니다.
MySQL 뿐만 아니라, 대부분의 DBMS가 RDBMS 형태로 사용됩니다.
RDBMS의 데이터베이스는 테이블(table) 이라는 최소 단위로 구성되며, 이 테이블은 하나 이상의 열(Column) 과 행(Row) 으로 이루어져있습니다.
아래의 표 모양이 바로 테이블입니다.
친구의 카카오톡 아이디, 이름, 연락처 등 3가지 정보를 표, 즉 테이블로 만들면 다음과 같습니다.
RDBMS 에서는 모든 데이터가 테이블에 저장됩니다.
이 구조가 가장 기본적이고 중요한 구성이기 때문에 테이블만 제대로 파악하면 RDBMS를 어느 정도 이해했다고 알 수 있습니다.
테이블은 열과 행으로 이루어진 2차원 구조를 갖습니다.
세로는 열(Column)이라 하고, 가로는 행(Row)이라고 합니다.
열은 아이디, 이름, 연락처로 이름을 가지고 있고, 행은 각각의 정보로 이루어져 있습니다.
-
💉[SQL] DBMS의 발전 과정.
💉[SQL] DBMS의 발전 과정.
컴퓨터가 존재하기 전부터 사람들은 데이터(정보)를 관리해 왔습니다.
종이에 정보를 기록하고 관리하던 때부터 시작해 지금의 DBMS까지 어떤 과정으로 발전했는지 차례대로 살펴봅시다.
1️⃣ 종이에 펜으로 기록.
아주 오래 전부터 정보는 관리되어 왔습니다.
컴퓨터가 없던 시기에도 구멍가게(요즘의 편의점과 비슷)를 운영하면서 판매와 구매가 발생했을 것이고, 그것을 종이에 펜으로 기록했을 것입니다.
2️⃣ 컴퓨터에 파일로 저장.
컴퓨터가 등장하고 일반 사람들도 컴퓨터를 사용하게 되면서 종이에 기록하던 내용을 컴퓨터 파일에 기록, 저장하게 되었습니다.
컴퓨터에 판매/구매 이력을 저장하는 방법은 단순하게 메모장을 사용할 수도 있지만, 컴퓨터를 어느 정도 활용하게 되면서 엑셀과 같은 스프레드시트 프로그램을 사용해 표 형태로 내용을 기록하고 자동으로 계산하는 등 한층 더 효율적으로 정보를 관리하게 되었습니다.
기록된 내용은 파일(file) 이라는 형태로 저장해 필요할 때마다 열어서 사용할 수 있습니다.
엑셀을 사용하면 아주 편리하지만, 저장한 파일은 한 번에 한 명의 사용자만 열어서 작업할 수 있습니다.
규모가 작은 구멍가게에서는 한 명의 사용자가 하나의 파일에 작업하는 것이 문제가 되지 않을 수도 있습니다.
하지만 규모가 큰 슈퍼마켓이나 마트 등에서는 데이터의 양이 많아 한 명의 사용자가 모두 처리할 수 없기 때문에 여러 명이 각자의 파일을 만들어서 작업할 수밖에 없습니다.
예시.
예를 들어, 3명의 직원이 엑셀로 판매 내용을 기록한다고 합시다.
A 직원은 오전, B 직원은 오후, C 직원은 야간에 판매된 내용을 기록한다고 가정하겠습니다.
3명이 정확히 자신의 시간에 판매된 것만 기록하면 좋겠으나, 실수로 A 직원이 판매한 내역을 B 직원 파일에 작성할 수도 있을 것입니다.
또, 오전에 판매한 물건을 오후에 반품할 경우에는 오전에 판매한 사람이 기록해야 할지, 오후에 반품받은 사람이 기록해야 할지 그 주체도 모호하기 때문에 기록이 누락되거나 모두 기록하여 중복되는 문제가 발생할 소지도 있습니다.
하루, 한 달 더 나아가서는 연간 판매 기록을 합계할 때 금액이 맞지 않는 경우처럼 심각한 일이 발생할 수도 있습니다.
이러한 불일치가 파일의 큰 문제점 중 하나입니다.
하지만 이런 문제점에도 불구하고 파일은 한 명이 처리하거나 소량의 데이터를 처리할 때는 속도가 빠르고, 사용법이 쉽기 때문에 지금도 많이 사용하고 있습니다.
3️⃣ DBMS의 대두와 보급.
앞에서 언급한 파일의 단점을 보완하면서 대량의 데이터를 효율적으로 관리하고 운영하기 위해서 등장한 것이 DBMS 입니다.
MySQL과 같은 DBMS의 개념은 1973년에 최초로 에드거 프랭크 커드(E.F. Codd)라는 학자가 이론을 정립했습니다.
그 이후로 많은 DBMS 제품이 만들어졌고, 지금과 같이 안정적인 소프트웨어로 자리 잡게 되었습니다.
DBMS는 데이터의 집합인 데이터베이스 를 잘 관리하고 운영하기 위한 시스템 또는 소프트웨어를 말합니다.
DBMS에 데이터를 구축, 관리하고 활용하기 위해서 사용되는 언어가 SQL(Structured Query Language) 입니다.
이 SQL을 사용하면 DBMS를 통해 중요한 정보들을 입력, 관리하고 추출할 수 있습니다.
즉, SQL 문을 잘 이해하고 사용해야만 DBMS를 원활하게 활용할 수 있습니다.
비유하자면 미국 문화(DBMS)를 완전히 이해하고 싶다면 그 나라의 언어인 영어(SQL)를 먼저 배워야 하는 것과 비슷한 개념입니다.
-
💉[SQL] 데이터베이스와 DBMS
💉[SQL] 데이터베이스와 DBMS.
1️⃣ DBMS의 정의.
데이터베이스에는 우리 일상생활 대부분의 정보가 저장되고 관리됩니다.
오늘 보내거나 받은 메시지, SNS에 등록한 사진, 대중교통 이용시 찍은 교통카드, 카페에서 구매한 음료 등의 정보가 모두 데이터베이스에 기록됩니다.
데이터베이스(Database) 를 한 마디로 정의한다면 ‘데이터의 집합’이라고 할 수 있습니다.
DBMS(Database Management System)는 이런 데이터베이스를 관라하고 운영하는 소프트웨어입니다.
다양한 데이터가 저장되어 있는 데이터베이스는 여러 명의 사용자나 응용 프로그램과 공유하고 동시에 접근이 가능해야 합니다.
그래서 MS사의 엑셀과 같은 프로그램은 ‘데이터의 집합’을 관리하고 운영한다는 차원에서 DBMS로 볼 수 있지만, 대용량 데이터를 관리하거나 여러 사용자와 공유하는 개념과는 거리가 있어 DBMS라고 부르지 않습니다
(엑셀은 DBMS라고 부르지 않습니다.)
가까운 예로 은행의 예금 계좌는 많은 사람들이 가지고 있습니다.
여러 명의 예금 계좌 정보를 모아 놓은 것이 데이터베이스입니다.
은행이 가지고 있는 예금 계좌 데이터베이스에는 여러 명이 동시에 접근할 수 있습니다.
예금 계좌 주인, 은행 직원, 인터넷 뱅킹, ATM 기기 등에서 모두 접근이 가능하기 때문입니다.
이러한 것이 가능한 이유는 바로 DBMS가 있기 때문입니다.
2️⃣ DBMS의 종류.
DBMS와 같은 소프트웨어는 특정 목적을 처리하기 위한 프로그램입니다.
예를 들어 문서를 작성하기 위해서는 아래아한글(HWP)이나 워드(Word), 표 계산을 위해서는 엑셀(Excel)이나 캘크(Calc), 멋진 사진을 편집하려면 포토샵(PhotoShop)이나 김프(Gimp)와 같은 소프트웨어를 설치해야 합니다.
마찬가지로 데이터베이스를 사용하기 위해서도 소프트웨어, 즉 DBMS를 설치해야하는데 대표적으로 MySQL, 오라클(Oracle) SQL 서버(Server), MariaDB 등이 있습니다.
소프트웨어 각각의 사용 방법과 특징이 다르지만 특정 목적을 위해서는 어떤 것을 사용해도 무방합니다.
Touch background to close