본문 바로가기
자격증/SQLD

[SQLD] 3-1: SELECT 와 WHERE(feat. 연산자 & 함수 & 조건문)

by rnasterofmysea 2025. 2. 15.
728x90
반응형

 

해당 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이면 '중간소득',
  • 그 외는 '저소득'으로 분류됩니다.

 

💡 도움이 되셨다면 댓글과 공감 부탁드립니다! 😊
📌 더 많은 알고리즘 풀이와 프로그래밍 자료는 블로그에서 확인하세요!
✉️ 문의나 피드백은 댓글이나 이메일로 남겨주세요.

 

728x90
반응형