데이터베이스

[mysql] 데이터 조회 (select문)

엉으니 2016. 2. 9. 03:17

-- 참고 : 생활코딩 mysql수업

          http://www.unclecho.com/bbs/board.php?bo_table=mysql&wr_id=7

간단간단

SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY

원하는 행을 필터링 : WHERE

그룹을 묶어서 조회 : GROUP BY

정렬 : ORDER BY

자세히

SELECT [DISTINCT] 필드명, 필드명 

FROM 테이블명, 테이블명 

WHERE 검색조건 AND/OR 검색조건 LIKE ''/ IN ('조건', '조건')

GROUP BY 필드명, 필드명

HAVING 검색조건  //GROUP BY로 집계한 결과를 사용하고 싶을때

ORDER BY 필드명 ASC/DESC, 필드명 ASC/DESC

LIMIT 시작행, 데이터 뽑을갯수

 

예제

1. 테이블 전체 출력

SELECT * FROM BOOKS

 

2. WHERE 조건검색

SELECT * FROM BOOKS WHERE ID=2 ;

SELECT * FROM BOOKS WHERE WRITER='고경희' AND PUBLISH='이지스퍼블리싱' ;

SELECT * FROM BOOKS WHERE WRITER='고경희' OR PUBLISH='이지스퍼블리싱' ;

 

3. WHERE 조건검색 LIKE/IN구문

SELECT * FROM BOOKS WHERE WRITER LIKE '남%' ;

SELECT * FROM BOOKS WHERE WRITER NOT LIKE '남__' ;

---------------------------------------------------------

SELECT * FROM BOOKS WHERE WRITER IN ('남궁성') ;

SELECT * FROM BOOKS WHERE WRITER IN ('남궁성', 'LIKES>1') ;

--IN은 %이나 _등의 정규식을 사용할 수 없음

 

4. GROUP BY 그룹으로 묶기

SELECT * FROM BOOKS GROUP BY WRITER;
SELECT WRITER FROM BOOKS GROUP BY WRITER;
SELECT WRITER, SUM(LIKES), AVG(LIKES) FROM BOOKS GROUP BY WRITER;
-- WRITER열을 그룹으로 묶고 각 WRITER별 LIKES의 합과 평균 계산
 
5. HAVING 그룹으로 묶은 결과로 검색
SELECT WRITER, SUM(LIKES) AS LIKESUM, AVG(LIKES) FROM BOOKS GROUP BY WRITER HAVING LIKESUM<10;
--그룹으로 묶은 결과를 쓰기 위해 WHERE로 조건 검색을 하면 에러가 난다.
  SQL문은 왼쪽으로 오른쪽으로 순차적으로 진행되는데, WHERE은 GROUP BY보다 앞에 있기 때문이다.
  이럴때 HAVING을 써서 GROUP BY의 결과를 조건검색할 때 사용 할 수 있다.
 

6. ORDER BY 지정된 열을 기준으로 데이터 정렬

SELECT * FROM BOOKS ORDER BY LIKES DESC;

SELECT * FROM BOOKS ORDER BY LIKES DESC, ITIME ASC;

--기본값은 ASC

 

7. LIMIT 뽑아져나오는 데이터 행의 갯수 지정

SELECT * FROM BOOKS LIMIT 2;

--데이터의 처음부터 2개의 데이터 가져옴

SELECT * FROM BOOKS LIMIT 3,2;

--데이터의3번부터 2개의 데이터 가져옴

--데이터의 맨 처음 인덱스는 0

 

---------------------------------------------------------

8. 기타

1) 결과 레코드의 중복 제거

SELECT DISTINCT WRITER FROM BOOKS;

--BOOKS테이블에 WRITER가 총 몇명있는지 알 수 있음

 

2) 문자열 처리

SELECT TITLE,'의 저자는', WRITER, '입니다.' FROM BOOKS;

SELECT TITLE,'의 저자는', WRITER, '입니다.' FROM BOOKS WHERE LIKES>10 ORDER BY TITLE DESC;

 

3) 검색결과에 대한 산술 계산

SELECT TITLE, LIKES+1 FROM BOOKS WHERE LIKES<10;

 

4) 그룹함수를 이용한 검색

SELECT COUNT(DISTINCT WRITER) FROM BOOKS;

--그룹함수를 이용해 데이터를 뽑을 수 있다.

COUNT(필드명) : 조건을 만족하는 레코드의 개수

SUM(필드명) : 해당 필드의 합

MIN(필드명) : 해당 필드의 최소값

MAX(필드명) : 해당 필드의 최대값

AVG(필드명) : 해당 필드의 평균값

 

5) BETWEEN 연산자

SELECT * FROM BOOKS WHERE LIKES BETWEEN 10 AND 20;

LIKES의 값이 10이상 20이하의 값을 보여줌

SELECT * FROM BOOKS WHERE LIKES>=10 AND LIKES <=20과 같음

 

6) IS NULL / IS NOT NULL

SELECT * FROM BOOKS WHERE TITLE IS NULL;

--BOOKS테이블에 TITLE의 값이 NULL인 데이터를 보여줌

반응형

'데이터베이스' 카테고리의 다른 글

[mysql] JOIN  (0) 2016.02.18
[mysql] index  (0) 2016.02.12
[mysql] 데이터 삽입, 수정, 삭제  (0) 2016.02.02
[mysql] 테이블 생성 및 삭제  (0) 2016.02.02
[mysql] 자료형  (0) 2016.01.31