simDev1234
심플하고 차분하게
simDev1234
전체 방문자
오늘
어제
  • 분류 전체보기
    • Computer Science
      • Basic Math
      • Data Structure
      • Algorithm
      • Database
      • OS
    • Language
      • Java
      • Kotlin
      • SQL
    • Framework
      • Spring
      • Orm&Mapper
      • 프로젝트로 스프링 이해하기
      • 스프링 라이브러리
    • Infra
      • Cloud
      • Docker
      • Redis
      • AWS, Azure
      • Device
    • Etc
      • CleanCoding
    • Git,Github

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • controllerTest
  • 자바메모리구조
  • 자바프로그래밍
  • 자바프로그램
  • 참조변수
  • JVM메모리구조
  • null
  • 자바
  • 컨트롤러
  • 참조타입
  • scanner #next() #nextLine()
  • 스프링
  • 404

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
simDev1234

심플하고 차분하게

[DATABASE] 연산을 통한 데이터 조회
Language/SQL

[DATABASE] 연산을 통한 데이터 조회

2022. 4. 14. 23:38

■ 연산자의 종류

- 산술을 제외하고, 관계/논리/기타 모두 문자열에 사용 가능하다. 
**산술은 문자열에 사용 불가하다.

연산자 코드
산술 연산자 +  -  *  /  mod(피젯수, 젯수)
관계 연산자 >   >=  <   <=  =(동일한가)  !=(동일하지 않음)  <> (동일하지 않음)
**null을 체크할 때는, 필드 is null   필드  is not null 을 사용한다.
논리 연산자 and or not 
필드 between A and B   (A이상 B이하) 
필드 in (A, B, C)            필드=A or 필드=B or 필드=C
패턴 비교 연산자 LIKE, %, _    

 

* 오라클은 정수, 실수 개념이 없어서, 10/3은 실수로 나온다.

* mod(x,y) --> 나머지 구하는 

* dual은 오라클에서 기본적으로 제공하는 테이블이다.

* XML에서 < > 태그 사용하므로 >= ~ <= 보다, between을 쓰는게 좋다.

* 가급적 not(  ) 역조건은 사용하지 않는 것이 좋다.
-- why? SELECT를 두 번 하기 때문에 속도 저하 

 

■ 기본 필드와 연산 필드

--heading : select의 결과로 추출된 임시 컬럼명
--연산 필드 : 기본 필드의 연산에 의해서 형성된 필드

select
   sabun as 사번,       -- 기본 필드
   saname 사원명,       -- as 생략가능 
   --sajob as 직 급,    -- 에러! 공백을 띄어서 표준명명법에 어긋남  
   sajob as "직 급",    -- OK 
   sapay,
   sapay * 0.1 as bonus  -- 연산 필드
from sawon

 

■ 문자의 결합 ||

select (문자데이터)칼럼명 || '추가하고자 하는 문자열' from 테이블명

 

■ 패턴 비교 연산자 : LIKE, %, _

[1] % (나 다음 모든문자)

select * from 테이블
  where (문자데이터)칼럼명 like '김%'   -- 맨앞글자가 김인 데이터(그 뒤는 길이도 상관없음)

 

[2] _  (모든 문자에서 1개)

select * from 테이블
  where (문자데이터)칼럼명 like '____-1%' 
  
  -- 앞에 6글자는 아무것이나 와도 되나, 그 뒤는 '-1'이 오는 데이터만 추출

 

■ 정규식을 이용한 패턴 비교(REGEX_LIKE)

정규식은 차후에 업로드 예정

 

▼  연산자 예시 *출처 : 뉴렉처  

 

[1] 산술 연산 / 문자열 결합 예시

--덧셈은 숫자만 더하기 때문에 숫자 + 문자면 숫자로 더해진다 
SELECT 1+'3' FROM DUAL;
--문자와 문자를 더하기
SELECT 1 || '3' FROM DUAL;

--Q. 모든 회원의 이름을 조회하시오. 단 이름은 ID를 붙여서
SELECT NAME || '(' || ID || ')' "이름(ID)" FROM MEMBER;

>> 마지막 Q결과

 

[2] 비교연산자 예시

-- 게시글 중에서 작성자가 '홍길동'인 게시글만 조회
SELECT * FROM NOTICE WHERE WRITER_ID = '홍길동';

-- 게시글 중에서 조회수가 100이 넘는 글만 조회
SELECT * FROM NOTICE WHERE HIT > 100;

-- 게시글 중에서 내용을 입력하지 않은 게시글을 조회
-- ★ NULL의 경우 = 연산자 사용 불가. 반드시 IS를 써야한다.
SELECT * FROM NOTICE WHERE CONTENT IS NULL;

 

[3] 논리연산자 예시

-- 조회수가 0, 1, 2인 게시글을 조회하시오.
SELECT * FROM NOTICE WHERE HIT IN (0, 1, 2);
SELECT * FROM NOTICE WHERE HIT = 0 OR HIT = 1 OR HIT = 2;
SELECT * FROM NOTICE WHERE HIT BETWEEN 0 AND 2;
SELECT * FROM NOTICE WHERE 0 <= HIT AND HIT <= 2;

--조회수가 0, 2, 7인 게시글을 조회하시오.
SELECT * FROM NORICE WHERE HIT IN (0, 2, 7);
SELECT * FROM NOTICE WHERE HIT = 0 OR HIT = 2 OR HIT = 7; -- 비효율적

--조회수가 0, 2, 7이 아닌 게시글을 조회하시오.
SELECT * FROM NOTICE WHERE HIT NOT IN(0, 2, 7);

 

[4] 패턴 비교 연산자 예시

-- 회원 중에서 '박'씨 성을 조회하시오
SELECT * FROM MEMBER WHERE NAME = '박%'; -- 박% 이라는 문자를 찾는다
SELECT * FROM MEMBER WHERE NAME LIKE '박%';

-- 회원 중에서 '박'씨이고 이름이 외자인 회원을 조회하시오.
SELECT * FROM MEMBER WHERE NAME LIKE '박_';

-- 회원 중에서 '박'씨 성을 제외한 회원을 조회하시오.
SELECT * FROM MEMBER WHERE NAME NOT LIKE '박%';

-- 회원 중에서 이름에 '도'자가 들어간 회원을 조회하시오.
SELECT * FROM MEMBER WHERE NAME LIKE '%도%';
더보기
 

 

 

[예시 코드 출처]

- 뉴렉쳐 강의

'Language > SQL' 카테고리의 다른 글

[DATABASE] 중복 값 제거 _ DISTINCT  (0) 2022.04.16
[DATABASE] 함수  (0) 2022.04.15
[DATABASE] 제약조건(Constraint)  (1) 2022.04.13
[DATABASE] DDL, DML_테이블 형성 및 데이터CRUD  (0) 2022.04.12
[DATABASE] 테이블 용어, 데이터 타입  (0) 2022.04.12
    'Language/SQL' 카테고리의 다른 글
    • [DATABASE] 중복 값 제거 _ DISTINCT
    • [DATABASE] 함수
    • [DATABASE] 제약조건(Constraint)
    • [DATABASE] DDL, DML_테이블 형성 및 데이터CRUD
    simDev1234
    simDev1234
    TIL용 블로그. * 저작권 이슈가 있는 부분이 있다면 댓글 부탁드립니다.

    티스토리툴바