본문 바로가기
MySQL

MySQL(연산자, 정렬)

by 글로리. 2020. 6. 17.

연산자

WHERE 절에서 사용됨.

BETWEEN 연산자

1) 조회 조건값의 범위를 설정하는 BETWEEN 연산자

BETWEEN 연산자는 특정 칼럼의 데이터 값이 하한값 'A'와 상한값 'B' 사이에 포함되는 행을 검색하기 위함.

select 컬럼이름 from 테이블이름 where 컬럼이름 between A and B;


BETWEEN 연산자는 두개의 비교식을 AND 연산자로 묶은것과 동일한 결과를 얻을 수 있다.

select 컬럼이름 from 테이블이름 where 컬럼이름 >= A and 컬럼이름 <= B;


- 예) 쇼핑몰에서 x원 ~ y원 사이 금액의 상품을 검색할 때

예제 1)

BETWEEN 연산자를 사용하여 몸무게가 50kg에서 70kg사이인 학생의 학번, 이름, 몸무게를 출력.

예제 2)

비교 연산자와 AND 연산자를 사용하여 몸무가게 50kg에서 70kg사이인 학생의 학번, 이름, 몸무게를 출력

IN 연산자

1) 여러개의 값 중에서 하나라도 일치하면 참이 되는 연산자

IN연산자는 특정 칼럼의 데이터값이 A,B,~~,Z 값 중 하나라도 일치하면 '참'이 되는 연산자

select 컬럼이름 from 테이블이름 where 컬럼이름 in (A,B,C,~~~Z);


IN연산자는 여러개의 비교식을 OR 연산자로 묶은것과 동일한 결과를 얻을 수 있다.

select 컬럼이름 from 테이블이름 where 컬럼이름=A or 컬럼이름=B or ~~~~~ or 컬럼이름=Z;


- 예) 쇼핑몰에서 여러 카테고리의 상품을 한번에 볼 때

2) 예제 1

IN 연산자를 사용하여 102번 학과와 201번 학과 학생의 이름, 학년, 학과번호 출력

3) 예제 2

비교연산자와 OR 연산자를 사용하여 102학번과 201번 학과 학생의 이름, 학년, 학과번호 출력

LIKE 연산자

1) 특정 키워드가 포함된 데이터를 검색하기

LIKE 연산자는 컬럼에 저장된 문자열이 LIKE 연산자에서 지정한 문자패턴과 부분적으로 일치하면 참이 되는 연산자.

select 컬럼이름 from 테이블이름 where 컬럼이름 like '%검색어%';


아래와 같은 특수문자를 이용

  • % : 임의의 길이인 문자열(길이가 0인경우에도 포함)에 대한 특수문자로 윈도우에서 '*' 동일한 의미
   
%김 '김' 으로 끝나는 모든내용.
김% '김' 으로 시작하는 모든내용.
%김% 앞 뒤 구분없이 '김'을 포함하는 모든내용.

2) 예제 1

학생 테이블에서 성이 '김'씨인 학생의 이름, 학년, 학과번호를 출력

IS NULL, IS NOT NULL 연산자

1) Null 값의 의미

  • NULL 은 미확인 값 혹은 아직 결정되지 않은 값을 의미.
  • NULL 은 숫자 0이나 공백과는 다른 값이다.
    • 예) 학생 몸무게가 NULL 인 경우는 학생 몸무게가 0이 아니라 현재 그 학생의 몸무게를 모른다는 의미
  • 대부분의 프로그래밍 구현에서 미필수 항목에 대하여 사용자가 입력하지 않은 경우를 NULL 로 처리함.

2) 예제 1

교수테이블에서 이름(name), 직급(position), 보직수당(comm) 을 출력 -> NULL 데이터 확인.

3) 특정 컬럼에 저장된 데이터에 대한 Null 여부 검사

select 컬럼이름 from 테이블이름 where 컬럼이름 is [not] null;

 

