본문 바로가기
Back-End/DataBase [ MySQL]

[MySql] 선택사항 정교화하기 _DISTINCT, ORDER BY, LIMIT, LIKE

by 개도필 2022. 6. 25.

선택사항 정교화하기

  • Select 사용시에 조금 더 정교하게 선택사항들을 지정한다.
  • 우리가 작업하고 있는 books데이터에 조금 더 데이터 추가하기
  • 코드
INSERT INTO books
    (title, author_fname, author_lname, released_year, stock_quantity, pages)
    VALUES ('10% Happier', 'Dan', 'Harris', 2014, 29, 256), 
           ('fake_book', 'Freida', 'Harris', 2001, 287, 428),
           ('Lincoln In The Bardo', 'George', 'Saunders', 2017, 1000, 367);

 

중복값 제거 : DISTINCT

  • 중복값을 제거해서 보여준다.
  • 코드
    • 중복제거된 성만 보여준다.
SELECT DISTINCT author_lname FROM books;

 

  • 중복 제거된 전체이름은 ????
    • 우리의 상황에서는 성과 이름이 따로따로인데 , 중복이 제거된 전체이름은 ?
    • 성 + 이름이 중복제거된게 결과값이다.
SELECT DISTINCT CONCAT(author_fname, author_lname) from books; 

 

  • 두번째 방법, DISTINCT 를 , 를 이용하여 중복제거
    • 성, 이름 따로따로 테이블에 나타남
SELECT DISTINCT author_fname, author_lname FROM books;

 

 

데이터 정렬하기 : ORDER BY

  • 결과값들을 sorting하기
  • 기본적으로 오름차순이다.
  • 예시코드
    • title을 author_fname을 기준으로 정렬
SELECT title From books ORDER BY author_fname;

 

내림차순으로 바꾸기 : DESC

SELECT title From books ORDER BY author_fname DESC; 

 

같은 열을 기준으로 정렬을 하려고 할 때 더 간결하게 코드 쓰는 방법

SELECT author_lname, title
FROM books ORDER BY 2;

 

두개의 다른 열로 정렬 하기

  • 별로 안쓰긴한다.
  • 첫번째 인수를 기준으로 정렬하고, 같은 우선순위가 있을 때 두번째 인수를 기준으로 정렬한다.
SELECT author_fname, author_lname FROM books 
ORDER BY author_lname, author_fname;

 

몇개 값을 조회? : Limit

  • 테이블에서 몇개의 결과값을 조회할지 특정할 수 있는 연산자
  • 세개만 보여준다.
SELECT title FROM books LIMIT 3; 
  • 활용
SELECT title, released_year FROM books ORDER BY released_year DESC LIMIT 5;

 

시작지점과, 마지막지점을 고를 수 있다.

→ 두개의 인자가 필요 (start , end)

  • 처음 시작지점은 0 (문자열다룰때와 차이가 있음)
  • 첫번째 행부터 다섯번째 행까지 보여주는 코드
SELECT title, released_year FROM books 
ORDER BY released_year DESC LIMIT 0,3;

 

n번부터 결과값 끝까지 모든 행을 조회

  • end index를 가장 큰 숫 자로 ~
  • 5행부터 끝까지 조회하는 코드
SELECT title FROM books LIMIT 5, 123219476457;

 

더 나은 검색 : LIKE

  • 기본적으로 데이터 검색을 더 잘 할 수 있게 해준다.
  • 예시
    • 저자 이름이 David or Dav,,, Dave?
    • 모든 해리포터 책을 검색하고 싶을때
  • 코드
    • author_fname에 da가 들어간 행들을 찾아준다.
SELECT title, author_fname FROM books WHERE author_fname LIKE '%da%'

 

%의 위치와 유무에 따라 결과값이 다르다

  • % : 모든 str을 의미
SELECT title, author_fname FROM books WHERE author_fname LIKE 'da%'

 

언더바를 활용한 LIKE

  • %와 다르게 _(언더바)는 char 한개를 의미한다.
  • 예시
    • 언더스코어 두개 : 두글자
    • 두자리수의 재고 품목들이 나온다.
SELECT title ,stock_quantity FROM books WHERE stock_quantity LIKE '__';

 

 

퍼센트가 있거나, 언더바가 있는 책을 찾아야 할 경우는 ?

  • \를 사용 (이스케이프 문자)
    • 역슬래시 (엔터위에 있는거)
    • 역슬래시 뒤에 언더바나 퍼센트를 쓴다.
  • 코드
SELECT title FROM books WHERE title LIKE '%\\%%'

댓글