본문 바로가기
Database/SQL 기초교육

SQL 기초 교육과정 4 (관계형 데이터베이스와 SQL)

by DBTechBiz 2022. 8. 26.

1. 관계형 데이터 베이스

관계형 데이터베이스(RDBMS, Relational Databae Management System)는 관계 또는 2차원 테이블을 사용하여 정보를 저장합니다.

예를 들어, 회사의 모든 사원에 대한 정보를 저장하려는 경우가 있습니다. 관계형 데이터베이스에서는 사원 테이블, 부서 테이블, 급여 테이블 여러 테이블을 생성하여 사원에 대한 서로 다른 정보 단위를 저장합니다

  • 2차원 형태(행,열)의 테이블 기반
  • 테이블과 테이블 간의 연관관계를 이용해 필요한 정보를 검색
  • 테이블끼리의 중복정보는 최소화 시킴
  • SQL을 사용하여 데이터를 관리

 

관계형 데이터베이스 용어

그림은 사원(EMPLOYEES) 테이블 또는 관계 내용을 보여줍니다. 숫자는 다음 내용을 나타냅니다.

1. 특정 사원에 필요한 모든 데이터를 나타내는 단일 (또는 튜플)입니다. 테이블의 행은 중복 행을 허용하지 않는 Primary key 식별되어야 합니다. 행의 순서는 중요하지 않습니다. 데이터를 검색할 순서를 지정합니다.

2. 사원 번호를 포함하는 또는 속성입니다. 사원 번호는 EMPLOYEES 테이블에서 고유한 사원을 식별합니다. 위의 그림에서 사원 번호 열은 Primary key 지정됩니다. Primary key값을 포함(Not Null)해야 하고 값은 고유(Unique)해야 합니다.

3. 값이 아닌 열입니다. 열은 테이블에 있는 일종의 데이터를 나타냅니다. 위의 그림에서 데이터는 모든 사원의 급여입니다. 데이터를 저장할 순서는 중요하지 않습니다. 데이터를 검색할 순서를 지정합니다.

4. 부서 번호를 포함하는 열이며 Foreign key입니다. Foreign key 테이블이 서로 연관되는 방식을 정의하는 열입니다. Foreign key 동일한 테이블이나 다른 테이블에 있는 Primary keyUnique key 참조합니다. 그림에서 DEPARTMENT_ID는 부서(DEPARTMENTS) 테이블에서 부서ID를 고유하게 식별합니다.

5. 필드 행과 열의 교차점에서 찾을 있습니다. 필드는 하나의 값만 가질 있습니다.

6. 필드에 값이 없을 수도 있습니다. 이를 null 값이라고 합니다. EMPLOYEES 테이블에서 판매 담당자 롤을 가진 사원만 COMMISSION_PCT (commission) 필드에 값이 있습니다.


2. SQL 및 개발 환경

SQL(구조적 질의어)은 다음과 같은 특징이 있습니다.

  • 관계형 데이터베이스 작동을 위한 ANSI 표준 언어
  • 효율적이며 쉽게 배워 사용할 수 있음
  • 완벽한 기능(SQL을 사용하면 테이블의 데이터를 정의, 검색 및 조작할 수 있습니다.)

SQLStructured Query Language 약자로, RDBMS 에서 데이터를 관리하기 위해 사용하는 구조적인 질의 언어입니다. 절차형은 흐름이 있고 프로세스가 있습니다. 일반적으로 개발 언어는 절차형 언어로 위에서부터 아래로 코드를 작성합니다. 그리고 레코드 단위로 처리를 합니다. 하지만 SQL은 조건을 만족하는 데이터를 집합 단위로 한꺼번에 처리를 합니다. 이게 SQL 의 큰 특징입니다.

데이터베이스에 액세스하려면 관계형 데이터베이스 작동을 위한 ANSI (American National Standards Institute) 표준 언어인 SQL (구조적 질의어) 문을 실행합니다. SQL 모든 프로그램 유저가 데이터베이스의 데이터에 액세스하기 위해 사용하는 일련의 명령문입니다.

SQL에서는 다음을 포함하여 다양한 작업에 대한 명령문을 제공합니다.

  • 데이터 Query (조회)
  • 테이블에서 행 삽입, 갱신 및 삭제
  • 객체 생성, 대체, 변경 및 삭제
  • 데이터베이스 및 해당 객체에 대한 액세스 제어
  • 데이터베이스 일관성 및 무결성 보장

위에 설명된 모든 작업은 SQL이라는 하나의 일관된 언어로 표현할 있으며 유저는 SQL 통해 논리적 레벨에서 데이터를 다룰 있습니다.

▶ DBTechBiz 끄적끄적
DBA 업무롤을 가지고 SI 프로젝트를 수행하다 보면 데이터베이스 성능에 중점을 둔 쿼리가 아닌 대부분 가독성에 중점을 둔 쿼리를 많이 보았으며 현재 수행 중인 프로젝트 또한 비슷한 상황이다. 인덱스, 함수 사용법 등 기본적인 부분만 몇 개 알아도 속도에 큰 영향을 주며 이는 데이터베이스 전체에 영향을 줄 수도 있다. DBA 뿐만 아니라 개발자도 기본적인 SQL 사용법 뿐만 아니라 좀 더 깊게 공부했으면 하는게 저자의 생각이다.


