728x90
SMALL
- 이번에는 관계형 데이터베이스(RDB), 그리고 SQL에 기본인 SELECT 문과 몇 가지 함수에 대해 알아보겠습니다!
관계형 데이터베이스란?
✅ 데이터베이스는 뭐지?
- 데이터베이스는 체계화된 데이터의 모음입니다. 각 데이터베이스는 용도와 목적에 맞는 데이터들끼리 모여 저장됩니다.
- 이를 통해 데이터를 쉽게 저장, 검색, 수정, 삭제할 수 있으며, 다양한 사용자와 응용 프로그램이 데이터를 효율적으로 관리하고 액세스할 수 있는 환경을 제공합니다.
- 데이터베이스 관리 시스템(DBMS)은 이러한 데이터베이스를 생성하고 관리하는 소프트웨어입니다.
✅ 그렇다면 관계형 데이터베이스는?
- 관계형 데이터베이스(RDB)는 데이터를 2차원의 표(table) 형태로 구조화하여 관리하는 데이터베이스의 한 종류입니다.
- 각 표는 행(row)과 열(column)으로 구성되며, 데이터는 이 행과 열에 저장됩니다.
- 관계형 데이터베이스는 데이터 간의 관계를 통해 정보를 연결하고 조직하는 데 특히 유용합니다.
✅ 데이터베이스에서 말하는 표(TABLE)란?
- 테이블은 관계형 데이터베이스의 기본 단위로, 특정 정보를 저장하는 데 사용되며 일반적으로 데이터베이스는 여러 개의 테이블로 구성됩니다.
- 각 테이블은 고유한 이름을 가지며, 하나 이상의 열로 구성됩니다.
- 각 열은 고유한 데이터 유형(예: 문자열, 숫자, 날짜)을 가지며, 행은 실제 데이터인 인스턴스을 포함합니다.
✅ SQL(Structured Query Language)
- SQL(Structured Query Language)은 관계형 데이터베이스를 관리하기 위한 표준 프로그래밍 언어입니다.
- 데이터를 검색, 삽입, 수정, 삭제하는 데 사용되며, 데이터베이스 구조를 생성하고 수정하는 데에도 쓰입니다.
- SQL은 직관적이고 선언적인 문법을 가지고 있어, 데이터 관리를 간단하고 효율적으로 만듭니다.
SQL의 기본! SELECT 문!
✅ SELECT
- SELECT 문은 데이터베이스에서 특정 데이터를 조회할 때 사용합니다.
- 이 명령어는 다양한 조건을 추후에 나올 WHERE 문으로 지정하여 필요한 데이터만 선택적으로 검색할 수 있게 해줍니다.
- 컬럼을 따로 명시하지 않고 * 기호를 사용하면 전체 컬럼이 조회됩니다.
- 기본 구조는 아래와 같으며, 여러 조건과 함께 사용될 수 있습니다.
SELECT 컬럼1, 컬럼2, ... FROM 테이블 WHERE 컬럼1 = '데이터'
- 테이블명이나 컬럼에 별도의 별칭을 붙여줄 수도 있습니다! 테이블명이 비교적 긴 경우에 아래와 같이 사용됩니다.
SELECT I.NAME, C.ID
FROM INFO I, COMPANY C
WHERE I.CODE = C.CODE;
✅ 산술 연산자
- 산술 연산자를 사용하여 데이터에 대한 기본적인 산술 연산(예: 덧셈, 뺄셈, 곱셈, 나눗셈)을 수행할 수 있습니다.
- 데이터를 처리하고 결과를 조작하는 데 유용하며, 예를 들어 아래와 같이 사용할 수 있습니다.
SELECT COL1+COL2 AS A, COL1-COL2 AS S, COL1*COL2 AS M, COL1/COL2 AS D
FROM SAMPLE;
✅ 합성 연산자
- 문자와 문자를 연결할 때 사용하는 연산자이며, 아래와 같이 사용됩니다.
SELECT COL1 || ' ' || COL2 || ' ' || COL3 AS RESULT
FROM SAMPLE;
함수란?
- 함수는 데이터베이스에서 특정 작업을 수행하는 데 사용되는 미리 정의된 연산입니다.
- 다양한 유형의 함수들이 있으며, 이를 통해 문자열 처리, 숫자 계산, 날짜 조작, 데이터 타입 변환, NULL 처리 등 다양한 작업을 할 수 있습니다.
- 여기서는 자주 사용되는 함수만 우선적으로 다뤄보겠습니다.
✅ 문자 함수 9가지!
- CHR(ASCII 코드): 주어진 ASCII 코드에 해당하는 문자를 반환합니다. CHR(65)는 'A'를 반환합니다.
- LOWER(문자열): 문자열을 소문자로 변환합니다. LOWER('HELLO')는 'hello'를 반환합니다.
- UPPER(문자열): 문자열을 대문자로 변환합니다. UPPER('hello')는 'HELLO'를 반환합니다.
- LTRIM(문자열 [, 특정 문자열]): 문자열 왼쪽의 공백 또는 특정 문자열을 제거합니다. LTRIM('hello', 'h')는 'ello'를 반환합니다.
- RTRIM(문자열 [, 특정 문자열]): 문자열 오른쪽의 공백 또는 특정 문자열을 제거합니다.
- TRIM([위치] [특정 문자] [FROM] 문자열): 문자열의 시작, 끝, 또는 양쪽에서 특정 문자를 제거합니다.
- SUBSTR(문자열, 시작점, [, 길이]): 문자열의 특정 부분만을 추출합니다. SUBSTR('hello', 3, 2)는 'll'을 반환합니다.
- LENGTH(문자열): 문자열의 길이를 반환합니다.
- REPLACE(문자열, 변경 전 문자열 [, 변경 후 문자열]): 문자열 내의 특정 문자나 문자열을 다른 문자나 문자열로 변경합니다. 변경 후 문자열을 지정해주지 않으면 문자열에서 변경 전 문자열을 제거합니다.
✅ 숫자 함수 7가지!
- ABS(수): 수의 절대값을 반환합니다.
- SIGN(수): 수의 부호(+, -, 0)를 반환합니다. 양수이면 1, 음수이면 -1, 0이면 0을 반환합니다.
- ROUND(수 [, 자릿수]): 수를 지정된 자릿수까지 반올림합니다. ROUND(180.87, 1)은 180.9를 반환합니다.
- TRUNC(수, [, 자릿수]): 수를 지정된 소수점 자리까지 절삭합니다. 자릿수가 음수일 경우 지정된 정수부에서 절삭하여 반환합니다. TRUNC(183.87, -1)은 180을 반환합니다.
- CEIL(수): 수보다 크거나 같은 최소의 정수를 반환합니다.
- FLOOR(수): 수보다 작거나 같은 최대의 정수를 반환합니다.
- MOD(수1, 수2): 수1을 수2로 나눈 나머지를 반환합니다. MOD 함수의 두 번째 인자값이 0이면 첫 번째 인자값이 결과로 도출됩니다. 그리고 MOD 함수의 두 인자값이 모두 음수이면 나머지도 그대로 음수값으로 도출됩니다.
✅ 날짜 함수 3가지!
- SYSDATE: 현재 날짜와 시간을 반환합니다. 예를 들어, 함수를 실행하면 2024-02-19 18:16:38과 같이 출력됩니다.
- EXTRACT(특정 단위 FROM 날짜 데이터): 날짜에서 특정 단위(년, 월, 일 등)의 값을 추출합니다. 예를 들어, 글 작성 기준 EXTRACT(YEAR FROM SYSDATE)를 실행하면 2024가 출력됩니다.
- ADD_MONTHS(날짜 데이터, 특정 개월 수): 날짜에 특정 개월 수를 더한 날짜를 반환합니다. 날짜의 이전 달이나 다음 달에 기준 날짜의 일자가 존재하지 않으면 해당 월의 마지막 일자가 반환됩니다.
- 추가적으로 SQL에서 1 = 하루, 1/24 = 1시간, 1/24/60 = 1분을 나타냅니다.
✅ 변환 함수 4가지!
- 명시적 형변환 & 암시적 형변환: 형변환은 데이터의 타입을 다른 타입으로 변환하는 과정입니다. 명시적 형변환은 변환 함수를 사용해 수행되며, 암시적 형변환은 데이터베이스가 자동으로 수행합니다.
- TO_NUMBER(문자열): 문자열을 숫자로 변환합니다.
- TO_CHAR(수 or 날짜 [, 포맷]): 숫자나 날짜를 문자열로 변환합니다. 선택적으로 포맷을 지정할 수 있습니다.
- TO_DATE(문자열, 포맷): 문자열을 날짜로 변환합니다. 포맷을 지정하여 날짜의 형식을 명시할 수 있습니다.
✅ NULL 관련 함수 3가지!
- NVL(인수1, 인수2): 첫 번째 인수가 NULL이면 두 번째 인수를, NULL이 아니라면 첫 번째 인수를 반환합니다.
- NULLIF(인수1, 인수2): 두 인수가 같으면 NULL을, 다르면 첫 번째 인수를 반환합니다.
- COALESCE(인수1, 인수2, 인수3, ...): 인수 목록에서 최초의 NULL이 아닌 값을 반환합니다.
✅ CASE 구문
- CASE 구문은 SQL에서 조건에 따라 다른 값을 반환하거나 실행할 동작을 선택할 때 사용되는 조건부 로직입니다.
- 다른 프로그래밍 언어의 if-else 조건문과 유사한 역할을 합니다.
- CASE 구문은 두 가지 형태인 단순 CASE 구문과 검색 CASE 구문입니다.
1. 단순 CASE 구문
- 하나의 표현식을 평가하고, 그 결과에 따라 다양한 경우를 처리합니다.
- 예를 들어, 직원의 성능 평가 점수에 따라 등급을 부여하는 쿼리는 다음과 같습니다.
SELECT name, performance_score,
CASE performance_score
WHEN 90 THEN 'A'
WHEN 80 THEN 'B'
WHEN 70 THEN 'C'
ELSE 'D'
END AS grade
FROM employees;
2. 검색 CASE 구문
- 여러 조건을 평가하고, 첫 번째로 참이 되는 경우에 해당하는 결과를 반환합니다.
- 예를 들어, 직원의 급여에 따라 다른 메시지를 출력하는 쿼리는 다음과 같습니다.
SELECT name, salary,
CASE
WHEN salary >= 5000 THEN '고소득'
WHEN salary >= 3000 THEN '중간 소득'
WHEN salary < 3000 THEN '저소득'
ELSE '급여 정보 없음'
END AS income_level
FROM employees;
728x90
LIST
'자격증 > SQLD' 카테고리의 다른 글
SQL 기본 (3) (1) | 2024.02.26 |
---|---|
SQL 기본 (2) (0) | 2024.02.20 |
데이터 모델과 SQL (2) (0) | 2024.02.15 |
데이터 모델과 SQL (1) (0) | 2024.02.12 |
데이터 모델링의 이해 (3) (2) | 2024.02.10 |