IS NULL 컬럼 값 중에서 NULL을 포함하는 행을 검색
IS NOT NULL NULL을 포함하지 않는 행을 검색

4) 예제 2

교수테이블에서 보직수당이 없는 교수의 이름, 직급, 보직수당을 출력

5) 예제 3

교수테이블에서 보직수당을 받고 있는 교수의 이름, 급여, 보직수당을 출력

연산자 우선순위

순위 연산자
1 괄호로 묶인 부분
2 비교연산자 ( =, !=, <, >, <=, >= )
SQL연산자 (BETWEEN, IN, LIKE, IS NULL)
3 NOT
4 AND
5 OR

1) 예제

102번 학과의 학생중에서 1학년 또는 4학년 학생의 이름, 학년, 학과번호를 출력

정렬

파이썬에서 sort.value() 와 같음.

데이터 정렬하기

1) ORDER BY절

칼럼이나 표현식을 기준으로 출력 결과를 정렬

select [distinct] 컬럼이름 [ as 별칭] ~~~~ from 테이블이름 [where 검색조건] [order by 컬럼이름[정렬옵션]]

 

정렬옵션

  • ASC : 오름차순으로 정렬하며 기본값 -> 순차정렬, 예) 1 ~ 10
  • DESC : 내림차순으로 정렬하며 생략 불가 -> 역순정렬, 예) 10 ~ 1

기본적인 정렬방법 (ASC 기준)

  • 문자값 : 영어는 알파벳순, 한글은 가나다순
  • 숫자값 : 가장 작은 값부터 출력
  • 날짜값 : 과거의 날짜부터 출력

2) 예제

학생 테이블에서 이름을 가나다순으로 정렬하여 이름, 학년, 전화번호를 출력하시오.

다중컬럼 정렬

1) 2차, 3차 정렬조건 부여

ORDER BY 절에서 지정한 첫 번째 컬럼을 기준으로 1차 정렬, 동일한 값이 있는경우 두번째 컬럼을 2차,

~

n번째 컬럼을 n차로 기준
이 때 각 컬럼별로 정렬옵션이 따로 설정된다 ( ASC or DESC)

select [distinct] 컬럼이름[ as 별칭] from 테이블이름 where 검색조건 order by 컬럼1이름 [정렬옵션],
컬럼2이름 [정렬옵션],~~~~~, 컬럼n이름 [정렬옵션] ]

 

2) 예제 1

모든 학생에 대해 학과번호를 오름차순으로 1차 정렬, 같은 학과 학생들은 학년이 높은순으로 2차정렬후
학번, 이름, 학년, 전화번호, 사용자 아이디를 출력

데이터 부분 조회

데이터베이스 마다 다름.

1) Limit 절

전체 조회 결과의 n번째 부터 m개를 조회, 여기서 n은 인덱스번호 처럼 0부터 시작.

select [distinct] 컬럼이름 [ as 별칭 ] from 테이블이름 [where 검색조건]
[order by 컬럼1이름 [정렬옵션], 컬럼2이름 [정렬옵션], 컬럼n이름 [정렬옵션] ] [ limit n, m ]

 

참고

  • 부분 조회 기능은 프로그램에서 페이지 번호 구현과 관련 있음.
  • Limit절은 MySQL에서만 지원되고, MSSQL에서는 TOP절, Oracle에서는 Rawnum이라는 기능으로 구현됨.

2) 예제

교수 테이블에서 급여가 높은 상위 3명의 이름, 직급, 급여를 조회

'MySQL' 카테고리의 다른 글

MySQL(데이터베이스 생성 및 관리)  (0) 2020.06.19
MySQL(서브쿼리, 데이터 입력·수정·삭제, 함수)  (0) 2020.06.18
MySQL(그룹조회, 조인)  (0) 2020.06.18
MySQL(함수)  (0) 2020.06.18
MySQL(데이터베이스)  (1) 2020.06.17

댓글