H'academy
  • H'academy
  • Web
    • Back-end
      • Spring Framework
        • Spring 개발환경 구축
          • Project 생성
          • Maven 설정
          • Maven 저장소 위치 설정
          • Apache Tomcat 연동
          • Lombok 설정
        • Spring MVC Project
          • pom.xml
          • web.xml
          • root-context.xml
          • servlet-context.xml
          • DispatcherServlet
        • Controller
          • File Upload / Download
          • RestController(작성중)
        • Spring Test
          • Assert 단정문
          • Spring 환경 연동 테스트
          • MockMvc Test
        • Spring AOP
          • AOP 용어
          • Pointcut Expression
          • Filter
          • Interceptor
          • Filter vs Interceptor
          • Controller Advice(작성중)
        • Spring JDBC
          • DBCP
          • myBatis
            • ResultMap 활용
        • ETC
          • Logging
            • Tomcat Logging 설정
          • Property 관리
          • E-mail
            • Gmail 변경사항
          • Scheduler
          • Websocket
      • Spring Boot
        • STS 다운로드
        • 프로젝트 생성
        • 프로젝트 구조
        • Spring Devtools
        • Spring Controller
          • JSP 연동
            • * JSP 생성불가 문제
            • Spring Boot 3.x
          • Model
          • 요청 파라미터 처리
          • 경로 변수 처리
          • 요청 메소드
          • Redirect
          • Spring Actuator
        • Spring Boot JDBC
          • Database 정보
          • DAO Pattern
          • ORM Framework
            • myBatis
              • Mapper 생성
            • Spring Data JPA
        • Spring AOP
          • AspectJ
          • Filter
          • Interceptor
          • ControllerAdvice
        • REST API
        • Spring WebSocket
        • Send Mail
        • Logging
        • Spring Boot Test
        • Lombok
      • Java EE
        • 개발환경 구성
          • Server와 Client
          • Web Server와 WAS
        • Dynamic Web Project
      • Apache Tomcat
        • Apache Tomcat 구조
        • Tomcat User 생성
        • Tomcat Manager 설정
      • Maven
      • Jenkins
        • Installation
          • Github Webhook 설정
          • Maven 연동
        • Project setting
          • 소스 코드 관리 설정
          • 빌드 유발 설정
          • 빌드 작업 설정
      • OpenAPI(swagger)
        • swagger 2.x (legacy)
        • swagger 3.x (boot)
        • Swagger UI 꾸미기
        • SpringDoc
    • Front-end
      • HTML
        • Heading
        • <A>
        • <IMG>
        • <DIV>
        • <TABLE>
        • <FORM>
          • <INPUT>
          • <SELECT>
          • <TEXTAREA>
          • <FIELDSET>
        • List
      • CSS
        • CSS 적용 방식
          • 크기(size)
            • 픽셀(px)
          • 색상(color)
        • CSS 선택자
          • 스타일 우선순위
        • CSS 주요 속성
          • 크기 속성
            • border
            • margin
            • padding
            • box-sizing
          • 배경 속성
          • 글자 속성
            • font
            • text
          • 배치 속성
            • position
            • display
            • overflow
            • float
            • flexbox
        • CSS Reset
      • JS
        • syntax
          • let, const
          • 구조 분해 할당
          • spread operator
          • Object copy
          • this
          • module
        • jQuery
          • structure
          • function
          • ajax
            • ajax file upload
        • VueJS
          • CDN(Vue3)
            • 기본 구조
            • Vue Devtools
            • jQuery vs VueJS
            • Vue instance
              • data
                • IME issue
              • v-model
              • template
              • computed
              • watch
                • deep watch
                • vs Computed
              • methods
            • Vue directive
              • v-text
              • v-html
              • v-bind
                • v-bind style
                • v-bind class
              • v-on
                • once
                • prevent
              • v-show
              • v-if
              • v-for
          • Vue-cli 3
            • 프로젝트 구조
            • src
              • main.js
              • App.vue
              • HelloWorld.vue
            • Vue Router 4
              • History mode
              • 404 not found
              • Guard
                • beforeEach
            • Vuex
              • 이동 횟수 측정
            • axios
              • interceptor
          • Vue-electron
        • ReactJS
          • CDN(React18)
            • 템플릿 설명
            • JSX
            • render
            • Handling Events
              • onClick
              • onInput
            • Component
              • 클래스 컴포넌트
                • state
                • props
                • event
                  • Mouse
                  • Input
                • lifecycle
              • 함수형 컴포넌트
                • useState
                • useEffect
                • useReducer
                • useMemo
                • props
                • 조건부 렌더링
          • CRA
            • 자원 경로 설정
            • src 절대 경로 설정
            • react-router
            • Context API
            • Electron 설정
        • Webpack
          • NodeJS
          • Git
    • Ubuntu server
      • Jenkins
    • 테스트 도구
      • JMeter
        • Test Plan
        • Test Plan(with login)
        • Plugin 설치
    • WebRTC
  • Base Language
    • Java
      • Java 실행 과정
        • 개발 환경 구축
        • 샘플 코드 작성
        • 컴파일/실행
        • 환경 변수 설정
      • Java 초급
        • Hello world
        • 자료와 정보
        • 변수
          • 정수
            • 정수의 저장 원리
            • 정수형 변수 생성
          • 실수
            • 실수의 저장 원리
            • 실수형 변수 생성
          • 논리
            • 논리형 변수 생성
          • 문자
          • 문자열
            • 문자열 변수 생성
          • 사용자 정의 자료형
        • 연산자
          • 대입 연산
          • 부호 연산
          • 산술 연산
          • 복합 대입 연산
          • 증감 연산
          • 쉬프트 연산
          • 비트 연산
          • 비교 연산
          • 논리 연산
          • 삼항 연산
          • 변환 연산
        • 표준 입출력
          • 표준 출력
          • 표준 오류 출력
          • 표준 입력
            • Scanner 입력
        • 제어문
          • if 구문
            • 단일 조건
            • 두 가지의 조건
            • 여러 가지의 조건
          • switch~case 구문
          • while 구문
          • do~while 구문
          • for 구문
        • 랜덤(Random)
        • 배열
          • 1차원 배열
          • 2차원 배열
          • 다차원 배열
          • Sort
            • 선택 정렬
            • 버블 정렬
            • 삽입 정렬
      • Java 중급
        • 객체 지향 프로그래밍
        • 클래스
        • 인스턴스
        • 필드
        • 메소드
          • 설정(setter) 메소드
          • 반환(getter) 메소드
        • 생성자
        • 접근 제한
          • private
          • package
          • protected
          • public
        • 정적(static)
        • 불변(final)
        • 상수(constant)
        • 상속
          • this와 super의 이해
          • 멤버 변수 설정
          • 멤버 메소드 설정
          • 생성자 설정
        • 추상화
          • 추상 클래스
          • 인터페이스
        • 다형성
        • 중첩 클래스
          • 일반 중첩 클래스
          • static 중첩 클래스
          • 지역 중첩 클래스
          • 익명 중첩 클래스
      • Java API(작성중)
        • java.lang
        • java.util
        • java.text
        • java.time
        • java.io
        • java.net
        • java.sql
        • java.awt
        • javax.swing
      • Java 고급
        • 제네릭(Generic)
        • 열거형(Enum)
        • Annotation Type
          • Retention
          • Target
          • Nested Annotation
        • Java Reflection
          • Intro
          • Class
          • Field
          • Constructor
          • Method
          • Package
      • JDBC
        • 드라이버 로드
        • 연결 생성
          • JDBC Driver 유형
        • JdbcTemplate
      • Java 버전별 변경사항
        • Java 1.8
          • Lambda Expression
          • Stream API
          • java.time 패키지
        • Java 9
        • Java 12
          • switch~case
        • Java 13
          • Text Block
    • Arduino
      • 학습 준비
        • Reference
        • 아두이노 온라인 시뮬레이터
        • 전기의 이해
        • 그라운드(GND)의 이해
      • 개발 환경 구축
        • CH340 보드 설치
        • Editor 글꼴 설정
      • 아두이노 제어
        • 코드의 구성
        • 시리얼 출력
        • 디지털 출력
          • LED 출력
        • PWM 출력
        • 시리얼 입력
        • 디지털 입력
          • PIR 센서
        • 아날로그 입력
          • 온도 센서(LM35DZ)
          • 조도 센서
          • 가스 센서
        • 피에조 부저
        • 서보 모터 제어
          • 시리얼 서보 모터 제어
          • 스위치 서보 모터 제어
        • 온습도 센서(DHT-11)
        • LCD
      • 아두이노 통신
        • 블루투스(Bluetooth)
          • HC-06
            • 온도 센서 활용
          • HM-10
        • 와이파이(Wi-Fi)
          • ESP-01
            • WiFiEsp 라이브러리 추가
            • WiFiEsp 네트워크 스캔
        • 이더넷(Ethernet)
        • ArduinoJson 라이브리 사용
    • Regular Expression
  • Database
    • Oracle
      • 설치
        • SQL Plus
        • SQL Developer
        • DBeaver
        • Docker(Mac OS)
      • SQL
        • 관리자 명령
          • 사용자 관리
          • 권한 관리
          • Encoding 설정
          • 서비스 포트 설정
        • 사용자 명령
          • 테이블 관리
            • 테이블 항목 제약 조건
            • 외래키 제약조건
            • 데이터 유형
          • 시퀀스 관리
          • 데이터 관리
            • 데이터 추가
            • 데이터 조회
              • 오라클 내장 함수
              • 그룹 조회
              • Top N Query
            • 데이터 수정
            • 데이터 삭제
          • 뷰 관리
          • 인덱스 관리
          • 집합 연산
          • 테이블 조인
            • 등가 조인
            • 외부 조인
        • HR 계정
        • 기타 명령
          • 컬럼 간격 조정
      • 내보내기 및 불러오기
        • EXPDP, IMPDP
        • Docker로 실행중인 경우
      • 기타
        • 자동 세션 제거
        • Tablespace 관리
        • Unlock user
  • 면접대비
    • Q&A
      • Java
      • Database
      • Web
      • IT 일반상식
  • ETC
    • Eclipse IDE
      • 설치
      • 화면 설명
      • 환경 설정
      • 프로젝트 생성
      • 소스파일 작성 및 실행
    • Github
      • Github 계정 관리
      • Github 저장소 관리
        • Profile
        • Collaborators
        • Code
        • Issues
        • Pull requests
        • Action
          • Vue 3 Deploy Action
      • Personal Access Token
      • Git ignore 설정
        • Spring 개발용 샘플
      • Github Eclipse 연동
        • Branches
        • Project
        • Team project
          • Dynamic web project
          • Spring Boot Project
          • Branch 생성
          • Pull Request
          • Branch 보호
          • Branch 다시 생성
    • Figma
      • Team
      • Design
      • Component
    • 과정평가형
      • 실기 모의고사 1회
      • 실기 모의고사 2회
      • 실기 모의고사 3회
      • 실기 모의고사 4회
    • VScode
      • Live Server 실행 오류
      • Github 계정 변경
    • Naver ToastUI Editor
      • Editor 만들기
        • Editor options
          • File upload
      • Viewer 만들기
    • 문자 인코딩 방식
    • OBS
      • 녹화 잡음 제거 설정
    • Semantic Version
