[DB_SQL활용] SELECT문의 기본형식

예지성준·2024년 5월 7일

DB

목록 보기
4/19
post-thumbnail

SELECT 문의 기본 형식

오라클 데이터베이스는 기본 학습을 위한 테이블과 데이터가 미리 구현되어 있는 SCOTT 계정을 제공한다.
scott계정에는 oracle 구문을 연습할 수 있도록 여러개의 테이블과 데이터가 삽입되어 있는 계정이다.

실습용 테이블 살펴보기💻

  1. EMP 테이블
  • 사원정보가 들어 있는 테이블
  • 테이블 구성
    DESC EMP;

  1. DEPT 테이블
  • 회사 부서 정보가 들어 있는 테이블
  • 테이블 구성
    DESC DEPT;

  1. SALGRADE 테이블
  • 사원들의 급여 정보가 들어 있는 테이블

데이터를 조회하는 3가지 방법

셀렉션

  • 행 단위로 원하는 데이터를 조회하는 방식

프로젝션

  • 열 단위로 데이터를 조회하는 방식

    • 행과 열을 모두 선별할 경우 셀렉션과 프로젝션을 함께 사용할 수 있음

조인

  • 다른 테이블에 데이터를 공통적인 값을 통해서 연결하여 조회하는 방식
  • 기본키와 외래키를 이용

SQL의 기본 뼈대, SELECT절과 FROM 절

SELECT문은 데이터베이스에 보관되어 있는 데이터를 조회하는데 사용

  1. 형식
  • SELECT 조회할 컬럼, 컬럼2 ... FROM 테이블명;
  • 모든 컬럼: *
  1. SELECT - 조회 할 열 이름 또는 출력할 데이터를 하나 이상 지정, 또는 *로 전체 열을 지정
  2. FROM - 조회할 테이블 지정

실행⬇

👩‍🏫참고
DML(Data Manipulation Language): 데이터 조작어 - INSERT, UPDATE, DELETE

  • DQL(Data Query Language): 데이터 질의어 - SELECT: 쿼리

중복 데이터를 삭제하는 DISTINCT

  • SELECT문으로 데이터를 조회한 후 DISTINCT를 사용하여 중복을 제거한다.
  • DISTINCT는 SELECT절에 열 이름을 명시하기 전에 선택적으로 사용할 수 있다.

SELECT [ALL|DISTINT] 조회할 컬럼1, 컬럼2 ... FROM 테이블명;

  1. ALL: 기본값, 따로 작성하지 않아도 된다.
    ALL: 데이터 중복을 제거하지 않고 그대로 출력

  2. DISTINCT: 중복 제거하고 조회

    • 열이 여러개인 경우
      EX) SELECT DISTINCT JOB, DEPTNO FROM EMP;

참고) SQL 주석 --

한눈에 보기 좋게 별칭 설정하기🤹‍♀️

1. 실습1 - AS

  • 열에 연산식을 사용하여 출력하기

    한줄 실행하고 싶을때 드래그하고 or 마우스 커서 해당 줄에 두고 ctrl + enter

 --SQL 내에서 연산 가능/ 연봉 출력 SAL * 12
SELECT EMPNO, ENAME, JOB, SAL * 12 FROM EMP; 
  • 별칭을 지정하는 방식
    컬럼명 AS "별칭"
    • AS 키워드 생략 가능
    • "" 생략가능 -> 단어로만 구성된 경우(중간에 띄어쓰기가 있으면 생략 불가) ex) "연봉 출력"
    • 별칭은 컬럼명 또는 테이블 명에도 사용 가능
    • 테이블 명에서 별칭을 사용할땐 AS 키워드 사용 불가
      SELECT E.EMPNO, E.ENAME, E.JOB, E.SAL * 12 연봉 FROM EMP E; 

SELECT EMPNO, ENAME, JOB, SAL * 12 "연봉" FROM EMP; 
SELECT EMPNO, ENAME, JOB, SAL * 12 연봉 FROM EMP; 

AS: alias의 약자

2. 실습2 - ORDER BY

원하는 순서로 출력 데이터를 정렬하는 ORDER BY

  • 정렬

오름차순: ORDER BY 컬럼명 ASC
- ASC 생략 가능
- ORDER BY 컬럼명

내림차순: ORDER BY 컬럼명 DESC

ORDER BY 컬럼1 DESC, 컬럼2 DESC
-> 1차 정렬 - 컬럼1의 내림차순, 컬럼1에 같은 값인 경우 -> 컬럼2 내림차순 2차 정렬 ...

⚠주의 사항⚠

ORDER BY절을 사용할 때 주의 사항
ORDER BY절을 사용한 정렬은 꼭 필요한 경우가 아니면 사용하지 않는 것이 좋습니다. 여기저기 흩어져 있는 데이터를 특정 기준에 따라 가지런히 순서를 맞추는 것은 많은 자원, 즉 비용을 소모하기 때문입니다. 특정 기준에 따라 두 개 데이터를 정렬하는 시간보다 열 개 데이터를 정렬하는 데에 시간이 더 많이 필요합니다.

ORDER BY절이 존재할 경우 SELECT문을 통해 조회할 데이터를 모두 확정한 상태에서 ORDER BY절의 명시된 기준에 따라 정렬합니다. 이때 데이터의 양 또는 정렬 방식에 따라 출력 데이터를 선정하는 시간보다 정렬하는 데 시간이 더 걸릴 수도 있습니다. 즉 정렬을 하지 않으면 결과를 더 빨리 출력할 수 있다는 이야기 입니다.

SQL문의 효율이 낮아지는 것은 서비스 응답 시간이 느려진다는 것을 뜻합니다. 따라서 정렬이 꼭 필요한 경우가 아니라면 ORDER BY절을 넣지 않도록 주의하세요.

  • 정렬시에 성능저하 문제 FULL SCAN시에는
  • 성능저하 문제는 인덱스를 통해서 해소 가능
profile
꽁꽁 얼어붙은 한강 위로 😺

0개의 댓글