SJ_Koding

SQLD 대비 (6) - SQL 문법 및 라이브러리_1 본문

SQL/SQLD

SQLD 대비 (6) - SQL 문법 및 라이브러리_1

성지코딩 2023. 11. 13. 22:27
 

SQLD 대비 (5) - 관계형 데이터베이스 (RDBMS)

과목 II 시작 ! 노랭이 책으로 과목 I을 모두 풀고 오답정리까지 마무리했다. SQLD 대비 (4) - 성능 데이터 모델링 및 정규화/반정규화, 데이터베이스 2023.11.11 - [SQL/SQLD] - SQLD 대비 (3) - 식별자(Identifie

sjkoding.tistory.com

이전 글과 이어지는 글입니다. 해당 정리글은 아래의 유튜브 영상을 참고하여 만들었습니다. 문제 시 삭제하겠습니다.
빨간색 형광펜은 강의에서 강조한 부분, 노란색 형광펜은 추가 서치로 내용을 '직접' 보강한 부분입니다.

SQL문법은 워낙 익숙해서 영상 교재와 다르게 핵심만 요약합니다.

SELECT (조회)

SELECT문

  • 테이블내 저장된 데이터를 조회하기 위해 사용
  • 특정 행 또는 특정 컬럼을 조회할 수 있음
SELECT *
FROM user
WHERE id = 'super'

SELECT COL1, COL2
FROM user
WHERE id = 'super'

 

ORDER BY (정렬)

  • 오름차순, 내림차순 정렬
  • 가장 나중에 실행
  • 메모리를 많이 사용하며 SQL이 느려짐
  • 대용량일 경우 한 번 고민해야함
  • order by의 기본값은 오름차순
  • 인덱스를 사용하여 정렬 과정을 회피할 수도 있음
SELECT * /* + INDEX_DESC(A) */
FROM user

 

DISTINCT (중복제거)

  • DISTINCT는 SELECT절의 컬럼 앞에 위치하며 중복을 제거한 결과를 출력함
  • 파이썬에서 set연산을 수행한다고 생각하자

 

Alias (as)

SELECT type as '유형'
FROM user;

*type의 컬럼명을 '유형'으로 대체 후 출력 (as를 생략해도 된다.)

 

WHERE (조건절)

  • Where절은 SQL에서 조건을 줄 때 사용한다.
  • 원하는 특정 행(튜플)만 출력하기 원할 때 사용
  • 비교 연산자, SQL연산자
SELECT *
FROM A
WHERE
    = /* ~와 같다 */
    < /* ~보다 작다 */
    > /* ~보다 크다 */
    !=, <> /* ~가 아니다*/
    NOT 컬럼명 = /* ~가 아니다 */
    LIKE '%문자%' /* '문자가 들어간 것 */
    IN (1, 2, 3) /* 1, 2, 3인 것 */
    IS NOT NULL /* NULL이 아닌 것 */
    IS NULL /* NULL인 것 */

DUAL 테이블

  • Dual 테이블은 오라클에서 임시로 사용 할 수 있는 더미 테이블이다.
  • 간단하게 함수를 테스트 하거나, 데이터를 테스트 할 때 사용 할 수 있다.
  • 모든 사용자에게 권한이 열려 있다.
SELECT 1, 2, 3
FROM dual;

 

NULL

  • NULL이란 데이터 정의가 없는 것
  • NULL은 알 수 없는 값을 의미
  • NULL을 이용하여 숫자나 날짜 연산을 하면 무조건 NULL
SELECT *
FROM user
WHERE phone IS NULL

 

문자함수 (내장함수에 속함)

  • 데이터베이스내 함수들 가운데 내장함수
  • 내장함수에서 문자를 다루는 문자함수
  • lower/upper
SELECT 	temp as 원본, UPPER(temp) as 소문자, UPPER(temp) as 대문자
		LENGTH(temp) as 길이, 
        SUBSTR(temp, 2, 2) as substr_ /*2번째 글자부터 2번째 글자 추출 (idx가 1부터 시작임)*/
        INSTR(temp, 'A') as instr_ /*( 'A'글자의 인덱스를 반환 (1부터) )*/
        LPAD(temp, 10, 'A') as lpad /*왼쪽 'A'로 패딩*/
        REPLACE(temp, 'A', '@') /* 'A'를 '@'로 변환후 출력 */
        
FROM temp_table;

 

숫자함수 (내장함수에 속함)

round(num, n): num의 소숫점 n자리에서 반올림. 단, 음수일 경우 -1은 십의 자리, -2는 백의자리를 의미

SELECT round(112.3456, 1), round(112.3456, 2), round(112.3456, -1), round(112.3456, -2)
FROM DUAL

출력 결과

truncate(num, n): n의 자리에서 자름

SELECT truncate(112.3456, 2), truncate(112.3456, 1), truncate(112.3456, 0), truncate(112.3456, -1)
FROM DUAL

출력결과

ceil / floor(num) : num을 올림하거나 내림

SELECT ceil(26.3), floor(26.3), ceil(11.9), floor(11.9)
FROM DUAL

출력결과