Oracle - 데이터 조회(SELECT)

uglyduck.dev·2020년 9월 22일
0

따라해보기 🎭

목록 보기
5/12

SELECT문

  • 레코드를 검색할 때 사용

구문

SELECT * FROM 테이블; ( * : 모든필드 )
SELECT 필드1, 필드2 FROM 테이블;
SELECT 테이블.필드1, 테이블.필드2 FROM 테이블;
SELECT 테이블1.필드1, 테이블1.필드2, 테이블2.필드1 FROM 테이블1, 테이블2; (실제로는 JOIN 과 함께 사용)

예시

  • BOOK 테이블의 모든 데이터 검색
SELECT * FROM BOOK;
  • BOOK 테이블의 BOOK_ID와 BOOK_NAME 검색
SELECT BOOK_ID, BOOK_NAME FROM BOOK;

AS 절

  • 필드를 새 이름으로 검색(별칭 붙이기)

구문

SELECT 필드 AS 새이름 FROM 테이블;

예시

  • BOOK 테이블의 BOOK_IOC 필드 이름 변경하여 검색
    SECECT BOOK_IOC AS 책위치 FROM BOOK;

ORDER BY 절

  • ASC: 오름차순 정렬 (생략 가능) (ASCENDING)

  • DESC: 내림차순 정렬 (DESCENDING)

예시

  • NO 의 오름차순 정렬
SELECT * FROM STUDENT ORDER BY NO;
  • NO 의 내림차순 정렬
SELECT * FROM STUDENT ORDER BY NO DESC 
  • 1차기준:NAME 오름차순, 같은 NAME발생 시
  • 2차기준:NO 내림차순)
SELECT * FROM STUDENT ORDER BY NAME, NO DESC 
  • ORDER BY 는 마지막에 작성

GROUP BY 절

  • 그룹화 하는 경우에 사용
  • HAVING 절을 함께 사용하면 그룹에 대해 조건의 지정이 가능

구문

GROUP BY 그룹필드;
GROUP BY 그룹필드 HAVING 조건식;

  • 집계함수와 사용되는 경우가 많다.
    SELECT SUM(필드) FROM 테이블 GROUP BY 그룹필드;

예시

  • 같은 멤버쉽끼리 POINT 합계 구하기
SELECT SUM(POINT) FROM BUY GROUP BY MEMBERSHIP; 
  • GOLD 멤버쉽의 POINT 합계 구하기
SELECT SUM(POINT) FROM BUY GROUP BY MEMBERSHIP HAVING MEMBERSHIP='GOLD'; 

WHERE 절 (SELECT, UPDATE, DELETE 문에서 공통 사용)

예시

1. 동등비교

  • DEPT가 경영인 학생 출력
SELECT * FROM STUDENT WHERE DEPT = '경영';
  • DEPT가 경영이 아닌 학생 출력
SELECT * FROM STUDENT WHERE DEPT <> '경영';
  • DEPT가 경영이 아닌 학생 출력
SELECT * FROM STUDENT WHERE DEPT != '경영';

2. 널값비교

  • 불가 (X)
SELECT * FROM STUDENT WHERE HOME_PHONE = NULL; 
  • HOME_PHONE이 없는 학생 출력
SELECT * FROM STUDENT WHERE HOME_PHONE IS NULL; 
  • HOME_PHONE 이 있는 학생 출력
SELECT * FROM STUDENT WHERE HOME_PHONE IS NOT NULL; 

3. 만능문자 - 와일드카드 문자 (%:글자수제한없음, \_:한글자)

와일드카드 문자설명
%0개 이상의 문자를 가진 문자열WHERE title LIKE '%computer%' 책 제목에 'computer' 단어가 있는 모든 책 제목을 찾음
_(밑줄)단일 문자WHERE au_fname LIKE '_ean'ean으로 끝나는 모든 4문자 이름을 찾음 (Dean, Sean 등)
  • ADDR 이 서울로 시작하는 학생 출력
SELECT * FROM STUDENT WHERE ADDR LIKE '서울%';
  • 서울시 => 서울_

  • 서울특별시 => 서울___

  • => 서울%

  • EMAIL 이 GMAIL.COM 으로 끝나는 학생 출력

SELECT * FROM STUDENT WHERE EMAIL LIKE '%GMAIL.COM';
  • ID 에 A 를 포함한 학생 출력
SELECT * FROM STUDENT WHERE ID LIKE '%A%';
  • NO 의 3번째 글자가 A인 학생 출력
SELECT * FROM STUDENT WHERE NO LIKE'__A%';
  • 첫 글자로 만능문자를 사용하면 성능이 떨어지는 것으로 알려져 있다.

4. 크기비교 (>, >=, <, <=, 사이값)

  • SCORE가 80 이상 89 이하
SELECT * FROM STUDENT WHERE SCORE BETWEEN 80 AND 89;

5. AND, OR

SELECT * FROM STUDENT WHERE NO >= 3 AND SCORE >= 90;`
SELECT * FROM STUDENT WHERE ADDR = '서울' OR ADDR = '인천';
SELECT * FROM STUDENT WHERE ADDR IN('서울', '인천');
profile
시행착오, 문제해결 그 어디 즈음에.

0개의 댓글