Powered by GitBook
On this page
  • 데이터 조회
  • 명령 형식
  • 상품 테이블(product)
  1. Database
  2. Oracle
  3. SQL
  4. 사용자 명령
  5. 데이터 관리

데이터 조회

데이터 조회

이 문서에서는 데이터를 조회하는 기본적인 방법에 대해서 살펴본다.

명령 형식

테이블 1개의 데이터를 조회하기 위한 구문의 기본 형식은 다음과 같다.

select 항목 from 테이블 [where 조건] [group 설정] [정렬 조건];

[ ]로 감싸진 부분은 생략이 가능하며, 이를 사용하여 기본적인 조회를 수행할 수 있다.

다음과 같은 테이블이 있다고 가정하고 데이터를 조회하는 구문을 작성해보도록 한니다.

상품 테이블(product)

생성 구문은 다음과 같다.

create table product(
no number primary key,
name varchar2(30) not null,
type varchar2(15) check(type in ('과자','아이스크림','주류','사탕','초콜릿')),
price number,
made date,
expire date
);

INSERT INTO product VALUES (1, '스크류바', '아이스크림', 1200, TO_DATE('2022-05-01 10:23:45', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2022-10-01 12:00:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO product VALUES (2, '마이쮸', '사탕', 900, TO_DATE('2022-01-01 08:15:30', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2023-01-01 09:30:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO product VALUES (3, '초코파이', '과자', 3000, TO_DATE('2022-01-01 14:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2023-01-01 16:45:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO product VALUES (4, '맛동산', '과자', 2200, TO_DATE('2022-02-01 09:30:15', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2022-10-20 10:45:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO product VALUES (5, '참이슬', '주류', 1000, TO_DATE('2022-01-05 11:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2022-04-05 13:30:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO product VALUES (6, '처음처럼', '주류', 1000, TO_DATE('2022-03-15 10:15:45', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2022-08-15 12:00:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO product VALUES (7, '바나나킥', '과자', 1500, TO_DATE('2022-05-03 08:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2022-06-03 09:45:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO product VALUES (8, '빠삐코', '아이스크림', 1000, TO_DATE('2023-12-01 10:23:45', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2024-06-01 12:00:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO product VALUES (9, '멘토스', '사탕', 1200, TO_DATE('2023-03-20 08:15:30', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2024-12-31 09:30:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO product VALUES (10, '오레오', '과자', 2100, TO_DATE('2023-06-01 14:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2024-06-01 16:45:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO product VALUES (11, '포카칩', '과자', 1500, TO_DATE('2022-05-05 09:30:15', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2023-05-05 10:45:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO product VALUES (12, '칸쵸', '과자', 1000, TO_DATE('2022-06-10 11:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2023-06-10 13:30:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO product VALUES (13, '허니버터칩', '과자', 1700, TO_DATE('2022-07-01 10:15:45', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2023-07-01 12:00:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO product VALUES (14, '새우깡', '과자', 1200, TO_DATE('2022-08-01 08:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2023-08-01 09:45:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO product VALUES (15, '칙촉', '과자', 2500, TO_DATE('2022-09-01 10:23:45', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2023-09-01 12:00:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO product VALUES (16, '가나초콜릿', '초콜릿', 2000, TO_DATE('2022-10-01 08:15:30', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2023-10-01 09:30:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO product VALUES (17, '빼빼로', '과자', 1500, TO_DATE('2022-11-11 14:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2023-11-11 16:45:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO product VALUES (18, '파이리', '사탕', 1000, TO_DATE('2022-12-31 09:30:15', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2023-12-01 10:45:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO product VALUES (19, '초코송이', '과자', 1200, TO_DATE('2023-01-01 11:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2024-01-01 13:30:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO product VALUES (20, '빈츠', '과자', 1300, TO_DATE('2023-02-01 10:15:45', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2024-02-01 12:00:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO product VALUES (21, '죠리퐁', '과자', 1400, TO_DATE('2023-03-01 08:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2024-03-01 09:45:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO product VALUES (22, '오징어집', '과자', 1500, TO_DATE('2023-04-01 10:23:45', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2024-04-01 12:00:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO product VALUES (23, '누네띠네', '과자', 1200, TO_DATE('2023-05-01 08:15:30', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2024-05-01 09:30:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO product VALUES (24, '포테토칩', '과자', 1600, TO_DATE('2023-06-01 14:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2024-06-01 16:45:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO product VALUES (25, '새콤달콤', '사탕', 1000, TO_DATE('2023-07-01 09:30:15', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2024-07-01 10:45:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO product VALUES (26, '카라멜콘', '과자', 1100, TO_DATE('2023-08-01 11:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2024-08-01 13:30:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO product VALUES (27, '오징어땅콩', '과자', 1500, TO_DATE('2023-09-01 10:15:45', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2024-09-01 12:00:00',


commit;

항목 관련

등록된 상품의 이름을 조회하는 SQL

select name from product;

등록된 상품의 이름과 가격을 조회하는 SQL

select name, price from product;

등록된 상품의 모든 정보를 조회하는 SQL(*는 모든 항목이라는 의미)

select no, name, type, price, made, expire from product;
--또는
select * from product;

조건 관련

조건은 where 조건식 형태로 추가하여 사용한다.

숫자 조건

가격이 2000원 이상인 상품만 조회하는 SQL

select * from product where price >= 2000;

가격이 2000원 이상 3000원 이하인 상품만 조회하는 SQL(between은 구간을 지정할 때 사용할 수 있다)

select * from product where price >= 2000 and price <= 3000;
-- 또는
select * from product where price between 2000 and 3000;

문자열 조건

이름이 스크류바인 상품 조회하는 SQL

select * from product where name='스크류바';

이름이 참으로 시작하는 상품 조회하는 SQL(like를 이용하면 유사 검색을 수행할 수 있으나 속도가 느린 편이다)

-- %는 글자가 더 있을 수 있다는 표시이다.
select * from product where name like '참%';

이름에 이가 포함된 상품을 조회하는 SQL

select * from product where name like '%이%';
-- 또는 
select * from product where instr(name, '이') > 0;

날짜 조건

제조년도가 2022년인 제품을 조회하는 SQL

  • 문자열을 날짜로 바꾸기 위해서는 to_date라는 명령이 필요

    • to_date(문자열, 바꿀형식) : 연도(YYYY), 월(MM), 일(DD), 시간(HH24), 분(MI), 초(SS)

  • extract는 날짜의 특정 부분을 추출할 수 있도록 하는 명령

    • extract(추출항목 from 데이터) : 연도(YEAR), 월(MONTH), 일(DAY), 시간(HOUR), 분(MINUTE), 초(SECOND)

select * from product where made between to_date('20220101000000', 'YYYYMMDDHH24MISS') and to_date('20221231235959', 'YYYYMMDDHH24MISS');
-- 또는
select * from product where extract(year from made) = 2022;

날짜는 문자열이 아니기 때문에 문자열처럼 사용하면 위험하다.

제조일로부터의 유통기한이 6개월 이내인 제품을 조회하는 SQL

  • 날짜간의 계산이 필요

  • 날짜에서 +1은 1일 후를 의미

select * from product where expire - made <= 180;

상반기에 제조한 상품 조회하는 SQL

select * from product where extract(month from made) between 1 and 6;

2020년 1월 1일부터 현재까지 제조한 상품 조회하는 SQL

select * from product where made between to_date('20200101000000', 'YYYYMMDDHH24MISS') and sysdate;

정렬 관련

정렬은 조건 등으로 추려진 데이터를 원하는 기준에 따라 나열하는 것을 말하며, 반드시 조건처럼 데이터 집합을 계산하는 명령보다 이후에 나와야 한다.

형식

select .... order by 항목 [asc]
-- 또는
select .... order by 항목 desc

예시

모든 상품을 가격순으로 정렬하는 SQL

select * from product order by price desc;

모든 상품을 제조일 최신순으로 정렬하는 SQL

select * from product order by made desc;

가격이 2000원 이상인 상품을 1차로 이름순, 2차로 제조일이 빠른 순으로 정렬하는 SQL

select * from product where price >= 2000 order by name asc, made asc;
-- 또는
select * from product where price >= 2000 order by name, made;
Previous데이터 추가Next오라클 내장 함수

Last updated 11 months ago