DQL(Data Query Language)

데이터를 조회할 때 사용하는 문법

select

  • 테이블의 데이터를 조회할 때 사용하는 명령이다.
-- 모든 컬럼 값 조회하기. 컬럼 순서는 테이블을 생성할 때 선언한 순서이다
select * from 테이블;

-- 특정 컬럼의 값만 조회할 때 => "프로젝션(projection)"이라 부른다
select 컬럼명,컬럼명 from 테이블;

-- 가상의 컬럼 값을 조회하기
select 컬럼명, concat(컬럼명,'(',컬럼명,')') from 테이블명;

조회하는 컬럼에 별명 붙이기

  • 별명을 붙이지 않으면 원래의 컬럼명이 조회 결과의 컬럼이름으로 사용된다.
  • 위의 예제처럼 복잡한 식으로 표현한 컬럼인 경우 컬럼명도 그 식이 된다.
  • 이런 경우 별명을 붙이면 조회 결과를 보기 쉽다.
select 컬럼명 [as] 별명 ...

-- as를 생략해도 된다
select 컬럼명 별명...

조회할 때 조건 지정하기

  • where 절과 연산자를 이용하여 조회 조건을 지정할 수 있다.
  • 이렇게 조건을 지정하여 결과를 선택하는 것을 "셀렉션(selection)" 이라 한다.
select ... from ... where 조건...

연산자

OR, AND, NOT

  • OR : 두 조건 중에 참인 것이 있으면 조회 결과에 포함시킨다.
  • AND : 두 조건 모두 참일 때만 조회 결과에 포함시킨다.
  • NOT : 조건에 일치하지 않을 때만 결과에 포함시킨다.
select 컬럼명
from 테이블명
where 컬럼명='값' and/or/not 컬럼명='값';

주의!

  • where 절을 통해 결과 데이터를 먼저 선택(selection)한 다음
  • 결과 데이터에서 가져올 컬럼을 선택(projection)한다.
  • 따라서 실행 순서는:
  • from ==> where ==> select

사칙연산

  • +, -, *, /, % 연산자를 사용할 수 있다.
select (4 + 5), (4 - 5), (4 * 5), (4 / 5), (4 % 5);

비교연산

  • =, !=, >, >=, <, <=, <>
select (4=5), (4!=5), (4>5), (4>=5), (4<5), (4<=5), (4<>5);

between 값1 and 값2

  • 두 값 사이(두 값도 포함)에 있는지 검사한다.
select 5 between 3 and 5;

like

  • 문자열을 비교할 때 사용한다.
-- class 이름이 java로 시작하는 모든 학생 조회하기 
-- '%' = 0개 이상의 문자
select *
from test1
where class like 'java%';

날짜 다루기

  • 날짜 함수와 문자열 함수를 사용하여 날짜 값을 다루는 방법.

특정 날짜의 데이터 찾기

select * from 테이블명 where 컬럼명 = '2023-6-17';
/* 날짜 값을 저장할 때 기본 형식은 yyyy-MM-dd이다. */

특정 기간의 데이터 조회

select * 
from 테이블명 
where 컬럼명 >= '2023-6-17' and 컬럼명 <= '2023-7-10;
  • 날짜를 다루는 연산자와 함수
/* 현재 날짜 및 시간 알아내기 */
select now();

/* 현재 날짜 알아내기 */
select curdate();

/* 현재 시간 알아내기 */
select curtime();

/* 주어진 날짜, 시간에서 날짜만 뽑거나 시간만 뽑기 */
select 컬럼명, date(컬럼명), time(컬럼명) from 테이블명;

/* 특정 날짜에 시,분,초,일,월,년을 추가하거나 빼기*/
date_add(날짜데이터, interval 값 단위);
date_sub(날짜데이터, interval 값 단위);

/* 두 날짜 사이의 간격을 알아내기 */
datediff(날짜1, 날짜2);
select datediff(curdate(), '2023-2-10');

/* 날짜에서 특정 형식으로 값을 추출하기 */
date_format(날짜, 형식)

/* 문자열을 날짜 값으로 바꾸기 */
select str_to_date('11/22/2022', '%m/%d/%Y');
select str_to_date('2022.2.12', '%Y.%m.%d');
profile
Backend

1개의 댓글

comment-user-thumbnail
2023년 7월 20일

항상 좋은 글 감사합니다.

답글 달기
Powered by GraphCDN, the GraphQL CDN