안녕하세요. 작가 J입니다. 오늘은 DBMS, SQL, 그리고 다양한 SQL 절에 대해 알아보겠습니다. 비전공자도 쉽게 이해할 수 있도록 기초부터 차근차근 설명드리겠습니다.
1. DBMS란?
DBMS(Database Management System)는 데이터를 효율적으로 저장, 관리, 검색할 수 있도록 도와주는 소프트웨어 시스템입니다. 쉽게 말해 DBMS는 도서관과 비슷합니다. 도서관은 많은 책을 체계적으로 정리하고, 필요한 책을 쉽게 찾을 수 있도록 돕습니다. DBMS도 마찬가지로 많은 데이터를 체계적으로 정리하고, 필요한 데이터를 쉽게 검색할 수 있도록 도와줍니다.
여러분이 특정 책을 가져온다고 가정합시다. 왼쪽에 책 몇 권이 있습니다. 아마 여러분은 빠른 속도로 책을 찾아서 가져올 수 있을 겁니다. 오른쪽에는 책 몇십 권이 있습니다. 물론 시간은 걸리겠지만 원하는 책을 가져올 수 있을 겁니다.
하지만, 이렇게 방대하고 많은 양의 책이라면 여러분은 쉽게 원하는 책을 찾을 수 없을 것 입니다. DBMS는 이런 방대한 데이터 속에서 여러분이 원하는 데이터를 저장, 검색, 보안, 관리할 수 있게 도와주는 역할을 합니다.
DBMS의 주요 기능은 다음과 같습니다:
- 데이터 저장: 데이터를 테이블 형태로 저장하여 구조화합니다.
- 데이터 검색: 데이터를 빠르고 효율적으로 검색할 수 있습니다.
- 데이터 보안: 데이터의 무결성과 보안을 유지합니다.
- 데이터 관리: 데이터를 삽입, 수정, 삭제하는 기능을 제공합니다.
대표적인 DBMS로는 오라클(Oracle), MySQL, PostgreSQL, SQL Server 등이 있습니다.
2. SQL이란?
SQL(Structured Query Language)은 관계형 데이터베이스에서 데이터를 정의, 조작, 제어하기 위해 사용되는 표준 언어입니다. SQL은 인간의 언어와 비슷하게 데이터베이스와 소통할 수 있는 수단입니다. 예를 들어, 우리가 다른 사람에게 질문을 하거나 요청을 하듯이, SQL을 사용하여 데이터베이스에게 질문을 하거나 요청할 수 있습니다.
위 그림 처럼 데이터베이스에게 우리 언어로 질의를 하게 되면, 데이터베이스는 알아먹지 못합니다.
SQL로 질의하게 되면, 데이터베이스는 우리가 필요로 하는 데이터를 전달해 줍니다.
3. SELECT 절이란?
SELECT 절은 SQL에서 가장 기본이 되는 명령어로, 데이터베이스에서 데이터를 조회할 때 사용됩니다. 실제로, 저의 경험에 따르면 SELECT 절만 제대로 알고 있어도 현업에서 업무를 수행하는 데 큰 지장이 없습니다. SELECT 절을 통해 데이터를 조회하고 분석하는 것이 대부분의 데이터베이스 작업의 시작이자 핵심이기 때문입니다. 기본 구조는 다음과 같습니다.
위는 SELECT 절을 부분으로 해석한 것입니다. 위는 학생테이블에서 이름이 홍길동인 전체 데이터를 조회해서 가져오는 SQL 문입니다.
1. 특정 열 가져오기
특정 열만 선택하려면 열 이름을 지정합니다. 모든 열을 선택하려면 *를 사용합니다.
SELECT first_name, last_name FROM employees;
2. 가져오는 데이터 중복 제거
DISTINCT 키워드를 사용하여 중복된 값을 제거하고 고유한 값만 선택할 수 있습니다.
SELECT DISTINCT department_id FROM employees;
3. 가져오는 데이터의 별칭 사용
AS 키워드를 사용하여 열이나 테이블의 별칭을 지정할 수 있습니다. 주의할 점은 별칭에 공백이 포함될 경우, 따옴표로 묶어야 합니다.
SELECT first_name AS 이름, last_name AS 성 FROM employees;
별칭을 지정하는 방법은 3가지가 있습니다.
- 직접지정
- SELECT first_name 이름 FROM employees;
- AS 키워드 사용
- SELECT first_name AS 이름 FROM employees;
- 따옴표 사용
- SELECT first_name AS "이름" FROM employees;
여러분들이 입사하시는 회사에 표준이 있을 겁니다. 표준에 따라 작성하시길 추천드립니다.
4. 조건 지정
WHERE 절을 사용하여 조건을 지정할 수 있습니다.
SELECT * FROM employees WHERE department_id = 90;
emplyees 테이블에서 department_id가 90인 전체 데이터 조회.
5. 정렬
ORDER BY 절을 사용하여 데이터를 정렬할 수 있습니다. 기본적으로 오름차순 정렬하며, 내림차순 정렬을 원할 경우 DESC를 사용합니다.
SELECT first_name, last_name FROM employees ORDER BY first_name ASC;
뒤에 ASC 혹은 DESC를 생략하는 경우, 기본적으로 ASC로 정렬됩니다. ASC는 ASCENDING(오름차순), DESC는 DESCENDING(내림차순)의 약자입니다.
6. NULL 값 처리
NULL은 데이터베이스에서 '값이 없음'을 나타냅니다. NULL 값을 비교할 때는 IS NULL 또는 IS NOT NULL을 사용합니다.
SELECT first_name, last_name FROM employees WHERE commission_pct IS NULL;
employees 테이블에서 commission_pct가 NULL인 데이터의 first_name, last_name 조회.
4. SQL 실행 순서
SQL 명령어는 작성된 순서와는 다르게 특정 순서로 실행됩니다. 기본적인 실행 순서는 다음과 같습니다:
- FROM: 데이터를 조회할 테이블을 지정합니다.
- WHERE: 조건에 맞는 데이터를 필터링합니다.
- GROUP BY: 데이터를 그룹으로 묶습니다.
- HAVING: 그룹화된 데이터에 조건을 적용합니다.
- SELECT: 조회할 열을 선택합니다.
- ORDER BY: 데이터를 정렬합니다.
예를 들어, 다음 SQL 명령어의 실행 순서를 살펴보겠습니다.
SELECT first_name, COUNT(*)
FROM employees
WHERE department_id = 90
GROUP BY first_name
HAVING COUNT(*) > 1
ORDER BY first_name;
- FROM employees
- WHERE department_id = 90
- GROUP BY first_name
- HAVING COUNT(*) > 1
- SELECT first_name, COUNT(*)
- ORDER BY first_name
5. 오라클 자료형
오라클 데이터베이스에서 사용되는 주요 자료형은 다음과 같습니다.
자료형 | 설명 | 예시 |
VARCHAR2(size) | 가변 길이 문자열 | VARCHAR2(50) |
NUMBER(p,s) | 숫자 (p: 전체 자릿수, s: 소수점 이하 자릿수) | NUMBER(10,2) |
DATE | 날짜와 시간 (년, 월, 일, 시, 분, 초) | DATE |
TIMESTAMP | 날짜와 시간 (년, 월, 일, 시, 분, 초, 밀리초) | TIMESTAMP |
CHAR(size) | 고정 길이 문자열 | CHAR(10) |
CLOB | 대용량 문자 데이터 | CLOB |
BLOB | 대용량 이진 데이터 (이미지, 비디오 등) | BLOB |
예를 들어, employees 테이블의 구조는 다음과 같습니다.
CREATE TABLE employees (
employee_id NUMBER(6),
first_name VARCHAR2(20),
last_name VARCHAR2(25),
email VARCHAR2(25),
phone_number VARCHAR2(20),
hire_date DATE,
job_id VARCHAR2(10),
salary NUMBER(8,2),
commission_pct NUMBER(2,2),
manager_id NUMBER(6),
department_id NUMBER(4),
created_at TIMESTAMP
);
마무리
이번 포스팅에서는 DBMS란 무엇인지, SQL이란 무엇인지, SELECT 절, SQL 실행 순서, 오라클 자료형, *, DISTINCT, AS, ORDER BY 절, NULL에 대해 알아보았습니다. SELECT 절만 잘 이해하고 사용해도 현업에서 많은 데이터를 효과적으로 조회하고 분석할 수 있습니다.
다음 포스팅에서는 WHERE 절, 연산자, NULL 조건 등 더욱 심화된 내용에 대해 다룰 예정입니다. 감사합니다!
'프로그래밍 기초 > Oracle' 카테고리의 다른 글
[Oracle] 오라클 데이터베이스 11g와 SQL Developer 설치 및 사용법 (0) | 2024.06.30 |
---|---|
[Oracle] 오라클 데이터베이스 11g 설치와 SQL 명령어 사용 방법 (0) | 2024.06.29 |
[Oracle] 비전공자를 위한 관계형 데이터베이스와 SQL 기초 (0) | 2024.06.26 |
[Oracle] 비전공자를 위한 데이터베이스 기초: 데이터베이스란 무엇인가? (0) | 2024.06.22 |