해당 SQL문은 Oracle DB의 SQL문입니다.
SQLD Chapter 3-1: SELECT 문 기본 구조 & 함수 활용
1. SELECT 기본
SQL에서 데이터를 조회하기 위해 가장 기본적으로 사용되는 명령어가 SELECT 문입니다. SELECT 문을 사용하면 데이터베이스 테이블에서 원하는 데이터를 조회할 수 있습니다.
1.1 SELECT 문 기본 구문
SELECT 열_이름1, 열_이름2
FROM 테이블_이름
WHERE 조건;
1.2 SELECT 문 예제
SELECT Name, Email
FROM Customers
WHERE Age > 25;
위의 예제는 Customers 테이블에서 Age가 25보다 큰 고객의 Name과 Email을 조회하는 SQL 문입니다.
2. ALIAS 사용
ALIAS(별칭)는 컬럼이나 테이블에 임시로 별명을 부여하는 기능을 합니다. AS 키워드를 사용하거나 생략할 수 있습니다.
2.1 컬럼에 ALIAS 적용
SELECT Name AS CustomerName, Email AS Contact
FROM Customers;
2.2 테이블에 ALIAS 적용
SELECT C.Name, C.Email
FROM Customers C;
시험 유의사항:
- AS 키워드는 생략 가능합니다.
- 테이블에 별칭(Alias)을 설정했을 경우, 컬럼을 호출할 때도 반드시 별칭을 사용해야 합니다.
잘못된 예제:
SELECT T.COL_ALIAS
FROM TABLE_NAME T
WHERE COL_ALIAS = 'A';
올바른 예제:
SELECT T.COL AS COL_ALIAS
FROM TABLE_NAME T
WHERE T.COL = 'A';
3. 연산자
3.1 산술 연산자(Arithmetic Operators)
- + : 덧셈
- - : 뺄셈
- * : 곱셈
- / : 나눗셈
- MOD(n, m): 나머지 연산
SELECT 10 + 5 AS Addition, 10 - 5 AS Subtraction, 10 * 5 AS Multiplication, 10 / 5 AS Division, MOD(10, 3) AS Modulus FROM DUAL;
3.2 합성 연산자(Concatenation Operators)
- 문자열을 연결할 때 사용됩니다.
SELECT 'Hello' || ' ' || 'World' AS Greeting FROM DUAL;
시험 유의사항:
- || 연산자는 Oracle에서 문자열 결합에 사용되며, 다른 DBMS(MySQL 등)에서는 CONCAT() 함수를 사용해야 함.
- Oracle: '||'
- SQL Server: '+'
- Oracle, SQL Server 둘다 CONCAT() 함수 사용 가능
4. 함수(Function) 활용
4.1 문자 함수(String Functions)
- UPPER(str): 문자열을 대문자로 변환
SELECT UPPER('sql') AS UpperCase FROM DUAL;
- LOWER(str): 문자열을 소문자로 변환
SELECT LOWER('SQL') AS LowerCase FROM DUAL;
- LENGTH(str): 문자열 길이를 반환
SELECT LENGTH('Database') AS Length FROM DUAL;
- SUBSTR(str, start, length): 문자열에서 특정 위치의 일부를 반환
SELECT SUBSTR('Oracle SQL', 8, 3) AS SubString FROM DUAL;
- CHR(n): ASCII 코드 값을 해당 문자로 변환
SELECT CHR(65) AS AsciiChar FROM DUAL;
- RTRIM(str): 문자열의 오른쪽 공백 제거
SELECT RTRIM('Hello ') AS TrimmedRight FROM DUAL;
- LTRIM(str): 문자열의 왼쪽 공백 제거
SELECT LTRIM(' Hello') AS TrimmedLeft FROM DUAL;
- TRIM(str): 문자열의 양쪽 공백 제거
SELECT TRIM(' Hello ') AS Trimmed FROM DUAL;
- REPLACE(str, old, new): 특정 문자열을 다른 문자열로 변경
SELECT REPLACE('SQLD Exam', 'Exam', 'Certification') AS ReplacedText FROM DUAL;
시험 유의사항:
- LENGTH() 함수는 공백도 문자열 길이에 포함됨.
- SUBSTR() 함수는 1부터 시작, 음수 값을 사용하면 문자열 뒤에서부터 가져옴.
4.2 숫자 함수(Numeric Functions)
- ABS(n): 절대값 반환
SELECT ABS(-10) AS AbsoluteValue FROM DUAL;
- MOD(n, m): 나머지 연산 수행
SELECT MOD(10, 3) AS Modulus FROM DUAL;
- ROUND(n, d): n을 d자리에서 반올림
SELECT ROUND(123.456, 2) AS Rounded FROM DUAL;
- TRUNC(n, d): n을 d자리에서 절삭
SELECT TRUNC(123.456, 2) AS Truncated FROM DUAL;
- FLOOR(n): 주어진 숫자 이하의 가장 큰 정수 반환
SELECT FLOOR(5.9) AS Floored FROM DUAL;
시험 유의사항:
- ROUND() 함수는 반올림, TRUNC()는 절삭(버림) 연산을 수행하므로 결과 값이 다를 수 있음.
4.3 날짜 함수(Date Functions)
- SYSDATE: 현재 날짜와 시간 반환
SELECT SYSDATE AS CurrentDate FROM DUAL;
- ADD_MONTHS(date, n): 특정 날짜에 n개월을 더함
SELECT ADD_MONTHS(SYSDATE, 3) AS ThreeMonthsLater FROM DUAL;
- LAST_DAY(date): 해당 월의 마지막 날 반환
SELECT LAST_DAY(SYSDATE) AS EndOfMonth FROM DUAL;
시험 유의사항:
- SYSDATE는 시간을 포함하므로, 날짜 비교 시 TRUNC(SYSDATE)를 사용하여 시간 제거 가능.
4.4 패턴 검색 함수
- LIKE 연산자: 특정 패턴을 포함하는 문자열 검색 (와일드카드 %, _ 사용)
1) _ : 정확히 하나의 문자와 일치
SELECT * FROM 직원 WHERE 이름 LIKE '김_수';
→ '김X수' 형식의 이름 검색 (김철수, 김민수 등)
2) %가 앞에 있을 경우: 특정 문자열로 끝나는 검색
SELECT * FROM 직원 WHERE 이름 LIKE '%수';
→ '수'로 끝나는 모든 직원 검색
3) %가 뒤에 있을 경우: 특정 문자열로 시작하는 검색
SELECT * FROM 직원 WHERE 이름 LIKE '김%';
→ '김'으로 시작하는 모든 직원 검색
4) %가 양쪽에 있을 경우: 특정 문자열이 포함된 검색
SELECT * FROM 직원 WHERE 이름 LIKE '%철%';
→ '철'을 포함하는 모든 직원 검색 (김철수, 박철민 등)
5) %를 문자로 인식하려면 ESCAPE 사용
SELECT * FROM 문서 WHERE 내용 LIKE '100%%' ESCAPE '%';
→ '100%'가 포함된 문서 검색
6) LIKE 연산자에서 와일드카드 없이 사용하면?
SELECT * FROM 직원 WHERE 이름 LIKE '김철수';
🔹 위 쿼리는 다음과 동일함:
SELECT * FROM 직원 WHERE 이름 = '김철수';
즉, LIKE 연산자를 와일드카드 없이 사용하면 해당 값과 정확히 일치하는 데이터만 검색합니다.
5. 조건문 CASE 문과 DECODE 문
5.1. CASE 문
CASE 문은 조건에 따라 다른 값을 반환하는 SQL 표현식입니다. 복잡한 조건을 다룰 수 있으며, 다양한 DBMS에서 사용 가능합니다.
1) 사용법
CASE
WHEN 조건1 THEN 결과1
WHEN 조건2 THEN 결과2
ELSE 기본값
END
2) 예제
SELECT 직원명, 급여,
CASE
WHEN 급여 >= 5000 THEN '고소득'
WHEN 급여 >= 3000 THEN '중간소득'
ELSE '저소득'
END AS 소득구분
FROM 직원;
- 급여가 5000 이상이면 '고소득',
- 3000 이상이면 '중간소득',
- 그 외는 '저소득'으로 분류됩니다.
5.2. DECODE 문
DECODE 문은 특정 값에 대한 매핑을 처리하는 Oracle 전용 함수입니다. 간단한 값 비교와 변환을 할 때 유용합니다.
1) 사용법
DECODE(컬럼명, 조건1, 결과1, 조건2, 결과2, ..., 기본값)
2) 예제
SELECT 직원명, 급여,
DECODE(급여, 5000, '고소득', 3000, '중간소득', '저소득') AS 소득구분
FROM 직원;
- 급여가 5000이면 '고소득',
- 3000이면 '중간소득',
- 그 외는 '저소득'으로 분류됩니다.
💡 도움이 되셨다면 댓글과 공감 부탁드립니다! 😊
📌 더 많은 알고리즘 풀이와 프로그래밍 자료는 블로그에서 확인하세요!
✉️ 문의나 피드백은 댓글이나 이메일로 남겨주세요.
'자격증 > SQLD' 카테고리의 다른 글
[SQLD] 3-3: 논리적 JOIN (조인)의 모든 것 (0) | 2025.02.16 |
---|---|
[SQLD] 3-2: GROUP BY & HAVING & ORDER (0) | 2025.02.16 |
[SQLD] Part 3: SQL 기본 (1) | 2025.02.14 |
[SQLD] 2-2: 트랜잭션(Transaction)/ 널(NULL) / (0) | 2025.02.14 |
[SQLD] 2-1: 정규화(Normalization)와 반정규화(Denormalization) (0) | 2025.02.13 |