The Ultimate MySQL Bootcamp 8강을 공부하며 정리한 내용입니다.
필드에서 반복되는 동일한 데이터가 있다면 한번만 가져온다.
SELECT DISTINCT (필드명, ...) FROM 테이블명
SELECT author_lname FROM books; //동일한 작가이름이 반복해서 조회됨.
SELECT DISTINCT author_lname FROM books; //각 작가이름은 한번씩만 조회됨.
SELECT
DISTINCT (CONCAT(author_fname, ' ', author_lname))
AS fullname
FROM books;
//두개 이상의 필드명이 있는 경우, 필드명들의 조합이 distinct한 데이터를 조회함.
//위에서 CONCAT시킨 후 DISTINCT를 사용한 것과 동일하게 기능함.
SELECT
DISTINCT author_fname, author_lname
FROM books;
기본값은 ASC 오름차순이며, DESC 내림차순으로 문자열과 숫자를 정렬할 수 있다. 정렬기준이 2개인 경우, 첫번째로 작성한 기준으로 정렬한 후, 동일한 문자열이 있다면 두번째 기준으로 정렬된다.
SELECT 필드명 FROM 테이블명 ORDER BY ASC || DESC || 작성한 필드명 순서
SELECT title FROM books ORDER BY DESC; //title은 varchar
SELECT released_year FROM books ORDER BY released_year //released_year는 int
SELECT title, released_year, pages FROM books ORDER BY released_year;
SELECT title, released_year, pages FROM books ORDER BY 2; //released_year를 반복해서 적지않고, 셀렉트하는 필드명의 순서를 적어줄 수 있음.
SELECT author_fname, author_lname FROM books ORDER BY author_lname, author_fname; //author_lname으로 정렬한 후, 동일한 lname이 있다면 해당 데이터들은 fname으로 정렬한다.
... ORDER BY ... LIMIT 숫자, 숫자
조회하고 싶은 데이터 개수를 제한할 수 있으며, 주로 ORDER BY 등의 정렬과 함께 사용된다. 여기서 사용된 숫자는 데이터의 인덱스이며 하나만 사용할 경우, 숫자만큼의 데이터를 조회하고, 두개를 사용할 경우 첫번째 숫자 인덱스부터 두번째 숫자 인덱스까지의 데이터를 조회한다. LIMIT는 pagination을 구현할때 사용할 수 있다.
SELECT title FROM books ORDER BY DESC LIMIT 10;
SELECT title FROM books ORDER BY released_year DESC LIMIT 5; // 최근 출간된 책 5권의 제목 조회
SELECT title from books ORDER BY released_year DESC LIMIT 0,5; // 위의 쿼리문과 동일하게 기능
SELECT title from books ORDER BY released_year DESC LIMIT 10,2; //10번째 데이터부터 2개 (10번째, 11번째)
wildcard %를 사용해 특정 값과 유사한 모든 데이터를 조회할 수 있다.
underscore 를 사용해 특정 길이(숫자, 문자열)의 모든 데이터를 조회할 수 있다.
조회하려는 데이터에 '%' 또는 ''가 사용됐다면, escape character \%
또는 '%_%'를 사용해 기호가 포함된 데이터를 조회할 수 있다.
SELECT author_fname FROM books WHERE author_fname LIKE '%H%'; //작가의 성에 H가 포함된 모든 데이터 조회
SELECT title FROM books WHERE title LIKE 'A%'; //책 제목이 A로 시작하는 모든 데이터 조회
SELECT title FROM books WHERE title LIKE '%\%%'; //책 제목에 %가 들어간 모든 데이터 조회
SELECT title FROM books WHERE title LIKE '%\_%'; //책 제목에 _가 들어간 모든 데이터 조회
SELECT phone_number From phonebooks WHERE phone_number LIKE '(__)____-____'
SELECT title, stock_quantity FROM books WHERE stock_quantity LIKE '____';