SQL 개괄 정리

반응형

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; 더미테이블로 함수 테스트할 때 사용하세요.

  - 주석은 --