devkobe24.com
AWS
Algorithm
2024
Archive
AWS_archive
CPP_DS
CS_archive
DataStructure
Database
HackTheSwift
Java_archive
Leet-Code
MySQL
Network_archive
OS
Post
Read English Book
SQL_archive
Spring & Spring Boots
TIL
Web
CS
2024
DB
Interview
Java
Java多識
Java
Network
2024
SQL
2024
Spring
Home
Contact
Copyright © 2024 |
Yankos
Home
>
Archive
> Database
Now Loading ...
Database
💾[Database] SQL의 개요
SQL의 개요 SQL은 관계형 DB에서 사용되는 언어로 ‘에스큐엘’ 또는 ‘시퀄’이라고 읽습니다. 관계형 DBMS(그중에서도 MySQL)를 배우려면 SQL을 익히는 것은 필수입니다. SQL은 DB를 조작하는 ‘언어’로, 일반적인 프로그래밍 언어(C, C++, Java, C# 등)와 다른 특성을 가지고 있습니다. SQL은 국제 표준화기관에서 표준화된 내용을 계속 발표했습니다. SQL의 특징 “DBMS 제작 회사와 독립적이다.” 모든 DBMS 제작 회사에서 표준 SQL이 공개되어 각 회사는 이 표준 SQL에 맞춰 DBMS를 개발합니다. 따라서 SQL은 대부분의 DBMS 제품에서 공통적으로 호환됩니다. “다른 시스템으로의 이식성이 좋다.” SQL은 서버용, 개인용, 휴대용 장비 등 운영되는 DBMS마다 상호 호환성이 뛰어납니다. 한 시스템에서 사용하던 SQL을 다른 시스템으로 이식하는 데 큰 문제가 없습니다. “표준이 계속 발전합니다.” SQL은 SQL-86, 89, 92, 1999, 2003, 2008, 2011 등으로 개선된 표준안이 계속 발표되었으며, 지금도 개선된 안이 꾸준히 연구되고 있습니다. “대화식 언어입니다.” 기존 프로그래밍 언어는 프로그램 작성, 컴파일 및 디버깅, 실행 과정을 거쳐야만 그 결과를 확인할 수 있지만 SQL은 바로 질의하고 결과를 얻는 대화식 언어입니다. “클라이언트/서버 구조를 지원합니다.” SQL은 분산형 구조인 클라이언트/서버 구조를 지원합니다. 클라이언트에서 질의를 하면 서버에서 그 질의를 받아 처리하여 클라이언트에 전달하는 구조입니다. SQL을 사용시 주의할 점은, 모든 DBMS 제품의 SQL 문이 완벽하게 동일하지는 않다는 것입니다. 많은 회사가 되도록 표준 SQL을 준수하려고 노력하지만 각 회사의 DBMS마다 특징이 있기 때문에 현실적으로 완전히 통일되기는 어렵습니다. 각 회사는 가급적 표준 SQL을 지키면서도 자신의 제품에 특화된 SQL을 사용합니다. 이를 오라클에서는 PL/SQL, SQL Server에서는 T-SQL이라 부르고 MySQL에서는 그냥 SQL이라 일컫습니다. 아래 그림과 같이 각회사의 제품은 모두 표준 SQL을 공통으로 사용하면서 자기 제품의 특성에 맞춘 호환되지 않는 SQL 문도 사용합니다.
Archive
· 2024-02-16
💾[Database] 데이터베이스의 정의와 특징
데이터베이스의 정의와 특징. “데이터베이스” 는 여러 사용자나 응용 프로그램이 공유하고 동시에 접근 가능한 “데이터의 집합” 이라 정의할 수 있습니다. “DBMS(Database Management System)” 는 이러한 데이터베이스를 관리﹒운영하는 소프트웨어입니다. 일반적으로 사용하는 마이크로소프트의 엑셀 같은 프로그램은 테이터의 집합을 다루기 때문에 DBMS와 비슷해 보이지만, 대용량 데이터를 관리하거나 여러 명의 사용자가 공유하는 것은 아니므로 DBMS라고 부르지 않습니다. 데이터베이스는 “데이터의 저장 공간” 자체를 의미하기도 합니다. DBMS 중 하나인 MySQL에서는 데이터베이스를 자료가 저장되는 디스크 공간(주로 파일로 구성됨)으로 취급합니다. 아래 그림은 데이터베이스, DBMS, 사용자, 응용 프로그램의 관계를 보여줍니다. 위 그림에서 보듯이 “DBMS” 는 데이터베이스를 관리하는 역할을 하는 소프트웨어 입니다. 여러 사용자나 응용 프로그램은 “DBMS” 가 관리하는 데이터에 동시에 접속하여 데이터를 공유합니다. 즉, “DBMS” 에서는 “데이터베이스에서 사용되는 데이터가 집중 관리됩니다.” DBMS에는 MySQL 외에도 많은 종류가 있습니다. DBMS 또는 데이터베이스는 다음과 같은 몇 가지 중요한 특징을 가지고 있습니다. 데이터의 무결성 데이터베이스 안의 데이터는 어떤 경로를 통해 들어왔든 오류가 있어서는 안 되는데 이를 무결성(Integrity)이라고 합니다. 무결성을 지키기 위해 데이터베이스는 제약 조건(Constraint)을 따릅니다. 예를 들어 학생 데이터에서 모든 학생은 학번이 반드시 있어야 하고 학번이 중복되면 안 된다는 제약 조건을 생각해봅시다. 이 제약 조건을 충실히 지킨다면 학번으로도 학생 데이터에서 학생을 정확히 찾을 수 있습니다. 즉 학번은 무결한 데이터를 보장하는 요소이며, 자동 발급기로 성적 증명서나 재학 증명서를 뗄 때 학번만 조회해도 정확한 자료를 출력할 수 있습니다. 데이터의 독립성 데이터베이스의 크기를 변경하거나 데이터 파일의 저장소를 변경하더라도 기존에 작성된 응용 프로그램은 전혀 영향을 받지 않습니다. 즉 데이터베이스와 응용 프로그램은 서로 의존적인 관계가 아니라 독립적인 관계입니다. 예를 들어 데이터베이스가 저장된 디스크가 새것으로 변경되어도 기존에 사용하던 응용 프로그램은 아무런 변경 없이 계속 사용할 수 있습니다. 보안 데이터베이스 안의 데이터는 아무나 접근할 수 있는 것이 아니라 데이터를 소유한 사람이나 데이터에 접근이 허가된 사람만 접근할 수 있습니다. 또한 같은 데이터에 접근할 때도 사용자의 계정에 따라서 각각 다른 권한을 갖습니다. 최근 들어 고객 정보 유출사고가 빈번하여 보안(security)은 데이터베이스에서 더욱 중요한 이슈가 되고 있습니다. 데이터 중복 최소화 데이터베이스에서는 동일한 데이터가 여러 군데 중복 저장되는 것을 방지합니다. 학교를 예로 들면, 학생 정보를 이용하는 교직원들(학생처, 교무처, 과사무실 등)이 각 직원마다 별도의 엑셀 파일로 학생 정보를 관리하면 한 명의 학생 정보가 각각의 엑셀 파일에 중복 저장됩니다. 그러나 데이터베이스에 통합하여 관리하면 하나의 테이블에 데이터를 저장한 후 응용 프로그램마다 이를 공유하여 사용할 수 있어 데이터의 중복을 최소화할 수 있습니다. 응용 프로그램 제작 및 수정 용이 기존 파일 시스템에서는 각각의 파일 포맷에 맞춰 응용 프로그램을 개발했습니다. 그러나 데이터베이스를 이용하면 통일된 방식으로 응용 프로그램을 작성할 수 있고 유지﹒보수 또한 쉽습니다. 데이터의 안전성 향상 대부분의 DBMS는 데이터 백업/복원 기능을 제공합니다. 따라서 데이터가 손상되는 문제가 발생하더라도 원래의 상태로 복원 또는 복구할 수 있습니다.
Archive
· 2024-02-15
💾[Database] DBMS의 분류
DBMS의 분류. “DBMS” 는 크게 계층형(hierarchical), 망형(network), 관계형(relational), 객체지향형(object-oriented), 객체관계형(object-relational) 으로 분류됩니다. “계층형(Hierachical) DBMS” 1960년대에 처음 등장한 DBMS 개념입니다. 아래 그림에서 보듯이 각 계층이 트리 형태를 띠고 1:N 관계를 갖습니다. 예를 들어 사장 1명에 부서 3개가 연결되어 있는 구조가 계층형 구조입니다. 계층형 DBMS는 구축한 후 구조를 변경하기가 상당히 까다롭습니다. 주어진 상태에서 검색은 빠르나 접근의 유연성이 부족하여 임의 검색 시 어려움이 있는 것이 단점입니다. “망형(network) DBMS” 계층형(Hierachical) DBMS의 문제점을 개선하기 위해 1970년대에 시작되었습니다. 1:1, 1:N, N:M(다대다) 관계가 지원되어 효과적이고 빠른 데이터 추출이 가능합니다. 그러나 매우 복잡한 내부 포인터를 사용하고 프로그래머가 모든 구조를 이해해야만 프로그램을 작성할 수 있다는 단점이 여전히 존재합니다. 관계형(Relational) DBMS 1969년 에드거 F.코드(Edgar F. Codd)가 수학 모델에 근거하여 고안했습니다. 관계형(Relational) DBMS의 핵심 개념은 ‘데이터베이스는 테이블(table)’이라는 최소 단위로 구성되어 있으며, 이 테이블은 하나 이상의 열로 구성되어 있다는 것입니다. 관계형 DBMS에서는 모든 데이터가 테이블에 저장됩니다. 테이블이라는 구조는 관계형 DBMS의 가장 기본적이고 중요한 구성으로, 테이블을 잘 이해하면 관계형 DBMS의 기본적인 것을 이해했다고 말할 수 있습니다. 테이블은 데이터를 효율적으로 저장하기 위한 구조입니다. 관계형 DBMS에서는 데이터를 하나가 아닌 여러 개의 테이블에 나누어 저장하므로 불필요한 공간의 낭비를 줄이고 데이터 저장의 효율성을 보장합니다. 이렇게 나뉜 테이블의 관계를 “기본키(Primary Key, PK)” 와 “외래키(Foreign Key, FK)” 를 사용하여 맺음으로써 두 테이블을 부모와 자식 관계로 묶습니다. 그리고 부모와 자식 관계로 연결된 테이블을 서로 조합하여 원하는 결과를 얻을 수 있습니다. 이 때 “SQL(Structured Query Language, 구조화된 질의 언어)” 의 조인(join) 기능을 이용합니다. 테이블은 릴레이션(relation), 엔티티(entity) 등으로도 불립니다. 관계형 DBMS는 다른 DBMS에 비해 업무 변화에 따라 바로 순응할 수 있고 유지﹒보수 측면에서도 편리하다는 특징이 있습니다. 또한 대용량 데이터를 체계적으로 관리할 수 있고 데이터의 무결성도 잘 보장됩니다. 따라서 동시에 데이터에 접근하는 여러 응용 프로그래밍을 사용할 때 관계형 DBMS는 적절한 선택이 될 수 있습니다. 관계형 DBMS의 단점으로는 시스템 자원을 많이 차지하여 시스템이 전반적으로 느려진다는 것을 꼽을 수 있습니다. 그러나 최근에는 하드웨어의 급속한 발전으로 이러한 단점이 많이 보완되고 있습니다.
Archive
· 2024-02-15
<
>
Touch background to close