관계형 데이터베이스(Relational Database, RDB): 관계형 데이터 모델에 기초를 둔 데이터베이스
RDBMS(Relational Database Management System): RDB를 관리, 감독하기 위한 시스템
ex) Oracle, SQL Server(MSSQL), MySQL, MariaDB, PostgreSQL

Column: A, B, C, D 등의 세로 열Row: 1, 2, 3, 4 등의 가로 행SELECT 컬럼1, 컬럼2, ... FROM 테이블 WHERE 컬럼1='아무개';
SELECT * FROM 테이블 WHERE 컬럼1='아무개';
-> 전체 컬럼 조회
SELECT USED_GOODS_BOARD.TITLE, USED_GOODS_BOARD.BOARD_ID
FROM USED_GOODS_BOARD
=
SELECT B.TITLE, B.BOARD_ID
FROM USED_GOODS_BOARD (AS) B
| 연산자 | 의미 | 우선순위 |
|---|---|---|
| () | 괄호로 우선순위를 조정할 수 있음 | 1 |
| * | 곱하기 | 2 |
| / | 나누기(0으로 나눌 경우 에러 발생) | 2 |
| + | 더하기 | 3 |
| - | 빼기 | 3 |
| % (SQL Server) | 나머지(0으로 나눌 경우 NULL 반환) | 3 |
사용방법
'문자' || '문자'
컬럼명 || '문자'
SELECT F_NAME || '의 키는 ' || HEIGHT || 'cm 이고 몸무게는 ' || WEIGHT || 'kg 입니다!' FROM FAMILY
->
아빠의 키는 175cm 이고 몸무게는 68kg 입니다!
CHR(ASCII코드): ASCII 코드를 인수로 입력했을 때 매핑되는 문자가 무엇인지 알려줌SELECT CHR(65) FROM DUAL;
-> A
LOWER(문자열): 문자열을 소문자로 변환SELECT LOWER('GYODON') FROM DUAL;
-> gyondon
UPPER(문자열): 문자열을 대문자로 변환SELECT UPPER(gyodon) FROM DUAL;
-> GYODON
LTRIM(문자열[, 특정문자: 옵션임])SELECT LTRIM(' GYDON') FROM DUAL;
-> GYODONSELECT LTRIM('GGGGGGGYODON', 'GY') FROM DUAL;
-> ODON
RTRIM(문자열, [, 특정 문자: 옵션])
default: 문자열의 오른쪽 공백 제거
SELECT RTRIM('GYODON ') FROM DUAL;
-> GYODON
특정 문자를 명시한 경우: 문자열을 오른쪽부터 한 글자씩 특정 문자와 비교하여 특정 문자에 포함되어 있으면 제거, 포함되지 않았으면 멈춤
SQL
SELECT RTRIM('GYODON', 'ON') FROM DUAL;
-> GYOD
TRIM([위치:옵션, LEADING OR TRAILING OR BOTH], [특정 문자:옵션, 한 글자만 지정 가능], [FROM:옵션] 문자열)
defalt: 문자열의 왼쪽과 오른쪽 공백 제거
SELECT TRIM ( 'GYODON' ) FROM DUAL;
-> GYODON
else: 위치로 지정된 곳부터 한 글자씩 특정 문자와 비교하여 같으면 제거, 같지 않으면 멈춤
SELECT TRIM(LEADING 'G' FROM 'GYODON') FROM DUAL;
-> YODON
SELECT TRIM(TRAILING 'N' FROM 'GYODON') FROM DUAL;
-> GYODO
SUBSTR(문자열, 시작점 [, 길이: 옵션]): 시작점에서 길이만큼의 서브 문자열 반환
SELECT SUBSTR('GYODON', 3, 2) FROM DUAL;
-> OD
LENGTH(문자열): 문자열의 길이 반환
SELECT LENGTH('GYODON') FROM DUAL;
-> 6
REPLACE(문자열, 변경 전 문자열[, 변경 후 문자열: 옵션])
변경 후 문자열 입력 시: 문자열에서 변경 전 문자열을 찾아 변경 후 문자열로 바꿔줌
SELECT REPLACE('GYODON_HAN', 'HAN', 'UNN') FROM DUAL;
-> GYODON_UNN
default: 문자열에서 변경 전 문자열 제거
SELECT REPLACE('GYODON_HAN', '_HAN') FROM DUAL;
-> GYODON
LPAD(문자열, 길이, 문자): 문자열이 설정한 길이가 될 때까지 왼쪽을 특정 문자로 채움
SELECT LPAD('GYODON', '🩶') FROM DUAL;
-> 🩶🩶🩶🩶GYODON
ABS(NUMBER): 수의 절댓값 반환SELECT ABS(-7) FROM DUAL;
-> 7
SIGN(NUMBER)SELECT SIGN(100) FROM DUAL;
-> 1
ROUND(NUMBER [, 자릿수: 옵션])SELECT ROUND(223.55, -2) FROM DUAL;
-> 200
TRUNC(수 [, 자릿수: 옵션])SELECT TRUNC(223.55) FROM DUAL;
-> 223.5
CEIL(NUMBER): 소수점 이하의 수를 올림한 정수 반환SELECT CEIL(-223.55) FROM DUAL;
-> -223
FLOOR(NUMBER): 소수점 이하의 수를 버림한 정수 반환SELECT FLOOR(-223.55) FROM DUAL;
-> 224
MOD(num1, num2): num1 을 num2로 나눈 나머지 반환. SELECT MOD(-15, -4) FROM DUAL;
-> -3
SYSDATE: 현재의 연, 월, 일, 시, 분, 초 반환SELECT SYSDATE FROM DUAL;
-> 2025-05-27 02:19:08
EXTRACT(특정 단위 FROM 날짜 데이터): 날짜 데이터에서 YEAR, MONTH, DAY, HOUR, MINUTE, SECOND 와 같은 특정 단위만 출력하여 반환SELECT EXTRACT(YEAR FROM SYSDATE) AS YEAR FROM DUAL;
-> 2025
ADD_MONTHS(날짜 데이터, 특정 개월 수): 날짜 데이터에서 특정 개월 수를 더한 날짜를 반환SELECT ADD_MONTH(DATE '2025-01-31', 1) FROM DUAL;
-> 2025-02-28
명시적 형변환: 변환 함수를 사용하여 데이터 유형 변환을 명시적으로 나타냄
TO_NUMBER(문자열): 문자열을 숫자형으로 변환SELECT TO_NUMBER('1234') FROM DUAL;
-> 1234
TO_CHAR(수 or 날짜[, 포맷]): 수나 날짜형의 데이터를 포맷 형식의 문자형으로 변환SELECT TO_CHAR(1234) FROM DUAL;
-> 1234(문자열)
TO_DATE(문자열, 포맷): 포맷 형식의 문자형의 데이터를 날짜형으로 변환
| 포맷 표현 | 의미 |
|---|---|
| YYYY | 년 |
| MM | 월 |
| DD | 일 |
| HH | 시(12) |
| HH24 | 시(24) |
| MI | 분 |
| SS | 초 |
SELECT TO_DATE('2025-05-27', YYYYMMDD) FROM DUAL;
-> 2025-05-27(날짜 타입)
묵시적 형변환: 데이터베이스가 내부적으로 알아서 데이터 유형 변환
ex) 조건절에서 VARCHAR 유형의 BIRTHDAY 컬럼을 숫자와 비교할 경우, 데이터베이스는 내부적으로 BIRTHDAY 컬럼을 NUMBER 형으로 변환
NVL(인수1, 인수2): 인수1의 값이 NULL일 경우 인수2 반환, NULL이 아닐 경우 인수1 반환NVL(GRADE, 0)
-> GRADE 가 NULL 일 경우 0 반환, NULL 이 아닐 경우 GRADE 값 반환
NULLIF(인수1, 인수2)NULLIF(GRADE, 'F')
-> GRADE 가 F 인 경우 NULL 반환, 아닐 경우 GRADE 값 반환
COALESCE(인수1, 인수2, 인수3, ...): NULL 이 아닌 최초의 인수 반환SELECT NAME, COALESCE(PHONE, PARENTS_PHONE, EMAIL) AS CONTACT FROM STUDENT;
NVL2(인수1, 인수2, 인수3)SELECT NAME, NVL2(PHONE, '연락처있음', '연락처 없음') FROM STUDENT;
CASE: ~이면 ~이고, ...이면 ...이다CASE WHEN GATE='1' THEN 'EAST'
WHEN GATE='2' THEN 'SOUTH'
WHEN GATE='3' THEN 'WEST'
[ELSE 'NORTH']
END
DECODE: CASE 와 같은 기능DECODE(GATE, '1', 'EAST', '2', 'SOUTH', '3', 'WEST' [, 'NORTH'])