SQL 안쓴지 너무 오래되어서,,, 리마인드 차원에서 개괄적으로 작성함. 조인까지 다루면 너무 많을 것 같아서 완전 기초만 작성. (조인, 집합연산자, 서브쿼리, 그룹함수 등 다음 포스팅으로 패스)
- 기본구조
1. SELECT 열이름
2. FROM 테이블
3. WHERE 검색조건
4. GROUP BY 그룹핑할 열
5. HAVING 그룹 조건
6. ORDER BY 정렬할 열
1. select 절
- AS를 이용하여 출력되는 칼럼의 이름을 바꿀 수 있음. EX) select name AS "이름" ~~
- || 표시를 이용하여 and 조건 부여할 수 있다. EX) select last_name||job_id ~~
- distinct 옵션을 부여해서 중복 제거 가능. EX) select distinct name ~~
2. from 절
- 앨리어스 : 테이블 이름이 반복되는 것이 싫으니 임시 변수화해서 칼럼에 접근하는 것
- EX) select A.이름, A.부서 from 한국제일킹갓제너럴회사 A;
3. where 절
- 와일드카드 % : 0개 이상의 어떤 문자. EX) %A% 데이터에 A가 들어가기만 하면 무조건 출력됨.
- 와일드카드 _(언더바) : 1개의 단일문자. EX) A__ A로 시작하는 총 3글자 데이터 출력
- IS NULL : NULL 인 값들만 조회
- AND / OR / NOT / LIKE 논리연산, between(>= and <= 기능 수행) / in(리스트)
- ROWNUM : SQL 예약어. 테스트 출력 시 사용. 참고로 mysql 에서는 LIMIT 옵션과 동일. EX) where rownum <=10 -- 10개까지만 출력
- 다만 다른 조건과 엮어서 사용하고 싶다면 이너쿼리를 사용 후 따로 rownum 활용해줘야 한다. 그렇지 않으면 엮고 싶었던 조건이 적용안된 상태로 rownum 적용됨. EX) select * from (select 부서, 이름 from 회사 where 사원번호 like '2015*') where rownum=10; - 사원번호가 2015~~인 애들을 10개만 추출
4. group by 절
- 그룹함수(avg, count, max, min, sum 등) 을 사용
- EX. select 부서, count(사원번호) from 회사 group by 부서; -- 부서별 인원수 추출
5. having 절
- 그룹핑에 조건 부여
- EX. select 부서, 직급, sum(나이) from 회사 group by 부서, 직급 having sum(나이) < 150; -- 부서, 직급별로 회사원들을 그룹핑 후 그들의 나이를 더한 값을 출력. 이 때 나이의 총합이 150을 초과하는 그룹은 출력에서 제외
6. order by 절
- 어떤 칼럼을 기준으로 할 지 지정해주면 됨. 오름차순이 디폴트. 내림차순이면 뒤에 DESC 붙여주면 됨. EX) order by 급여 DESC
- select 절에 없는 칼럼을 기준으로도 정렬할 수 있음.
- NULL값은 가장 큰 값으로 인식되어 DESC 옵션 부여 시 맨 위에 출력됨.
7. 기타
- select * from tab; 해당 계정의 모든 테이블을 출력해준다.
- select * from dual; 더미테이블로 함수 테스트할 때 사용하세요.
- 주석은 --
'데이터 공부' 카테고리의 다른 글
SQL 조인 총 정리 (0) | 2022.08.27 |
---|---|
[R] 초보자도 할 수 있는 지도 색칠 시각화 (시, 도 색칠) (6) | 2018.03.07 |
[통계] 통계학에서 나오는 확률개념들 (0) | 2018.01.14 |
[데이터베이스] 숫자함수, 날짜함수_1 (0) | 2018.01.09 |
[데이터베이스] 기초 SQL과 문자함수 (0) | 2018.01.03 |