MySQL - 중복 제거, 정렬, 특정 갯수 출력, 문자열 찾기, 자리수에 맞는 데이터 출력

반응형

  • 예시에 사용 될 'books' 테이블
  • select * from books;


데이터의 중복을 제거하여 출력하기 (distinct)

  • distinct : 중복 제거
    • 작가 이름(author_lname)을 중복 없이 출력해보기
      • select distinct author_lname from books;


데이터 정렬하기 (order by)

  • order by : 데이터 정렬, 기본값 오름차순(asc), 내림차순은 desc
    • 책 이름을 오름차순, 내림차순으로 정렬하기
      • select title from books order by title asc;
        • 여러 컬럼 정렬시 컬럼 뒤에 오름차순 내림차순 기입
        • 예) 작가 성과 이름으로 정렬, 성이 같으면 이름으로 정렬
          select author_lname, author_fname from books order by author_lname asc, author_fname asc;


데이터 원하는 갯수로 출력하기 (limit / offset)

확인사항

  • 사용하는 DBMS에 따라서 명령어가 다를 수 있습니다.
  • 해당 포스팅은 MySQL을 기준으로 작성되었습니다.
    • MySQL : limit, offset
    • MS-SQL : top, offset fetch
 

MSSQL - TOP(출력 행 제한), OFFSET FETCH(페이징 처리)

(출력 갯수, 결과 값 설정, 제한하기) 쿼리 페이징 솔루션 TOP TOP이란? 전체 중 일부분의 행만 가져올 때 사용 top 키워드를 사용하여 결과값 출력을 제한 할 수 있음 MySQL의 limit와 동일한 기능 수행

luvris2.tistory.com


  • limit : 맨 위에서부터 n개 까지의 데이터 출력
  • offset : limit에서 사용되는 index, 몇번째부터 출력할지 지정 가능, 0부터 넘버링
    • 가장 최근에 나온 책(released_year)을 기준으로 데이터 3개 불러오기
      • select * from books  order by released_year desc limit 3;

 

  • offset을 사용하여 가장 최근에 나온 책(released_year)을 기준으로 두번째부터 데이터 3개 불러오기
  • limit 출력 할 데이터 갯수 offset 인덱스 번호
    • select * from books  order by released_year desc limit 3 offset 1;

 

  • offset을 사용하지 않고 가장 최근에 나온 책(released_year)을 기준으로 두번째부터 데이터 3개 불러오기
  • limit 인덱스번호, 출력 할 데이터 갯수
    • select * from books  order by released_year desc limit 1, 3;

 


찾고자하는 문자열이 포함되는 데이터 찾기 (like)

  • like : 찾는 문자열이 포함된 데이터 찾기
    • 대소문자 구분 없음
    • 퍼센트(%)를 기입하지 않으면 해당 문자열로만 된 데이터를 검색
      • 찾는문자열% : 찾는 문자열로 시작하는 데이터 검색
      • %찾는문자열% : 위치에 상관 없이 찾는 문자열이 포함된 데이터 검색
      • %찾는문자열 : 찾는 문자열로 끝나는 데이터 검색
  • the가 들어가는 책 제목(title) 찾기
    • select * from books where title like '%the%';

 

  • the로 시작하는 책 제목(title) 찾기
    • select * from books where title like 'the%';

 

  • 자리수 지정하여 해당 자리수에 맞는 데이터만 출력하기 (_)
    • 언더스코어(_) : 갯수만큼 자리수에 맞는 데이터를 검색
    • 재고(stock_quantity)가 2자리인 데이터 찾기
      • select * from books where stock_quantity like '__';

 

 

반응형