SELECT 구문 형식
select select_list(컬럼, cnt, avg 등등) [ into new_table ]
[ from table_source ] [ where search_condition ]
[ group by group_by_expression ]
[ having search_condition ]
[ order by order_expression [ asc | desc ] ]
GROUP BY : 특정 열이나 특정 열을 연산할 결과를 집계 키로 정의하여 그 집계 키의 Unique 값에 따라 그룹을 짓는 연산자.
DISTINCT : 단순히 unique값만을 추출하기 위해 사용.
위 둘의 차이 : group by는 집계 키(count(*), sum(), max(), min(), avg() 등) 기준으로 집합 연산, distinct는 unique만 뽑아냄.
ex)
1. select distinct player_id, team_id from player
2. select distinct player_id, team_id, count(*) from player
3. select team_id, count(*) from player group by team_id
1번 예시는 player_id, team_id 컬럼에서 중복제거가 되어 출력됨.
2번 예시는 오류가 난다. 이유는 distinct에 집계 함수를 썼기 때문이다.(count)
3번 예시는 team_id로 그룹화 되어 각 team_id당 몇개의 데이터가 있는지 출력된다.
select문을 계속 연습해보겠다.
이러한 데이터들이 있다.
위의 3번처럼 completed에 대해서 그룹화하고 count를 출력해보겠다.
INTO : INTO는 조건에 맞는 기존 테이블의 열 내용을 새 테이블을 만들어 가져온다.
(테스트해보니 지원안하는 DB도 있는 것 같군요.. H2로 하고 있는데 안되네용..또르르)
ex) select * into [새로운 테이블 명] from [데이터를 가져올 테이블] where 조건
having절 : where과 비슷한데 group에 대해서 적용되는 조건이라고 생각하면 된다.
WHERE절 조건
등호 |
설명 |
= |
같다 |
<> |
같지 않다 |
< |
작다 |
> |
크다 |
<= |
작거나 같다 |
=> |
크거나 같다 |
(실험 결과 not의 위치는 컬럼명 앞이나 뒤 아무데나 상관없는듯)
컬럼명 between a and b : a와 b사이의 값을 가진 결과를 보여줌(a, b 포함)
not 컬럼명 between a and b : a와 b사이의 값을 제외하고 보여줌
컬럼명 is null : 컬럼의 value가null인 데이터를 찾음
컬럼명 is not null : 컬럼의 value가 null이 아닌 데이터를 찾음
컬럼명 like ''
--------------
%가나다 : 멍충이가나다, 바보가나다, 하가나다 등 뒤에 가나다가 붙는 데이터를 찾음
가나다% : 가나다멍충이, 가나다바보, 가나다라마바사아자차카타하 등 앞에 가나다가 붙는 데이터를 찾음
%가나다% : 가운데 가나다가 들어가는 데이터를 찾음.
_가나다 : 킼가나다, ㅎ가나다 등 앞에 한글자 불특정문자가 오는 가나다를 찾음.
컬럼명 in('', '') : in안의 데이터들이 포함되어있는 데이터를 보여줌.(or과 같음)
'CS기본지식 > 데이터베이스' 카테고리의 다른 글
트랜잭션 (0) | 2017.11.19 |
---|---|
조인 (0) | 2017.06.10 |
테이블 수정 및 삭제 (0) | 2017.06.08 |
varchar와 char의 차이 (0) | 2017.06.07 |
테이블 생성문 (0) | 2017.06.07 |