Tiny Star

📊DataBase/📈SQL

[🪪SQLD] 2과목 - SQL 기본 : SELECT문/WHERE절 (24년 개정 요약)

청크 2024. 2. 22. 12:02

[SELECT문]

· SELECT

 -> 테이블에 입력된 데이터를 조회하기 위해서 사용되며, 특정 칼럼/행만 조회가 가능

 

· SELECT 문법

 1) SELECT * : 모든 칼럼을 출력 (‘*’은 모든 칼럼을 의미)

 2) FROM 테이블명 : 테이블을 지정

 3) WHERE 조건 : FROM에서 지정한 테이블의 조회 조건을 지정

 

· SELECT 칼럼 지정

 1) SELECT 칼럼1, 칼럼2 FROM 테이블명;

   - 해당 테이블에서 칼럼 1,2만 출력

 2) SELECT * FROM 테이블명;

   - 해당 테이블의 모든 칼럼과 행을 조회

 3) SELECT 칼럼1 || ‘문자’ FROM 테이블명;

   - 해당 테이블의 모든 행에서 칼럼1을 조회

   - 단, 칼럼1 뒤에 ‘문자’에 들어간 단어를 결합

     ex) 출력 예시 : 칼럼1 문자

 

· SELECT 문의 정렬

 -> ORDER BY를 사용하여 정렬이 가능

 * ORDER BY : 데이터를 오름차순 또는 내림차순으로 출력

   - 디폴트 값은 오름차순, 내림차순은 ‘DESC’ 사용

   - 정렬을 하는 시점은 모든 실행 종료 후 데이터를 출력하기 바로 직전이기 때문에 대량의 데이터를 정렬하게 됨 (정렬로 인한 성능 저하 발생)

 * Oracle은 정렬을 위해 메모리 내부에 할당된 SORT_AREA_SIZE을 사용하는데 SORT_AREA_SIZE가 너무 작으면 성능 저하 발생

 * 성능저하 회피를 위해 Index를 사용한 정렬 회피가 가능

 -> 인덱스를 생성할 때 사용자가 원하는 형태(오름차순/내림차순)로 생성

   - SELCET문에서 기본키를 조회하면 자동으로 오름차순 인덱스가 생성

   - INDEX 힌트(Hint)

SELECT ‘/*+INDEX_DESC(a)*/’ : 내림차순으로 읽도록 지정

 

· DISTINCT

 -> 칼럼명 앞에 지정하여 중복 데이터를 한번만 조회하게 함

· Alias : 별칭으로 테이블/칼럼명이 길 때 간략하게 사용

 -> SELECT 테이블명 AS “별칭” FROM 칼럼명 별칭

 

[WHERE절]

· WHERE

 -> 원하는 자료만을 검색하기 위한 조건문

 

· WHERE문의 연산자 종류

 [비교 연산자]

 1) = : 같은 것을 조회

 2) < : 작은 것을 조회

 3) <= : 작거나 같은 것을 조회

 4) > : 큰 것을 조회

 5) >= : 크거나 같은 것을 조회

 

 [부정 비교 연산자]

 1) != / ^= / <> / NOT 칼럼명 = : 같지 않은 것을 조회

 2) NOT 칼럼명 > : 크지 않은 것을 조회

 

 [논리 연산자]

 1) AND : 조건을 모두 만족해야 TRUE

 2) OR : 조건 중 하나만 만족해도 TRUE

 3) NOT : TRUE/FALSE 의 결과값을 반대로 출력

 

 [SQL 연산자]

 1) LIKE ‘%비교문자열%’ : 비교문자열을 조회

   - % : 어떤 문자를 포함한 모든 것을 조회

   - _(underscore) : 한 개인 단일 문자를 의미

 2) BETWEEN A AND B : A와 B의 범위에 있는 값을 조회

 3) IN (list) : list 값 중 하나만 일치해도 조회

   - OR의 의미를 가지고 있어서 하나의 조건만 만족해도 조회가 됨

 4) IS NULL : NULL 값을 조회

   - NULL은 모르는 값, 값의 부재를 의미

   - NULL + 숫자/날짜 = NULL

   - NULL과 어떤 값을 비교한다면 ‘알 수 없음’ 이 반환됨

 

 [부정 SQL 연산자]

 1) NOT BETWEEN A AND B : A와 B사이에 해당되지 않은 값

 2) NOT IN (list) : list와 불일치한 것을 조회

 3) IS NOT NULL : NULL값이 아닌 것을 조회

 

· NULL 관련 함수

 1) NVL (Oracle)

   - NULL이면 다른 값으로 바꾸는 함수

   ex) ‘NVL(MGR, 0)’은 MGR 칼럼이 NULL이면 0으로 바꾼다는 의미

 2) NVL2 (Oracle)

   - NVL함수와 DECODE 함수를 하나로 만든 것

   ex) ‘NVL2(MGR, 1, 0)’은 MGR 칼럼이 NULL이 아니면 1,

NULL이면 0을 반환

 3) NULLIF (Oracle, MS-SQL, MySQL)

   - 두 개의 값이 같으면 NULL, 같지 않으면 첫 번째 값을 반환

   ex) ‘NULLIF(exp1, exp2)’는 exp1과 exp2가 같으면 NULL,

        같지 않으면 exp1을 반환

 4) COALESCE (Oracle, MS-SQL)

   - NULL이 아닌 최초의 인자 값을 반환

   ex) ‘COALESCE(exp1, exp2, exp3,…)은 exp1이 NULL이 아니면

         exp1의 값을, 그렇지 않으면 그 뒤의 값의 NULL여부를 판단