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

+ Recent posts