SQL 을 배워야 하는 이유

  • 관계형 데이터베이스에게 일을 시킬 수 있는 유일한 수단
  • 절차형 사고를 집합적 사고로 전환해야 함
  • 동일한 결과를 내는 처리경로는 많으나 효율의 차이는 큼
  • 응용력에 따른 개인차
  • 사용상의 미묘한 차이가 엄청난 효율성의 차이를 가져옴
  • 1000줄의 절차형 프로그램을 10여줄로 처리가능
  • 1000초의 수행속도를 약간의 변경으로 1초로도 향상 가능
  • 내부 처리절차를 모르는 사람은 세월이 흘러도 제자리
  • 원리 이해를 바탕으로 정석을 익히고 응용력을 키워라.

SQL 종류

구분 명령어 설명
데이터 정의어 (DDL) CREATE 테이블에서 데이터 구조를 설정, 변경 및 제거
ALTER
DROP
RENAME
TRUNCATE
데이터 질의어 (DQL) SELECT 데이터베이스에서 데이터를 검색
데이터 조작어 (DML) INSERT 데이터베이스의 테이블에서 새 행(ROW) 입력, 기존 행 변경 및 필요 없는 행 제거
UPDATE
DELETE
MERGE
트랜잭션 제어(TCL) COMMIT DML 문이 변경한 내용을 관리
ROLLBACK
데이터 제어(DCL) GRANT 데이터베이스 및 해당 구조에 대한 액세스 권한을 부여하거나 제거
REVOKE


3. 중요 데이터 유형

데이터 유형 설명
CHARACTER(s)
- 고정 길이 문자열 정보 (ORACLE, SQL Server 모두 CHAR로 표현)
- s는 기본 길이 1바이트, 최대 길이 Oracle 2,000 바이트, SQL Server 8,000 바이트
- s만큼 최대 길이를 갖고 고정 길이를 가지고 있으므로 해당 할당된 변수값의 길이가 s보다 작을 경우에는 그 차이 길이만큼 공간으로 채워진다.
VARCHAR(s)
- CHARACTER VARYING의 약자로 가변 길이 문자열 정보 (Oracle VARCHAR2로 표현, SQL ServerVARCHAR로 표현)
- s는 최소 길이 1바이트, 최대 길이 Oracle 4,000바이트, SQL Server 8,000바이트
- s만큼의 최대 길이를 갖지만 가변 길이로 조정이 되기 때문에 할당된 변수값의 바이트만 적용된다.
NUMERIC
- 정수, 실수 등 숫자 정보(OracleNUMBER, SQL Server10가지 이상의 숫자 타입을 가지고 있음)
- Oracle은 처음에 전체 자리 수를 지정하고, 그 다음 소수 부분의 자리 수를 지정한다. 예를 들어, 정수 부분이 6자리이고 소수점 부분이 2자리인 경우에는 ‘NUMBER(8,2)와 같다.
DATETIME
- 날짜와 시각 정보 (OracleDATE로 표현, SQL ServerDATETIME으로 표현)
- Oracle1초 단위, SQL Server3.33ms 단위로 관리

문자형 유형

  • VARCHAR 유형은 가변 길이이므로 필요한 영역은 실제 데이터 크기뿐이다. 그렇기 때문에 길이가 다양한 컬럼과, 정의된 길이와 실제 데이터 길이에 차이가 있는 컬럼에 적합하다. 저장 측면에서도 char 유형보다 작은 영역에 저장할 수 있으므로 장점이 있다.
  • CHAR에서는 문자열을 비교할 때 공백(BLANK)을 채워서 비교하는 방법을 사용한다. 공백 채우기 비교에서는 우선 짧은 쪽의 끝에 공백을 추가하여 2개의 데이터가 같은 길이가 되도록 한다. 그리고, 앞에서부터 한 문자씩 비교한다. 그렇기 때문에 끝의 공백만 다른 문자열은 같다고 판단된다.



4. 본 과정에 사용되는 테이블

 

HR (Human Resources) 스키마

HR (Human Resources) 스키마는 오라클 데이터베이스에서 교육용으로 제공하는예제 스키마의 일부입니다. 과정의 연습 세션에서는 HR 스키마의 데이터를 사용합니다.

테이블 설명

  • REGIONS에는 America, Asia 등과 같은 지역을 나타내는 행이 포함되어 있습니다.
  • COUNTRIES에는 국가에 대한 행이 포함되어 있으며, 각 행은 REGION과 연관되어 있습니다.
  • LOCATIONS에는 특정 국가에 있는 회사의 특정 지사, 도매점, 생산지 등의 주소가 포함되어 있습니다.
  • DEPARTMENTS는 사원의 소속 부서에 대한 세부 정보를 표시합니다. 각 부서에는 EMPLOYEES 테이블의 부서 관리자를 나타내는 관계가 있습니다.
  • EMPLOYEES에는 특정 부서에서 근무하는 각 사원에 대한 세부 정보가 포함되어 있습니다. 부서가 할당되지 않은 사원이 있을 수도 있습니다.
  • JOBS에는 각 사원이 보유할 수 있는 직무 유형이 포함되어 있습니다.
  • JOB_HISTORY에는 사원의 작업 기록이 포함되어 있습니다. 사원이 직무 내에서 부서를 변경하거나 부서 내에서 직무를 변경할 경우 새 행이 해당 사원의 이전 직무 정보와 함께 이 테이블에 삽입됩니다.
반응형

댓글