책 리뷰/초보자를 위한 SQL 200제

[Day4/30] 초보자를 위한 SQL 200제

조조링 2024. 10. 29. 15:48
728x90
반응형

 

 

이 카테고리는 정보문화사의 "초보자를 위한 SQL 200제" 30일 코스를 학습 하면서 실습한 내용입니다. 

 

 

1. 대소문자 변환 함수 배우기 (UPPER, LOWER, INITCAP)

사원 테이블의 이름을 출력하는데, 첫 번째 컬럼은 이름을 대문자로, 두 번째 컬럼은 소문자로 출력하고, 세 번째 컬럼은 이름의 첫 번째 철자는 대문자로 하고 나머지는 소문자로 출력

 

SELECT UPPER(ename), LOWER(ename), INITCAP(ename)
    FROM emp

 

  • UPPER: 대문자로 출력
  • LOWER: 소문자로 출력
  • INITCAP: 첫 번째 철자만 대문자로 출력, 나머지는 소문자로 출력
  • UPPER, LOWER 함수는 테이블 내 특정 문자 데이터를 검색하고자 할 때 데이터가 대문자인지 소문자로 저장되어 있는지 확실하지 않을 때 정확한 데이터 검색을 위해 사용

 

 

 

이름이 scott인 사원의 이름과 월급 조회 (이름이 소문자, 대문자인지 모를 때)

 

SELECT ename, sal
    FROM emp
    WHERE LOWER(ename) = 'scott';

 

 

 

 

 

2. 문자에서 특정 철자 추출하기 (SUBSTR)

영어 단어 SMITH에서 SMI만 잘라내서 출력

 

SELECT SUBSTR('SMITH',1,3)
    FROM DUAL;
  • SUBSTR(문자, a, b): 문자에서 특정 위치의 문자열 추출
    • a: 추출할 철자의 시작 위치 번호
    • b: 시작 위치로부터 몇 개의 철자를 추출할 지, 생략 시 끝까지 추출
    • SUBSTR(’SMITH’,-2,2): -2 자리인 T부터 두 개의 철자를 추출해서 TH 반환

 

 

3. 문자열의 길이 출력 (LENGTH)

이름을 출력하고 그 옆에 이름의 철자 개수 출력

 

SELECT ename, LENGTH(ename)
    FROM emp;

 

 

 

4. 문자에서 특정 철자의 위치 출력하기 (INSTR)

사원 이름 SMITH에서 알파벳 철자 M이 몇 번째 자리에 있는지 출력

 

SELECT INSTR('SMITH','M')
    FROM DUAL;
  • INSTR: 문자에서 특정 철자의 위치를 출력하는 함수

 

 

 

abcdefgh@naver.com에서 naver.com만 출력

 

SELECT SUBSTR('abcdefg@naver.com', INSTR('abcdefg@naver.com','@')+1)
    FROM DUAL;

 

 

 

 

5. 특정 철자를 다른 철자로 변경하기 (REPLACE)

이름과 월급을 출력하는데, 월급을 출력할 때 숫자 0을 *로 출력

 

SELECT ename, REPLACE(sal, 0, '*')
    FROM emp;
  • REPLACE: 특정 철자를 다른 철자로 변경하는 문자 함수

 

 

이름과 월급을 출력하는데, 월급의 숫자 -~3까지를 *로 출력

 

SELECT ename, REGEXP_REPLACE(sal, '[0-3]', '*') as SALARY
    FROM emp;
  • REGEXP_REPLACE: 정규식 함수로, 더 복잡한 형태의 검색패턴으로 데이터를 조회할 수 있게 해주는 함수

 

 

이름의 두 번째 자리의 한글을 *로 출력

 

SELECT REPLACE(ENAME, SUBSTR(ENAME, 2,1), '*') as "전광판_이름"
    FROM test_ename;

 

 

 

6. 특정 철자를 N개 만큼 채우기 (LPAD, RPAD)

이름과 월급을 출력하는데, 월급 컬럼의 자릿수를 10자리로 하고, 월급을 출력하고 남은 나머지 자리에 *를 채워서 출력

 

SELECT ename, LPAD(sal, 10, '*') as salary1, RPAD(sal, 10, '*') as salary2
    FROM emp;
  • KING의 월급은 5000으로 4자리여서 나머지 6자리에 *를 채워서 출력
  • LPAD의 뜻이 "왼쪽으로 채워 넣다"여서 왼쪽으로 *를 채우고 있다.

  • LPAD나 RPAD를 이용하면 SQL로 데이터를 시각화하기 유용

 

 

 

7. 특정 철자 잘라내기 (TRIM, RTRIM, LTRIM)

첫 번째 컬럼은 영어 단어 smith 철자를 출력하고, 두 번째 컬럼은 s를 잘라서 출력하고, 세 번째 컬럼은 h를 잘라서 출력하고, 네 번째 컬럼은 'smiths' 양쪽에 s를 잘라서 출력

 

SELECT 'smith', LTRIM('smith','s'), RTRIM('smith','h'), TRIM('s' from 'smiths')
    FROM dual;

 

 

 

임의로 JACLK 사원 데이터를 입력할 때 JACLK 오른쪽에 공백 하나 넣어서 입력 (INSERT) 후 검색

 

INSERT INTO emp(empno, ename, sal, job, deptno) values(8291, 'JACLK ',3000,'SALESMAN', 30);
commit;

SELECT ename, sal
    FROM emp
    WHERE ename='JACLK';  # 출력안됨

SELECT ename, sal
    FROM emp
    WHERE RTRIM(ename) = 'JACLK';
  • RTRIM(ename) = 'JACLK'으로 JACLK 데이터 검색할 때 사원 이름 오른쪽에 있는 공백 제거하고 검색

 

 

 

 

8. 반올림해서 출력하기 (ROUND)

876.567 숫자를 출력하는 데 소수점 두 번째 자리인 6에서 반올림, 일의 자리에서 반올림 출력

 

SELECT '876.567' as 숫자, ROUND(876.567,1), ROUND(876.567,-1)
    FROM dual;

728x90
반응형