SELECT
질의 작성기
- 질의 작성기 (Query Builder): GUI를 통해 드래그 앤 드롭 방식으로 SQL 쿼리를 시각적으로 생성하는 도구
- 사용 방법:
- 테이블을 마우스로 드래그하여 질의 작성기에 추가
- 원하는 열(컬럼) 선택
- 워크시트로 이동
- 명령문 실행(CTRL+ENTER)
- 질의 결과
SELECT 문의 기본 구조: SELECT 절과 FROM 절
- SQL의 가장 기본적이고 중요한 명령어: 데이터베이스에서 원하는 데이터를 가져오는 역할
SELECT
절: 조회하고자 하는 열(컬럼)을 지정FROM
절: 데이터가 위치한 테이블을 지정- 기본 문법:
SELECT column1, column2, ...
FROM table_name;
- 예시:
TB_COMPANY_MASTER
테이블에서COMPANY_NM
(업체명)과CEO_NM
(대표자명) 조회
SELECT COMPANY_NM, CEO_NM
FROM TB_COMPANY_MASTER;
SQL 실행 계획
- SQL Developer에서 SQL 구문에 F10 키를 누르거나 다음 명령을 실행
EXPLAIN PLAN FOR SELECT * FROM TB_COMPANY_MASTER; -- 실행 계획 생성
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY); -- 실행 계획 보기
- OPTIONS: 처리 방법(FULL: 테이블 전체를 스캔)
- CARDINALITY: 예상되는 실행 결과 행 수 (실제 결과와 크게 다를 경우 질의가 비효율적)
- COST: 예상되는 실행 비용 (비용이 높으면 질의가 비효율적)
모든 열 조회 및 특정 열 선택 조회
- 모든 열 조회 (
*
와일드카드): 테이블의 모든 열을 빠르게 확인하고 싶을 때 사용
SELECT *
FROM TB_COMPANY_MASTER;
- 특정 열 선택 조회: 필요한 데이터만 선택하여 효율적으로 조회
SELECT BIZ_REG_NO, COMPANY_NM, ESTABLISH_DT
FROM TB_COMPANY_MASTER;
- 열의 순서:
SELECT
절에 명시한 순서대로 결과가 표시됨
AS 키워드를 이용한 열 별칭(Alias) 지정
- 열 별칭(Column Alias)의 필요성:
- 조회 결과의 열 이름을 더 이해하기 쉽게 변경
- 연산 결과나 함수 사용 시 결과 열에 의미 있는 이름 부여
- 테이블 간 JOIN 시 동일한 열 이름 구분
AS
키워드 사용법:- 별칭에 공백이나 특수문자가 포함될 경우 큰따옴표(
" "
)로 묶어줌
- 별칭에 공백이나 특수문자가 포함될 경우 큰따옴표(
SELECT original_column_name AS alias_name
FROM table_name;
- 예시:
SELECT COMPANY_NM AS "회사명", CEO_NM AS "대표자 이름", ESTABLISH_DT AS "설립일"
FROM TB_COMPANY_MASTER;
SELECT COMPANY_NM 회사명, CEO_NM 대표자명 -- AS 생략
FROM TB_COMPANY_MASTER;
주석
코드에 대한 설명
/* 슬래시와 별표,
여러 줄에 걸쳐
주석을 작성할 때
사용 */
-- 빼기 두 번, 한 줄 주석을 작성할 때 사용
힌트
- SQL 질의의 최적화를 위해 힌트를 추가할 수 있음
- 힌트는
SELECT
뒤에 주석 형식으로 추가 - 주석 기호 뒤에 공백 없이 + 표시를 붙임
SELECT /*+ FULL(TB_COMPANY_MASTER) */
*
FROM TB_COMPANY_MASTER;
- 테이블 전체를 스캔하라는 힌트
- 최적화를 위해 자동으로 테이블 일부만 스캔하는 경우가 있음
- 테이블의 대부분 데이터를 읽어야 할 경우, 불필요한 최적화가 오히려 성능을 떨어트릴 수 있음
SELECT 절에서의 간단한 산술 연산
SELECT
절 내 연산: 숫자 데이터 타입의 열에 대해 기본적인 산술 연산(+
,-
,*
,/
) 가능- DUAL은 Oracle의 가상 테이블로, 임시 데이터 조회에 사용 (DBMS에 따라 생략 가능)
SELECT 1 + 1 FROM DUAL;
SELECT 3 - 2 FROM DUAL;
SELECT 2 * 3 FROM DUAL;
SELECT 4 / 2 FROM DUAL;
SELECT (4 + 3) * 2 AS "괄호 사용" FROM DUAL;
- 활용: 기존 데이터를 가공하여 새로운 의미의 값 조회 (예: 할인율 적용 금액, 부가세 포함 금액 등)
SELECT BIZ_REG_NO, FS_YM, TOTAL_ASSETS, TOTAL_LIABILITIES,
(TOTAL_ASSETS - TOTAL_LIABILITIES) AS 순자산 -- 총자산 - 총부채
FROM TB_FINANCIAL_STATEMENT;
SELECT LOAN_ACCT_NO, LOAN_AMT, LOAN_AMT / 1000000000 AS "대출금액(십억원)"
FROM TB_LOAN_ACCOUNT;