2014년 5월 13일 화요일

RDBMS SQL Select 문

Select 문

SQL 이 각 SQL Server Program 마다 다르나, 여기서는 표준 SQL 위주로 정리하도록 한다.

Select문은 SQL문의 가장 기본이 되는 구문입니다.
Select문은 순서에 유의해서 작성해야 한다.
Select 컬럼리스트 from 테이블명 까지는 필수적으로 작성해야 한다.

Select 구문 구조

 SELECT [ALL | DISTINCT] 컬럼명 [,컬럼명...]
 FROM 테이블명 [,테이블명...]
 [WHERE 조건식]
 [GROUP BY 컬럼명 [HAVING 조건식]]
 [ORDER BY 컬럼명]
 GROUP BY 컬럼명[,컬럼명...]
 ORDER BY 컬럼명[,컬럼명...]

Example

SELECT 컬럼, 컬럼...
FROM 테이블명
WHERE 조건
GROUP BY 구문
UNION/UNION ALL/INTERSECT/MINUS 구문
ORDER BY 구문


기본 구문 

* 성능 테이블의 모든 레코드를 조회하시오

  SELECT *
  FROM PERF

  or 테이블에 있는 모든 컬럼명을 나열해도 가져올 수 있다.


WHERE 구문

* 성능 테이블에서 성능 인덱스가 10인 성능을 조회하시오

  Select *
  FROM PERF
  WHERE perfIndex=10;

* 성능 값이 100 이상 되는 성능을 조회하시오

  Select *
  FROM PERF
  WHERE VALUE > 100;

* 성능들 중 온도로 시작하는 성능을 조회하시오

  Select *
  From PERF
  Where perfName like '온도%';

* 성능 이름에 설정이 포함된 이름을 모두 조회하시오

   Select *
   From PERF
   Where perfName like '%설정%';

GROUP BY 구문

* 장비별 평균값을 구하는 쿼리

SELECT AVG(VALUE)
FROM PERF
GROUP BY serverIndex;

* 장비별 성능수를 구하는 쿼리

 SELECT COUNT(*)
FROM PERF
GROUP BY serverIndex;

* 장비별로 성능값이 200 이상인 것만 평균을 구하라

 Select AVG(VALUE)
FROM PERF
WHERE VALUE > 200
GROUP BY serverindex;

Group by 구문을 사용하면서 이 결과에 조건을 줄 때 WHERE 조건문을 사용할 수 없다
따라서 위 쿼리는 에러가 발생한다.

GROUP BY 구문을 사용하면서 조건을 주기 위해서는 대신 HAVING 구문을 사용한다.
HAVING 구문 에서는 그룹화의 기준이 되는 컬럼과 그룹함수만이 사용할 수 있다는 점을 주의해야 한다. 위의 쿼리문에서는 그룹화의 기준이 되는 컬럼이 serverIndex 이므로 serverIndex 는 HAVING 구문에 쓸 수 있다.

고친 구문

SELECT AVG(VALUE)
FROM PERF
GROUP BY serverIndex
HAVING AVG(VALUE) > 200;

ORDER BY 구문

Select 문장을 사용하여 레코드를 검색할 때 임의의 컬럼을 기준으로 정렬을 해야
할 필요가 발생한다. 이런 경우 사용하는 구문이 ORDER BY다

ASC : 오름차순의 의미(생략가능)
DESC : 내림차순을 의미

성능 인덱스가 높은 순으로 조회하시오

Select *
from PERF
ORDER BY perfIndex DESC;

서브쿼리

서브 쿼리는 SELECT 문안에서 ()로 둘러싸인 Select 문을 말하며 쿼리문의 결과를 메인 쿼리로 전달하기 위해 사용된다.

================================================================================

추가 내용

2.칼럼 이름에 별칭 지정하기
   칼럼 이름으로 의미를 알기 힘들 경우에는 칼럼 이름에 별칭(ALIAS)을 부여할 수 있다.

   SELECT DEPTNO AS DEPARTMENTNO, DNAME AS DEPARTMENTNAME
   FROM DEPT;
   ----------------------------------------------------------------------
   칼럼 이름 대신 별칭을 출력하려면 칼럼을 기술한 바로 뒤에 AS라는 키워드를 쓴후 
   별칭을
   기술한다.

   SELECT DEPTNO "DEPARTMENT NO", DNAME "DEPARTMENT NAME"
   FROM DEPT;
   ------------------------------------------------------------------
   위처럼 별칭은 키워드 AS를 생략하고 기술할 수도 있다.
   별칭에 공백이나 특수문자를 표현하고 싶거나 대 소문자를 구별하고싶으면 " " 를 사용한다.
   별칭으로 한글 사용도 가능하다.

4.WHERE 조건과 비교 연산자

   SELECT절에 칼럼 이름을 나열하여 원하는 칼럼만 출력하였으나, WHERE절을 추가
   하면 원하는 행을 추출할수 있다.

   SELECT EMPNO, ENAME, SAL
   FROM EMP
   WHERE SAL>=3000;
   -----------------------------
   급여를 3000이상 받는 사원에 대해서만 출력하라는 조건을 제시했다.
   WHERE절로 조건을 제시하게 되면 조건에 맞는 로우만 찾게 된다.

   4.1.비교연산자
        [= 같다] [> 보다크다] [< 보다작다] [>= 보다 크거나 같다]
          [<= 보다 작거나 같다] [<>,!=,^= 같지않다]

참고http://blog.naver.com/PostView.nhnblogId=naru2121&logNo=50108458013&categoryNo=15&viewDate=&currentPage=1&listtype=0









댓글 없음:

댓글 쓰기